src/share/jaxws_classes/javax/xml/bind/annotation/XmlRootElement.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 397
b99d7e355d4b
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 2004, 2013, 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  */
    26 package javax.xml.bind.annotation;
    28 import java.lang.annotation.Retention;
    29 import java.lang.annotation.Target;
    31 import static java.lang.annotation.RetentionPolicy.RUNTIME;
    32 import static java.lang.annotation.ElementType.TYPE;
    34 /**
    35  * Maps a class or an enum type to an XML element.
    36  *
    37  * <p> <b>Usage</b> </p>
    38  * <p>
    39  * The &#64;XmlRootElement annotation can be used with the following program
    40  * elements:
    41  * <ul>
    42  *   <li> a top level class </li>
    43  *   <li> an enum type </li>
    44  * </ul>
    45  *
    46  * <p>See "Package Specification" in javax.xml.bind.package javadoc for
    47  * additional common information.</p>
    48  *
    49  * <p>
    50  * When a top level class or an enum type is annotated with the
    51  * &#64;XmlRootElement annotation, then its value is represented
    52  * as XML element in an XML document.
    53  *
    54  * <p> This annotation can be used with the following annotations:
    55  * {@link XmlType}, {@link XmlEnum}, {@link XmlAccessorType},
    56  * {@link XmlAccessorOrder}.
    57  * <p>
    59  * <p>
    60  * <b>Example 1: </b> Associate an element with XML Schema type
    61  * <pre>
    62  *     // Example: Code fragment
    63  *     &#64;XmlRootElement
    64  *     class Point {
    65  *        int x;
    66  *        int y;
    67  *        Point(int _x,int _y) {x=_x;y=_y;}
    68  *     }
    69  * </pre>
    70  *
    71  * <pre>
    72  *     //Example: Code fragment corresponding to XML output
    73  *     marshal( new Point(3,5), System.out);
    74  * </pre>
    75  *
    76  * <pre>
    77  *     &lt;!-- Example: XML output -->
    78  *     &lt;point>
    79  *       &lt;x> 3 </x>
    80  *       &lt;y> 5 </y>
    81  *     &lt;/point>
    82  * </pre>
    83  *
    84  * The annotation causes an global element declaration to be produced
    85  * in the schema. The global element declaration is associated with
    86  * the XML schema type to which the class is mapped.
    87  *
    88  * <pre>
    89  *     &lt;!-- Example: XML schema definition -->
    90  *     &lt;xs:element name="point" type="point"/>
    91  *     &lt;xs:complexType name="point">
    92  *       &lt;xs:sequence>
    93  *         &lt;xs:element name="x" type="xs:int"/>
    94  *         &lt;xs:element name="y" type="xs:int"/>
    95  *       &lt;/xs:sequence>
    96  *     &lt;/xs:complexType>
    97  * </pre>
    98  *
    99  * <p>
   100  *
   101  * <b>Example 2: Orthogonality to type inheritance </b>
   102  *
   103  * <p>
   104  * An element declaration annotated on a type is not inherited by its
   105  * derived types. The following example shows this.
   106  * <pre>
   107  *     // Example: Code fragment
   108  *     &#64;XmlRootElement
   109  *     class Point3D extends Point {
   110  *         int z;
   111  *         Point3D(int _x,int _y,int _z) {super(_x,_y);z=_z;}
   112  *     }
   113  *
   114  *     //Example: Code fragment corresponding to XML output *
   115  *     marshal( new Point3D(3,5,0), System.out );
   116  *
   117  *     &lt;!-- Example: XML output -->
   118  *     &lt;!-- The element name is point3D not point -->
   119  *     &lt;point3D>
   120  *       &lt;x>3&lt;/x>
   121  *       &lt;y>5&lt;/y>
   122  *       &lt;z>0&lt;/z>
   123  *     &lt;/point3D>
   124  *
   125  *     &lt;!-- Example: XML schema definition -->
   126  *     &lt;xs:element name="point3D" type="point3D"/>
   127  *     &lt;xs:complexType name="point3D">
   128  *       &lt;xs:complexContent>
   129  *         &lt;xs:extension base="point">
   130  *           &lt;xs:sequence>
   131  *             &lt;xs:element name="z" type="xs:int"/>
   132  *           &lt;/xs:sequence>
   133  *         &lt;/xs:extension>
   134  *       &lt;/xs:complexContent>
   135  *     &lt;/xs:complexType>
   136  * </pre>
   137  *
   138  * <b>Example 3: </b> Associate a global element with XML Schema type
   139  * to which the class is mapped.
   140  * <pre>
   141  *     //Example: Code fragment
   142  *     &#64;XmlRootElement(name="PriceElement")
   143  *     public class USPrice {
   144  *         &#64;XmlElement
   145  *         public java.math.BigDecimal price;
   146  *     }
   147  *
   148  *     &lt;!-- Example: XML schema definition -->
   149  *     &lt;xs:element name="PriceElement" type="USPrice"/>
   150  *     &lt;xs:complexType name="USPrice">
   151  *       &lt;xs:sequence>
   152  *         &lt;xs:element name="price" type="xs:decimal"/>
   153  *       &lt;/sequence>
   154  *     &lt;/xs:complexType>
   155  * </pre>
   156  *
   157  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
   158  * @since JAXB2.0
   159  */
   160 @Retention(RUNTIME)
   161 @Target({TYPE})
   162 public @interface XmlRootElement {
   163     /**
   164      * namespace name of the XML element.
   165      * <p>
   166      * If the value is "##default", then the XML namespace name is derived
   167      * from the package of the class ( {@link XmlSchema} ). If the
   168      * package is unnamed, then the XML namespace is the default empty
   169      * namespace.
   170      */
   171     String namespace() default "##default";
   173     /**
   174      * local name of the XML element.
   175      * <p>
   176      * If the value is "##default", then the name is derived from the
   177      * class name.
   178      *
   179      */
   180     String name() default "##default";
   182 }

mercurial