| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 | <?xml version="1.0" encoding="UTF-8"?><xs:schema version="1.0beta"   attributeFormDefault="unqualified"   elementFormDefault="qualified"   xmlns:jbxb="http://www.jboss.org/xml/ns/jbxb"   xmlns:xs="http://www.w3.org/2001/XMLSchema">    <xs:annotation>        <xs:documentation>The JBossXB schema customization        elements</xs:documentation>    </xs:annotation>    <xs:element name="schemaBindings">        <xs:annotation>            <xs:documentation>This element defines default bindings for the                schema</xs:documentation>        </xs:annotation>        <xs:complexType>            <!-- The child elements can be selected in any order. -->            <xs:choice maxOccurs="unbounded" minOccurs="1">                <xs:element maxOccurs="1" minOccurs="0" ref="jbxb:package"/>               <xs:element name="ignoreUnresolvedFieldOrClass" type="xs:boolean" default="true"                  maxOccurs="1" minOccurs="0">                  <xs:annotation>                     <xs:documentation>The ignoreUnresolvedFieldOrClass specifies the behavior the parser chooses                        when a field is not found in the parent class for a child value, or when an element does not have                        any class assignement. If false, an exception will be thrown when either situation is encountered.                        If true, the missing mapping is ignored and the parse continues.                        </xs:documentation>                  </xs:annotation>               </xs:element>               <xs:element name="replacePropertyRefs" type="xs:boolean" default="true"                  maxOccurs="1" minOccurs="0">                  <xs:annotation>                     <xs:documentation>The replacePropertyRefs flag indicates whether the                        text content of values has ${x} system property references replaced                        during parsing. The default is true.                        </xs:documentation>                  </xs:annotation>               </xs:element>            </xs:choice>        </xs:complexType>    </xs:element>    <xs:element name="package" type="xs:NCName">        <xs:annotation>            <xs:documentation> Defines the default package for the schema which                is used for searching classes when unmarshalling elements of                complex types. If jbxb:package is not present, schema's                namespace URI will be used as the base to generate the default                package name for the schema (the mapping is defined in JAXB2.0                spec D.5.1 Mapping from a Namespace URI). Example: <![CDATA[                   <xsd:annotation>                      <xsd:appinfo>                         <jbxb:schema>                            <jbxb:package name="org.jboss.test.xml.pojoserver.metadata"/>                         </jbxb:schema>                      </xsd:appinfo>                   </xsd:annotation>                ]]></xs:documentation>        </xs:annotation>    </xs:element>    <xs:element name="characters">        <xs:annotation>            <xs:documentation> Binds text content of complex types. This element                is just a container for jbxb:value, jbxb:property,                jbxb:mapEntryKey, jbxb:mapEntryValue elements, all of them are                optional. This element can only appear inside complex type                definitions. Example: <![CDATA[                   <xsd:complexType name="namedValueType" mixed="true">                      <xsd:annotation>                         <xsd:appinfo>                            <jbxb:class impl="org.jboss.test.xml.pojoserver.metadata.AbstractPropertyMetaData"/>                            <jbxb:characters>                               <jbxb:property name="value"/>                               <jbxb:value unmarshalMethod="org.jboss.test.xml.pojoserver.metadata.DataTypeConverter.unmarshalStringValue"/>                            </jbxb:characters>                         </xsd:appinfo>                      </xsd:annotation>                  <xsd:complexContent>                  ...                  </xsd:complexContent>               </xsd:complexType>                ]]></xs:documentation>        </xs:annotation>        <xs:complexType>            <xs:choice>                <xs:element ref="jbxb:property"/>                <xs:element ref="jbxb:value"/>                <xs:element ref="jbxb:mapEntryKey"/>                <xs:element ref="jbxb:mapEntryValue"/>            </xs:choice>        </xs:complexType>    </xs:element>    <xs:element name="class" type="xs:NCName">        <xs:annotation>            <xs:documentation> Binds XML element or complex type to a Java class                which is specified as a value of attribute 'impl'. If jbxb:class                is used inside complex type definition, all elements of this                complex type will be unmarshalled into the specified Java type                unless there is overriding jbxb:class in an element declaration.                Example: <![CDATA[               <xsd:complexType name="deploymentType">                  <xsd:annotation>                     <xsd:appinfo>                        <jbxb:class impl="org.jboss.test.xml.pojoserver.deployment.AbstractKernelDeployment"/>                     </xsd:appinfo>                  </xsd:annotation>                  <xsd:sequence>                     ...                  </xsd:sequence>               </xsd:complexType>                           <xsd:element name="list" type="listType">                  <xsd:annotation>                     <xsd:appinfo>                        <jbxb:class impl="org.jboss.test.xml.pojoserver.metadata.AbstractListMetaData"/>                     </xsd:appinfo>                  </xsd:annotation>               </xsd:element>                ]]></xs:documentation>        </xs:annotation>        <xs:complexType>            <xs:attribute name="impl" type="xs:NCName" use="required"/>        </xs:complexType>    </xs:element>    <xs:element name="property">        <xs:annotation>            <xs:documentation> Binds an element to property/field in a class.                This element can appear inside an element definition or inside                jbxb:characters. If jbxb:property is not specified for an                element, the property name is resolved based on the element's                name using "D.2 The Name to Identifier Mapping Algorithm"                defined in JAXB2.0 spec. Example: <![CDATA[   <xsd:element name="list" type="listType">      <xsd:annotation>         <xsd:appinfo>            <jbxb:property name="value"/>            <jbxb:class impl="org.jboss.test.xml.pojoserver.metadata.AbstractListMetaData"/>         </xsd:appinfo>      </xsd:annotation>   </xsd:element>                ]]></xs:documentation>        </xs:annotation>        <xs:complexType>            <xs:attribute name="name" type="xs:NCName" use="required"/>        </xs:complexType>    </xs:element>    <xs:element name="value">        <xs:annotation>            <xs:documentation> Binds text value (attribute value or text                content) to a Java value. There are two attributes:                unmarshalMethod which specfies a public static method that is                used to unmarshal text values and marshalMethod which also a                public static method that is used to marshal Java values. Both                methods are defined as concatenation of fully-qualified class                name, '.' and the method name. unmarshalMethod must have two                parameters: the first one of type java.lang.String and the                second one is of type javax.xml.namespace.NamespaceContext.                marshalMethod must also have two parameters: the first one is of                type java.lang.Object and the second one is of type                javax.xml.namespace.NamespaceContext. jbxb:value can appear                inside simple type definitions, attribute declarations and                jbxb:characters. If jbxb:value is not used, text values are                unmarshalled using default simple types to Java bindings                defained in JAXB2.0 spec. If simple type is a user-defined, by                default it is not unmarshalled and passed as a string. Example: <![CDATA[                <xsd:simpleType name="kernelControllerState">                    <xsd:annotation>                        <xsd:appinfo>                            <jbxb:value unmarshalMethod="org.jboss.test.xml.pojoserver.metadata.KernelControllerStateDatatypeConverter.unmarshal"/>                        </xsd:appinfo>                    </xsd:annotation>                    <xsd:restriction base="xsd:string">                        <xsd:enumeration value="Not Installed" />                        <xsd:enumeration value="Described" />                        <xsd:enumeration value="Instantiated" />                        <xsd:enumeration value="Configured" />                        <xsd:enumeration value="Lifecycle" />                        <xsd:enumeration value="Started" />                        <xsd:enumeration value="Installed" />                    </xsd:restriction>                </xsd:simpleType>                public class KernelControllerStateDatatypeConverter                {                    public static KernelControllerState unmarshal(String text, NamespaceContext nsCtx)                    {                        KernelControllerState state;                        if(KernelControllerState.NOT_INSTALLED.getStateString().equals(text))                        {                           state = KernelControllerState.NOT_INSTALLED;                        }                        else                        ...                ]]></xs:documentation>        </xs:annotation>    </xs:element>    <xs:element name="addMethod">        <xs:annotation>            <xs:documentation> Specified on an element that should be added to                its parent not with a setter (is not a property) and not with a                field but with a custom method. The attributes are: * name - the                name of the method. There is not default value for this                attribute. It must be set. * valueType - the type of the                argument. If not present, the default is java.lang.Object. And                there is a special value 'child' which means the type of the                child should be used as the argument's type. Example: <![CDATA[              <xs:element name="user">                <xsd:annotation>                  <xsd:appinfo>                    <jbxb:class impl="org.jboss.test.xml.mbeanserver.Users$User"/>                    <jbxb:addMethod name="addUser" valueType="child"/>                  </xsd:appinfo>                </xsd:annotation>                <xs:complexType>                  <xs:sequence>                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="ur:role"/>                  </xs:sequence>                  <xs:attribute name="name" use="required" type="xs:NCName"/>                  <xs:attribute name="password" use="required" type="xs:NCName"/>                </xs:complexType>              </xs:element>                 ]]></xs:documentation>        </xs:annotation>        <xs:complexType>            <xs:attribute name="name" type="xs:NCName" use="required">                <xs:annotation>                    <xs:documentation>This required attribute specifies the name                        of the add method</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="java.lang.Object" name="valueType"                type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation> the type of the add method argument. If                        not present, the default is java.lang.Object. And there                        is a special value 'child' which means the type of the                        child should be used as the argument's type.                    </xs:documentation>                </xs:annotation>            </xs:attribute>        </xs:complexType>    </xs:element>    <xs:element name="putMethod">        <xs:annotation>            <xs:documentation/>        </xs:annotation>        <xs:complexType>            <xs:attribute default="put" name="name" type="xs:NCName"                use="optional">                <xs:annotation>                    <xs:documentation> the method name in the parent object's                        class that adds child to to its parent object. If not                        present, the default is 'put'. </xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="java.lang.Object" name="keyType"                type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation> fully qualified type name of the                        key-parameter to the put-method. If not present, the                        default is java.lang.Object. </xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="java.lang.Object" name="valueType"                type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation>fully qualified type name of the                        value-parameter to the put-method. If not present, the                        default is java.lang.Object. </xs:documentation>                </xs:annotation>            </xs:attribute>        </xs:complexType>    </xs:element>    <xs:element name="mapEntry">        <xs:annotation>            <xs:documentation> Specified on an element or a complex type                definition that is bound to a map entry. jbxb:class and                jbxb:mapEntry are mutually exclusive, meanning an element or a                complex type cannot be annotated with both jbxb:class and                jbxb:mapEntry at the same time. Otherwise, it will result in an                exception during binding. </xs:documentation>        </xs:annotation>        <xs:complexType>            <xs:attribute name="impl" type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation>an optional element that specifies a fully                        qualified name of the class that will represent map                        entry. If absent, a special class will be used by the                        framework internally.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="getKey" name="getKeyMethod" type="xs:NCName"                use="optional">                <xs:annotation>                    <xs:documentation>an optional attribute that specifies the                        name of the method that is used to get the key out of                        the object that represents a map                    entry.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="setKey" name="setKeyMethod" type="xs:NCName"                use="optional">                <xs:annotation>                    <xs:documentation>an optional attribute that specifies the                        name of the method that is used to set the key value on                        the object that represents a map                    entry.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="getValue" name="getValueMethod"                type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation>an optional element that specifies the                        name of the method that is used to get the value out of                        the object that represents a map entry. If absent and                        impl attribute is absent too, the default value is                        "getValue". If absent and impl attribute is present, the                        value will be the object that reprents the map entry                        itself.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="setValue" name="setValueMethod"                type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation>an optional element that specifies the                        name of the method that is used to set the value on the                        object that represents a map entry.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute name="valueType" type="xs:NCName" use="optional">                <xs:annotation>                    <xs:documentation>an optional attribute that specifies the                        type of the map entry value. Used when map entry value                        should be a parent for element/type's                    content.</xs:documentation>                </xs:annotation>            </xs:attribute>            <xs:attribute default="false" name="nonNullValue" type="xs:boolean"                use="optional">                <xs:annotation>                    <xs:documentation>If true, when a map entry is created, a                        non-null map entry value will also be created and set on                        the map entry. Otherwise, a map entry object is created                        with null value and the value will be created and set                        later when it is actually parsed. This attribute is used                        in combination with valueType.</xs:documentation>                </xs:annotation>            </xs:attribute>        </xs:complexType>    </xs:element>    <xs:element name="mapEntryKey">        <xs:annotation>            <xs:documentation>This element is a marker element that has no                attributes. It is specified on an element, attribute or inside                jbxb:characters to specify that the element, attribute or                characters should be used as the key in map            entry.</xs:documentation>        </xs:annotation>    </xs:element>    <xs:element name="mapEntryValue">        <xs:annotation>            <xs:documentation>This element is a marker element that has no                attributes. It is specified on an element, attribute or inside                jbxb:characters to specify that the element, attribute or                characters should be used as the value in map entry. Example:<![CDATA[         <xsd:element name="entry1">            <xsd:annotation>               <xsd:appinfo>                  <putMethod/>               </xsd:appinfo>            </xsd:annotation>            <xsd:complexType>               <xsd:annotation>                  <xsd:appinfo>                     <jbxb:mapEntry/>                  </xsd:appinfo>               </xsd:annotation>               <xsd:sequence>                  <xsd:element name="key1" type="xsd:string">                     <xsd:annotation>                        <xsd:appinfo>                           <jbxb:mapEntryKey/>                        </xsd:appinfo>                     </xsd:annotation>                  </xsd:element>                  <xsd:element name="value1" type="xsd:string">                     <xsd:annotation>                        <xsd:appinfo>                           <jbxb:mapEntryValue/>                        </xsd:appinfo>                     </xsd:annotation>                  </xsd:element>               </xsd:sequence>            </xsd:complexType>         </xsd:element>                ]]></xs:documentation>        </xs:annotation>    </xs:element>    <xs:element name="skip">        <xs:annotation>            <xs:documentation>This element can be used on an element declaration                or a complex type definition. Unmarshaller will not try to                create new objects for elements (or elements of complex types)                that are annotated with jbxb:skip. Instead, the object that was                created for the parent of such elements will be propagated and                values of attributes, character contents and child elements of                such elements will be set on their parent's            object. Example:<![CDATA[              <xs:element name="authentication">                <xsd:annotation>                   <xsd:appinfo>                      <jbxb:skip/>                   </xsd:appinfo>                </xsd:annotation>                <xs:complexType>                  <xs:sequence>                    <xs:element ref="jaas:login-module"/>                  </xs:sequence>                </xs:complexType>              </xs:element>                ]]>In the example above, login-modules will be added to the parent of authentication element.</xs:documentation>        </xs:annotation>    </xs:element></xs:schema>
 |