<?xml version="1.0" encoding="UTF-8"?>
<schema
  targetNamespace="http://xmlns.oracle.com/weblogic/weblogic-webservices"
  xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-webservices"
  xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  version="1.0"
  >
  <import namespace="http://java.sun.com/xml/ns/j2ee"
    schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"/>

  <element name="weblogic-webservices" type="wls:weblogic-webservicesType"/>

  <complexType name="weblogic-webservicesType">
    <sequence>
      <xsd:element name="webservice-description"
        type="wls:webservice-descriptionType"
        minOccurs="1"
        maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            Top level wsee internal DD element

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="webservice-security"
        type="wls:webservice-securityType"
        minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            Webservice Security configuration element

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </sequence>
    <xsd:attribute name="version" type="xsd:string" use="optional"/>
  </complexType>

  <complexType name="webservice-descriptionType">
    <sequence>
      <xsd:element name="webservice-description-name"
        type="j2ee:string"/>
      <xsd:element name="webservice-type" default="JAXRPC" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The Web Service Type.  This is needed because WebLogic supports JAX-RPC Web Service with 181 annotations.

          </xsd:documentation>
        </xsd:annotation>
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="JAXRPC"/>
            <xsd:enumeration value="JAXWS"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="wsdl-publish-file"
        type="j2ee:string"
        minOccurs="0"/>

      <xsd:element name="port-component"
        type="wls:port-componentType"
        minOccurs="0"
        maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="webservice-securityType">
    <sequence>
      <xsd:element name="mbean-name"
        type="j2ee:string"/>
    </sequence>
  </complexType>

  <complexType name="port-componentType">
    <sequence>
      <xsd:element name="port-component-name"
        type="j2ee:string"/>
      <xsd:element name="service-endpoint-address"
        type="wls:webservice-addressType"
        minOccurs="0"/>
      <xsd:element name="login-config"
        type="j2ee:login-configType"
        minOccurs="0"/>
      <xsd:element name="transport-guarantee"
        type="j2ee:transport-guaranteeType"
        minOccurs="0"/>
      <xsd:element name="deployment-listener-list"
        type="wls:deployment-listener-listType"
        minOccurs="0"/>
      <xsd:element name="wsdl"
        type="wls:wsdlType" minOccurs="0"/>
      <xsd:element name="transaction-timeout"
        type="xsd:nonNegativeInteger"
        minOccurs="0"/>
      <xsd:element name="callback-protocol"
        type="wls:callback-protocolType"
        minOccurs="0"/>
      <xsd:element name="stream-attachments" type="xsd:boolean"
        minOccurs="0" maxOccurs="1"/>
      <xsd:element name="validate-request" type="xsd:boolean"
        minOccurs="0" maxOccurs="1"/>

      <xsd:element name="http-flush-response" type="xsd:boolean"
        minOccurs="0" maxOccurs="1" default="true">
        <xsd:annotation>
          <xsd:documentation>
                  By default the JAX-RPC webservices stack, flushes the response. This flag is used to control this behaviour.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="http-response-buffersize" type="xsd:nonNegativeInteger"
        minOccurs="0" maxOccurs="1" default="0">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the size of the response Buffer, which is used to cache the request on server side.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="reliability-config" type="wls:reliability-configType"
        minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the reliability configuration for this web service port component..
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

    </sequence>
  </complexType>

  <xsd:complexType name="wsdlType">
    <xsd:sequence>
      <xsd:element name="exposed" type="xsd:boolean"/>
    </xsd:sequence>
  </xsd:complexType>

  <complexType name="deployment-listener-listType">
    <sequence>
      <xsd:element name="deployment-listener"
        type="j2ee:string" minOccurs="1" maxOccurs="unbounded"/>

    </sequence>
  </complexType>

  <complexType name="webservice-addressType">
    <sequence>
      <xsd:element name="webservice-contextpath"
        type="j2ee:string"/>

      <xsd:element name="webservice-serviceuri"
        type="j2ee:string"/>
    </sequence>
  </complexType>

  <complexType name="callback-protocolType">
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
        <xsd:enumeration value="http"/>
        <xsd:enumeration value="https"/>
        <xsd:enumeration value="jms"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </complexType>

  <complexType name="reliability-configType">
    <sequence>
      <xsd:element name="inactivity-timeout"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="base-retransmission-interval"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="retransmission-exponential-backoff"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="acknowledgement-interval"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="sequence-expiration"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="buffer-retry-count"
                   type="xsd:int"
                   minOccurs="0"/>
      <xsd:element name="buffer-retry-delay"
                   type="j2ee:string"
                   minOccurs="0"/>
    </sequence>
  </complexType>

</schema>
