01 /*
02 * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
03 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04 *
05 * This code is free software; you can redistribute it and/or modify it
06 * under the terms of the GNU General Public License version 2 only, as
07 * published by the Free Software Foundation. Sun designates this
08 * particular file as subject to the "Classpath" exception as provided
09 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26 package javax.xml.bind.annotation;
27
28 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
29 import java.lang.annotation.Target;
30 import java.lang.annotation.Retention;
31 import java.lang.annotation.Inherited;
32
33 import static java.lang.annotation.ElementType.*;
34 import static java.lang.annotation.RetentionPolicy.*;
35
36 /**
37 * <p> Controls the ordering of fields and properties in a class. </p>
38 *
39 * <p> <b> Usage </b> </p>
40 *
41 * <p> <tt> @XmlAccessorOrder </tt> annotation can be used with the following
42 * program elements:</p>
43 *
44 * <ul>
45 * <li> package</li>
46 * <li> a top level class </li>
47 * </ul>
48 *
49 * <p> See "Package Specification" in javax.xml.bind.package javadoc for
50 * additional common information.</p>
51 *
52 * <p>The annotation <tt> @XmlAccessorOrder </tt> on a package applies to
53 * all classes in a package. The following inheritance semantics apply:
54 *
55 * <ul>
56 * <li> If there is a <tt>@XmlAccessorOrder</tt> on a class, then
57 * it is used. </li>
58 * <li> Otherwise, if a <tt>@XmlAccessorOrder </tt> exists on one of
59 * its super classes, then it is inherited.
60 * <li> Otherwise, the <tt>@XmlAccessorOrder </tt> on a package is
61 * inherited.
62 * </ul>
63 * <p> <b> Defaulting Rules: </b> </p>
64 *
65 * <p>By default, if <tt>@XmlAccessorOrder </tt> on a package is absent,
66 * then the following package level annotation is assumed.</p>
67 *<pre>
68 * @XmlAccessorType(XmlAccessOrder.UNDEFINED)
69 *</pre>
70 * <p> By default, if <tt>@XmlAccessorOrder</tt> on a class is absent
71 * and none of super classes is annotated with <tt> XmlAccessorOrder
72 * </tt>, then the following default on the class is assumed: </p>
73 *<pre>
74 * @XmlAccessorType(XmlAccessOrder.UNDEFINED)
75 *</pre>
76 * <p>This annotation can be used with the following annotations:
77 * {@link XmlType}, {@link XmlRootElement}, {@link XmlAccessorType},
78 * {@link XmlSchema}, {@link XmlSchemaType}, {@link XmlSchemaTypes},
79 * , {@link XmlJavaTypeAdapter}. It can also be used with the
80 * following annotations at the package level: {@link XmlJavaTypeAdapter}.
81 *
82 * @author Sekhar Vajjhala, Sun Microsystems, Inc.
83 * @since JAXB2.0
84 * @version $Revision: 1.10 $
85 * @see XmlAccessOrder
86 */
87
88 @Inherited
89 @Retention(RUNTIME)
90 @Target({PACKAGE,TYPE})
91 public @interface XmlAccessorOrder {
92 XmlAccessOrder value() default XmlAccessOrder.UNDEFINED;
93 }
|