1 /* 2 * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.xml.bind.annotation; 27 28 import java.lang.annotation.Target; 29 import java.lang.annotation.Retention; 30 import static java.lang.annotation.ElementType.*; 31 import static java.lang.annotation.RetentionPolicy.*; 32 33 /** 34 * <p> 35 * Prevents the mapping of a JavaBean property/type to XML representation. 36 * <p> 37 * The <tt>@XmlTransient</tt> annotation is useful for resolving name 38 * collisions between a JavaBean property name and a field name or 39 * preventing the mapping of a field/property. A name collision can 40 * occur when the decapitalized JavaBean property name and a field 41 * name are the same. If the JavaBean property refers to the field, 42 * then the name collision can be resolved by preventing the 43 * mapping of either the field or the JavaBean property using the 44 * <tt>@XmlTransient</tt> annotation. 45 * 46 * <p> 47 * When placed on a class, it indicates that the class shouldn't be mapped 48 * to XML by itself. Properties on such class will be mapped to XML along 49 * with its derived classes, as if the class is inlined. 50 * 51 * <p><b>Usage</b></p> 52 * <p> The <tt>@XmlTransient</tt> annotation can be used with the following 53 * program elements: 54 * <ul> 55 * <li> a JavaBean property </li> 56 * <li> field </li> 57 * <li> class </li> 58 * </ul> 59 * 60 * <p><tt>@XmlTransient</tt>is mutually exclusive with all other 61 * JAXB defined annotations. </p> 62 * 63 * <p>See "Package Specification" in javax.xml.bind.package javadoc for 64 * additional common information.</p> 65 * 66 * <p><b>Example:</b> Resolve name collision between JavaBean property and 67 * field name </p> 68 * 69 * <pre> 70 * // Example: Code fragment 71 * public class USAddress { 72 * 73 * // The field name "name" collides with the property name 74 * // obtained by bean decapitalization of getName() below 75 * @XmlTransient public String name; 76 * 77 * String getName() {..}; 78 * String setName() {..}; 79 * } 80 * 81 * 82 * <!-- Example: XML Schema fragment --> 83 * <xs:complexType name="USAddress"> 84 * <xs:sequence> 85 * <xs:element name="name" type="xs:string"/> 86 * </xs:sequence> 87 * </xs:complexType> 88 * </pre> 89 * 90 * @author Sekhar Vajjhala, Sun Microsystems, Inc. 91 * @since JAXB2.0 92 */ 93 94 @Retention(RUNTIME) @Target({FIELD, METHOD, TYPE}) 95 public @interface XmlTransient {}