<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2010, Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags. See the copyright.txt file in the
  ~ distribution for a full listing of individual contributors.
  ~
  ~ This is free software; you can redistribute it and/or modify it
  ~ under the terms of the GNU Lesser General Public License as
  ~ published by the Free Software Foundation; either version 2.1 of
  ~ the License, or (at your option) any later version.
  ~
  ~ This software is distributed in the hope that it will be useful,
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  ~ Lesser General Public License for more details.
  ~
  ~ You should have received a copy of the GNU Lesser General Public
  ~ License along with this software; if not, write to the Free
  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="urn:jboss:domain:xts:3.0"
            xmlns="urn:jboss:domain:xts:3.0"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="3.0">

    <!-- The xts subsystem root element -->
    <xs:element name="subsystem" type="subsystem"/>

    <xs:complexType name="subsystem">
        <xs:annotation>
            <xs:documentation>
            <![CDATA[
                The configuration of the XTS subsystem.

                This is just the minimum to get XTS bootstrapped as an AS7 extension.
            ]]>
            </xs:documentation>
        </xs:annotation>
        <xs:all>
            <xs:element name="host" type="host" minOccurs="0" maxOccurs="1"/>
            <xs:element name="xts-environment" type="xts-environment" minOccurs="0" maxOccurs="1"/>
            <xs:element name="default-context-propagation" type="default-context-propagation" minOccurs="0" maxOccurs="1"/>
            <xs:element name="async-registration" type="async-registration" minOccurs="0" maxOccurs="1"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="host">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[
                    name configures which host should be used by the XTS subsystem to register endpoints.
                ]]>
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="xts-environment">
        <xs:annotation>
            <xs:documentation>
            <![CDATA[
                url configures XTS clients to use remote transaction coordination services.
                if it is left unset then clients employ the local coordinator services.
                the value should identify an OASIS WSTX 1.1 Activation Coordinator service.
                The local JBoss Activation Service url has the format
                    "http://<bindadd>r:<webport>/ws-c11/ActivationService"
                where
                    <bindaddr> is the app server bind address (localhost by default) and
                    <webport> is the unsecured JBoss Web server port (8080 by default).
            ]]>
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="url" type="xs:string" use="optional" />
    </xs:complexType>

    <xs:complexType name="default-context-propagation">
        <xs:annotation>
            <xs:documentation>
            <![CDATA[
                'enabled' states whether to automatically propagate transactional context.
                When set to 'true', Web Service clients will automatically propagate a WS-AT
                transactional context if a JTA or WS-AT transaction is running when the call is made.
                Similarly, a WS-BA transactional context will be propagated if a WS-BA transaction
                is running when the call is made. This behavior can be overridden on a per client
                basis using the org.jboss.jbossts.txbridge.outbound.JTAOverWSATFeature and
                com.arjuna.mw.wst11.client.WSTXFeature features.
            ]]>
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="enabled" type="xs:boolean" use="optional" />
    </xs:complexType>

    <xs:complexType name="async-registration">
        <xs:annotation>
            <xs:documentation>
            <![CDATA[
                'enabled' feature of asynchronous registration of endpoints. This is way how to integrate
                Narayana WS-AT with .NET (even this is non-standard non-spec defined).
                The details of implementation could be consulted at JBTM-2928
            ]]>
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="enabled" type="xs:boolean" use="optional" default="false" />
    </xs:complexType>

</xs:schema>
