1 /* 2 * Copyright (c) 2004, 2015, 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 * Enables mapping a class to a XML Schema complex type with a 36 * simpleContent or a XML Schema simple type. 37 * </p> 38 * 39 * <p> 40 * <b> Usage: </b> 41 * <p> 42 * The <tt>@XmlValue</tt> annotation can be used with the following program 43 * elements: 44 * <ul> 45 * <li> a JavaBean property.</li> 46 * <li> non static, non transient field.</li> 47 * </ul> 48 * 49 * <p>See "Package Specification" in javax.xml.bind.package javadoc for 50 * additional common information.</p> 51 * 52 * The usage is subject to the following usage constraints: 53 * <ul> 54 * <li>At most one field or property can be annotated with the 55 * <tt>@XmlValue</tt> annotation. </li> 56 * 57 * <li><tt>@XmlValue</tt> can be used with the following 58 * annotations: {@link XmlList}. However this is redundant since 59 * {@link XmlList} maps a type to a simple schema type that derives by 60 * list just as {@link XmlValue} would. </li> 61 * 62 * <li>If the type of the field or property is a collection type, 63 * then the collection item type must map to a simple schema 64 * type. </li> 65 * 66 * <li>If the type of the field or property is not a collection 67 * type, then the type must map to a XML Schema simple type. </li> 68 * 69 * </ul> 70 * <p> 71 * If the annotated JavaBean property is the sole class member being 72 * mapped to XML Schema construct, then the class is mapped to a 73 * simple type. 74 * 75 * If there are additional JavaBean properties (other than the 76 * JavaBean property annotated with <tt>@XmlValue</tt> annotation) 77 * that are mapped to XML attributes, then the class is mapped to a 78 * complex type with simpleContent. 79 * </p> 80 * 81 * <p> <b> Example 1: </b> Map a class to XML Schema simpleType</p> 82 * 83 * <pre> 84 * 85 * // Example 1: Code fragment 86 * public class USPrice { 87 * @XmlValue 88 * public java.math.BigDecimal price; 89 * } 90 * 91 * <!-- Example 1: XML Schema fragment --> 92 * <xs:simpleType name="USPrice"> 93 * <xs:restriction base="xs:decimal"/> 94 * </xs:simpleType> 95 * 96 * </pre> 97 * 98 * <p><b> Example 2: </b> Map a class to XML Schema complexType with 99 * with simpleContent.</p> 100 * 101 * <pre> 102 * 103 * // Example 2: Code fragment 104 * public class InternationalPrice { 105 * @XmlValue 106 * public java.math.BigDecimal price; 107 * 108 * @XmlAttribute 109 * public String currency; 110 * } 111 * 112 * <!-- Example 2: XML Schema fragment --> 113 * <xs:complexType name="InternationalPrice"> 114 * <xs:simpleContent> 115 * <xs:extension base="xs:decimal"> 116 * <xs:attribute name="currency" type="xs:string"/> 117 * </xs:extension> 118 * </xs:simpleContent> 119 * </xs:complexType> 120 * 121 * </pre> 122 * 123 * @author Sekhar Vajjhala, Sun Microsystems, Inc. 124 * @see XmlType 125 * @since 1.6, JAXB 2.0 126 */ 127 128 @Retention(RUNTIME) @Target({FIELD, METHOD}) 129 public @interface XmlValue {}