<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright The WildFly Authors
  ~ SPDX-License-Identifier: Apache-2.0
  -->

<xs:schema xmlns="http://www.jboss.com/xml/ns/javaee"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:javaee="http://java.sun.com/xml/ns/javaee"
           xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
           targetNamespace="http://www.jboss.com/xml/ns/javaee"
           version="7.0"
           elementFormDefault="qualified">

    <xs:annotation>
        <xs:documentation>
            <![CDATA[

	This is the XML Schema for the JBoss AS7 EAR application deployment descriptor.
	The deployment descriptor must be named "jboss-app.xml" and placed in the
	.ear/META-INF folder. All the descriptors must indicate
	the JBoss schema by using the Java EE namespace:

	http://www.jboss.com/xml/ns/javaee

	and by indicating the version of the schema by
	using the version attribute as shown below:

	    <jboss-app xmlns="http://www.jboss.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="7.0">
	       ...
            </jboss-app>

    The instance documents may indicate the published version of
	the schema using the xsi:schemaLocation attribute for the
	Java EE namespace with the following location:

	https://www.jboss.org/j2ee/schema/jboss-app_7_0.xsd

	]]>
        </xs:documentation>
    </xs:annotation>

    <!-- Import the Java EE6 xsd -->
    <xs:import namespace="http://java.sun.com/xml/ns/javaee"
               schemaLocation="application_6.xsd"/>

    <!-- Include the common JBoss EE elements -->
    <xs:include schemaLocation="jboss-common_6_0.xsd"/>


    <xs:element name="jboss-app" type="jboss-appType"/>

    <xs:complexType name="jboss-appType">
        <xs:annotation>
            <xs:documentation>
                Root element for JBoss specific configurations in a .ear
            </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="javaee:applicationType">
                <xs:sequence>
                    <xs:element name="distinct-name" type="xs:string" minOccurs="0" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>
                                The distinct-name for this application.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="security-domain" type="xs:string" minOccurs="0" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>
                                The security domain application for this application.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="unauthenticated-principal" type="xs:string" minOccurs="0" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>
                                The principal that will be used for unauthenticated requests in this application
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>

                    <xs:element name="library-directory" type="xs:string" minOccurs="0" maxOccurs="1"/>

                    <xs:element name="security-role" minOccurs="0" maxOccurs="unbounded"
                                type="jboss:security-roleType"/>

                    <xs:element name="module" minOccurs="0" maxOccurs="unbounded" type="moduleType"/>

                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="moduleType">
        <xs:sequence>
            <xs:element name="service" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="har" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="web" type="javaee:webType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>
