View Javadoc
1   /*
2    * Portions of this software was developed by employees of the National Institute
3    * of Standards and Technology (NIST), an agency of the Federal Government and is
4    * being made available as a public service. Pursuant to title 17 United States
5    * Code Section 105, works of NIST employees are not subject to copyright
6    * protection in the United States. This software may be subject to foreign
7    * copyright. Permission in the United States and in foreign countries, to the
8    * extent that NIST may hold copyright, to use, copy, modify, create derivative
9    * works, and distribute this software and its documentation without fee is hereby
10   * granted on a non-exclusive basis, provided that this notice and disclaimer
11   * of warranty appears in all copies.
12   *
13   * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER
14   * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY
15   * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF
16   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM
17   * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE
18   * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE.  IN NO EVENT
19   * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT,
20   * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM,
21   * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY,
22   * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR
23   * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT
24   * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER.
25   */
26  
27  package gov.nist.secauto.metaschema.databind.model.annotations;
28  
29  import static java.lang.annotation.ElementType.PACKAGE;
30  import static java.lang.annotation.RetentionPolicy.RUNTIME;
31  
32  import java.lang.annotation.Retention;
33  import java.lang.annotation.Target;
34  
35  /**
36   * This annotation provides package-level Module information.
37   */
38  @Retention(RUNTIME)
39  @Target(PACKAGE)
40  public @interface XmlSchema {
41    /**
42     * Defines the XML namespace URI and prefix to use for this model. If a prefix
43     * is not provided, the XML prefix will be auto-generated.
44     *
45     * @return an array of namespace definitions
46     */
47    XmlNs[] xmlns() default {};
48  
49    /**
50     * Name of the XML namespace.
51     * <p>
52     * If the value is "##none", then there is no prefix defined.
53     *
54     * @return a namespace string in the form of a URI
55     */
56    String namespace() default Constants.NO_STRING_VALUE;
57  
58    /**
59     * The location of the associated XML schema.
60     *
61     * @return a location string in the form of a URI
62     */
63    String xmlSchemaLocation() default NO_LOCATION;
64  
65    /**
66     * The location of the associated JSON schema.
67     *
68     * @return a location string in the form of a URI
69     */
70    String jsonSchemaLocation() default NO_LOCATION;
71  
72    /**
73     * Get the default XML element form.
74     *
75     * @return the XML element form
76     */
77    XmlNsForm xmlElementFormDefault() default XmlNsForm.UNSET;
78  
79    /**
80     * Get the default XML attribute form.
81     *
82     * @return the XML attribute form
83     */
84    XmlNsForm xmlAttributeFormDefault() default XmlNsForm.UNSET;
85  
86    /**
87     * The default value of a schema location, which indicates that no schema will
88     * be associated.
89     * <p>
90     * The value "##none" was chosen because ## is not a valid sequence in
91     * xs:anyURI.
92     */
93    String NO_LOCATION = Constants.NO_STRING_VALUE;
94  }