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

<!--
  ~ Copyright The WildFly Authors
  ~ SPDX-License-Identifier: Apache-2.0
  -->

<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>
