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 {@code @XmlValue} 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 * {@code @XmlValue} annotation. </li> 56 * 57 * <li>{@code @XmlValue} 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 {@code @XmlValue} 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 * {@code 91 * 92 * <!-- Example 1: XML Schema fragment --> 93 * <xs:simpleType name="USPrice"> 94 * <xs:restriction base="xs:decimal"/> 95 * </xs:simpleType> 96 * 97 * }</pre> 98 * 99 * <p><b> Example 2: </b> Map a class to XML Schema complexType with 100 * with simpleContent.</p> 101 * 102 * <pre> 103 * 104 * // Example 2: Code fragment 105 * public class InternationalPrice { 106 * @XmlValue 107 * public java.math.BigDecimal price; 108 * 109 * @XmlAttribute 110 * public String currency; 111 * } 112 * {@code 113 * 114 * <!-- Example 2: XML Schema fragment --> 115 * <xs:complexType name="InternationalPrice"> 116 * <xs:simpleContent> 117 * <xs:extension base="xs:decimal"> 118 * <xs:attribute name="currency" type="xs:string"/> 119 * </xs:extension> 120 * </xs:simpleContent> 121 * </xs:complexType> 122 * 123 * }</pre> 124 * 125 * @author Sekhar Vajjhala, Sun Microsystems, Inc. 126 * @see XmlType 127 * @since 1.6, JAXB 2.0 128 */ 129 130 @Retention(RUNTIME) @Target({FIELD, METHOD}) 131 public @interface XmlValue {}