<?xml version="1.0"?>
<!DOCTYPE gsdoc PUBLIC "-//GNUstep//DTD gsdoc 1.0.4//EN" "http://www.gnustep.org/gsdoc-1_0_4.dtd">
<gsdoc base="GWSExtensibility">
  <head>
    <title>GWSExtensibility documentation</title>
    <author name="Richard Frith-Macdonald">
      <email address="rfm@gnu.org">
        rfm@gnu.org
      </email>
    </author>
    <version>25485</version>
    <date>2007-09-14 13:54:55 +0100 (Fri, 14 Sep 2007)</date>
    <copy>2008 Free Software Foundation, Inc.</copy>
  </head>
  <body>
    <front><contents /></front>
    <chapter>
      <heading>
        Software documentation for the GWSExtensibility class
      </heading>
      <class name="GWSExtensibility" super="NSObject">
        <declared>GWSExtensibility.h</declared>
        <desc>
          <p>
            GWSExtensibility is an abstract class
            declaring the methods needed to implement WSDL
            extensibility. <br /> The extensibility
            mechanism is the way that WSDL was designed to be
            future-proof, it works by defining certain
            points within a WSDL document at which extensibility
            elements may be inserted to give additional
            information.
          </p>
          <p>
            The WebServices library reads in and stores
            extensibility elements in the form of
            GWSElement objects and looks up the
            GWSExtensibility objects to handle them
            using the namespaces of the elements read in. <br />
            If there is no registered handler (see
            <ref type="method" id="+registerExtensibility:forNamespace:" class="GWSDocument">[GWSDocument +registerExtensibility:forNamespace:]</ref>) then the extensibility elements are ignored, but preserved for output when a document is written. <br /> However, if a handler ihas been registered, the extensibility elements are validated when the document is read in, and the handler is also asked to perform service/coder setup when an attempt is made to perform an operation using a service defined in the document.
          </p>
        </desc>
        <method type="NSString*">
          <sel>validate:</sel>
          <arg type="GWSElement*">node</arg>
          <sel>for:</sel>
          <arg type="GWSDocument*">document</arg>
          <sel>in:</sel>
          <arg type="id">section</arg>
          <sel>setup:</sel>
          <arg type="GWSService*">service</arg>
          <desc>
            Method to validate an extensibility <var>node</var>
            for the specified <var>document</var>. The
            <var>section</var> argument is the object on whose
            behalf the extensibility instance is being parsed
            (eg a GWSPortType). <br /> This must return
            <code>nil</code> if the extensibility
            <var>node</var> is valid, and a descriptive error
            message if it is not. <br /> The optional
            <var>service</var> argument is, if present, a
            <ref type="class" id="GWSService">GWSService</ref>
              object which is about to send a message... in this
              case the method should modify the parameters of the
              message adding in keys to specify how the
              parameters should be encoded and where/how the
              message should be sent.
          </desc>
        </method>
      </class>
    </chapter>
    <chapter>
      <heading>
        Software documentation for the GWSSOAPExtensibility
        class
      </heading>
      <class name="GWSSOAPExtensibility" super="GWSExtensibility">
        <declared>GWSExtensibility.h</declared>
        <desc>
          An instance of this class is registered by default to
          handle the
          <code>http://schemas.xmlsoap.org/wsdl/soap/</code>
          namespace.
        </desc>
      </class>
    </chapter>
  </body>
</gsdoc>
