gdaniels    2002/10/07 18:31:21

  Modified:    java     Tag: interop4 README axis.properties
               java/docs Tag: interop4 axis-bibliography.bib
                        integration-guide.html reading.html reference.html
                        user-guide.html
               java/src/org/apache/axis Tag: interop4 FaultableHandler.java
               java/src/org/apache/axis/handlers Tag: interop4
                        BasicHandler.java
               java/src/org/apache/axis/handlers/soap Tag: interop4
                        SOAPService.java
               java/src/org/apache/axis/transport/http Tag: interop4
                        SimpleAxisServer.java
               java/src/org/apache/axis/utils Tag: interop4 JavaUtils.java
               java/src/org/apache/axis/wsdl/symbolTable Tag: interop4
                        BindingEntry.java Parameter.java SymbolTable.java
               java/xmls Tag: interop4 properties.xml
  Added:       java/docs Tag: interop4 AxisJMSSample.pdf
               java/samples/jms Tag: interop4 AxisJMSSample.pdf
  Log:
  Update interop4 to the current HEAD changes.  Everything but the
  terra testcase passes with this version, so this is just about ready to
  merge back to the HEAD.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.13.2.1  +1 -1      xml-axis/java/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/README,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- README    25 Sep 2002 19:01:45 -0000      1.13
  +++ README    8 Oct 2002 01:31:19 -0000       1.13.2.1
  @@ -1,6 +1,6 @@
                Axis (Apache eXtensible Interaction System)
                -------------------------------------------
  -             1.0rc2 Release                 Sept 25, 2002
  +             1.0 Release                     Oct 7, 2002
   
   Welcome to Axis!  You'll find documentation in the docs/ directory.
   
  
  
  
  1.10.2.1  +1 -1      xml-axis/java/axis.properties
  
  Index: axis.properties
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/axis.properties,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- axis.properties   25 Sep 2002 19:01:45 -0000      1.10
  +++ axis.properties   8 Oct 2002 01:31:19 -0000       1.10.2.1
  @@ -1,4 +1,4 @@
  -axis.version=1.0rc2
  +axis.version=1.0
   
   name=axis
   Name=Axis
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +4 -4      xml-axis/java/docs/axis-bibliography.bib
  
  Index: axis-bibliography.bib
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/axis-bibliography.bib,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- axis-bibliography.bib     3 Sep 2002 20:30:51 -0000       1.3
  +++ axis-bibliography.bib     8 Oct 2002 01:31:19 -0000       1.3.2.1
  @@ -30,8 +30,8 @@
       title="To infinity and beyond - the quest for {SOAP} interoperability",
       author="Sam Ruby",
       year=2002,
  -    
url="http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html";,
  -    
note="\href{http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html}{http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html}";
  +    
url="http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html";,
  +    
note="\href{http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html}{http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html}";
       }
       
   @misc{ruby:gump,
  @@ -45,14 +45,14 @@
       title="A Busy Developer's Guide to {WSDL 1.1}",
       author="Sam Ruby",
       year=2002,
  -    
url="http://radio.weblogs.com/0101679/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html";
  +    
url="http://www.intertwingly.net/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html";
       }
   
   @misc{ruby:soap-intro,
       title="A Gentle Introduction to {SOAP}",
       author="Sam Ruby",
       year=2002,
  -    
url="http://radio.weblogs.com/0101679/stories/2002/03/16/aGentleIntroductionToSoap.html";
  +    
url="http://www.intertwingly.net/stories/2002/03/16/aGentleIntroductionToSoap.html";
       }
       
       
  
  
  
  1.12.2.1  +174 -83   xml-axis/java/docs/integration-guide.html
  
  Index: integration-guide.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/integration-guide.html,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- integration-guide.html    29 Sep 2002 04:28:14 -0000      1.12
  +++ integration-guide.html    8 Oct 2002 01:31:19 -0000       1.12.2.1
  @@ -29,14 +29,15 @@
   Table of Contents</h3>
   <a href="#Introduction">Introduction</a>
   <br><a href="#Pluggable APIs">Pluggable APIs</a>
  -<br>&nbsp; <a href="#System Management Plug">System Management</a>
  +<br>&nbsp; <a href="#Components">Components</a>
  +<!-- <br>&nbsp; <a href="#System Management Plug">System Management</a>
  +-->
   <br>&nbsp; <a href="#Logging/Tracing Plug">Logging/Tracing</a>
   <br>&nbsp; <a href="#Configuration Plug">Configuration</a>
   <br>&nbsp; <a href="#Handlers Plug">Handlers</a>
   <br>&nbsp; <a href="#Internationalization Plug">Internationalization</a>
   <br>&nbsp; <a href="#Performance Monitoring Plug">Performance Monitoring</a>
   <br>&nbsp; <a href="#Encoding Plug">Encoding</a>
  -<br>&nbsp; <a href="#Compiler">Compiler</a>
   <br>&nbsp; <a href="#WSDL plug">WSDL Parser and Code Generator Framework</a>
   <h2>
   <a NAME="Introduction"></a>Introduction</h2>
  @@ -52,6 +53,156 @@
   <a NAME="Pluggable APIs"></a>Pluggable APIs</h2>
   The following are the points that are pluggable in order to integrate AXIS
   into a web application server.
  +The first subsection details a number of pluggable components in general.
  +More details are provided for other components in the remaining
  +subsections.
  +
  +<h3>
  +<a NAME="Components"></a>Components</h3>
  +This section describes in general how to plug specializations
  +of various components into AXIS.
  +
  +<h4>
  +General Strategy
  +</h4>
  +To override the default behavior for a pluggable component:
  +<ul>
  +<li>Develop implementation of components interface</li>
  +<br>&nbsp;
  +<li>Define the implementation class to AXIS by either creating
  +a service definition file (prefered)
  +or by setting a system property.
  +<ul>
  +<br>
  +<li><strong>PREFERED:</strong> To create a service definition file:</li>
  +<ul>
  +<li>The name of the service definition file is derived from the interface
  +or abstract class which the service implements/extends:
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +<code>/META-INF/services/&lt;componentPackage&gt;.&lt;interfaceName&gt;</code>.</li>
  +<li>Put the fully qualified class name of the implementation class on a line by 
itself
  +in the service definition file.</li>
  +</ul>
  +<br>
  +<li>Set system property:
  +<ul>
  +<li>The name of the system property is the name of the interface.</li>
  +<li>The value of the system property is the name of the implementation.</li>
  +<li>The optional system property name (in table, below) may be also be used.</li>
  +<br>&nbsp;
  +<li>Setting a system property is not prefered, particularly in a J2EE or other 
application
  +hosting environment, because it imposes a directive across all applications.
  +This may or may not be appropriate behavior.
  +If it is to be done, it should never be done from within a Web Application at 
runtime.
  +</li>
  +</ul>
  +</li>
  +</ul>
  +<br>
  +<li>Package the implementation class and, if used,
  +the service definition file in a JAR file
  +and/or place it where it can be picked up by a class loader (CLASSPATH).</li>
  +</ul>
  +
  +<h4>
  +Example 1
  +</h4>
  +To override the default behavior for the Java Compiler:
  +<ul>
  +<li>An implementation of the <code>Compiler</code> interface is already provided 
for the <code>Jikes</code> compiler.</li>
  +<br>&nbsp;
  +<li>Create the service definition file named:
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +<code>/META-INF/services/org.apache.axis.components.compiler.Compiler</code></li>
  +<br>&nbsp;
  +<li>Add the following line to the service definition file:
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +<code>org.apache.axis.components.compiler.Jikes</code></li>
  +<br>&nbsp;
  +<li>Since <code>org.apache.axis.components.compiler.Jikes</code>
  +is packaged with AXIS, all that needs to be done is to ensure
  +that the service definition file is loadable by a class loader.
  +</li>
  +</ul>
  +
  +<h4>
  +Example 2
  +</h4>
  +To override the default behavior for the SocketFactory
  +in an environment that does not allow resources to be
  +located/loaded appropriately, or where the behavior
  +needs to be forced to a specific implementation:
  +<ul>
  +<li>Provide an implementation of the <code>SocketFactory</code> interface,
  +for example <code>your.package.YourSocketFactory</code></li>
  +<br>&nbsp;
  +<li>Set the system property named
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +<code>org.apache.axis.components.net.SocketFactory</code>
  +<br>
  +to the value
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +<code>your.package.YourSocketFactory</code>
  +<br>
  +<p>This can be done by using the JVM commandline
  +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  
+<code>-Dorg.apache.axis.components.net.SocketFactory=your.package.YourSocketFactory</code>
  +<br>&nbsp;
  +</li>
  +<li>Ensure that the implementation class is loadable by a class loader.
  +</li>
  +</ul>
  +
  +<h4>
  +Reference
  +</h4>
  +
  +<table border="1">
  +<tr>
  +<th>Component/Package</th>
  +<th>Factory</th>
  +<th>Interface</th>
  +<th>Optional System Property</th>
  +<th>Default Implementation</th>
  +</tr>
  +<tr>
  +<td><code>org.apache.axis.components.compiler</code></td>
  +<td><code>CompilerFactory.getCompiler()</code></td>
  +<td><code>Compiler</code></td>
  +<td><code>axis.Compiler</code></td>
  +<td><code>Javac</code></td>
  +</tr>
  +<tr>
  +<td><code>org.apache.axis.components.image</code></td>
  +<td><code>ImageIOFactory.getImageIO()</code></td>
  +<td><code>ImageIO</code></td>
  +<td><code>axis.ImageIO</code></td>
  +<td><code>MerlinIO, JimiIO, JDK13IO</code></td>
  +</tr>
  +<tr>
  +<td><code>org.apache.axis.components.jms</code></td>
  +<td><code>JMSVendorAdapterFactory.getJMSVendorAdapter()</code></td>
  +<td><code>JMSVendorAdapter</code></td>
  +<td><code></code></td>
  +<td><code>JNDIVendorAdapter</code></td>
  +</tr>
  +<tr>
  +<td><code>org.apache.axis.components.net</code></td>
  +<td><code>SocketFactoryFactory.getFactory()</code></td>
  +<td><code>SocketFactory</code></td>
  +<td><code>axis.socketFactory</code></td>
  +<td><code>DefaultSocketFactory</code></td>
  +</tr>
  +<tr>
  +<td><code>org.apache.axis.components.net</code></td>
  +<td><code>SocketFactoryFactory.getSecureFactory()</code></td>
  +<td><code>SocketFactory</code></td>
  +<td><code>axis.socketSecureFactory</code></td>
  +<td><code>JSSESocketFactory</code></td>
  +</tr>
  +</table>
  +
  +<!--
   <h3>
   <a NAME="System Management Plug"></a>System Management</h3>
   What points are necessary to manage AXIS?
  @@ -87,6 +238,7 @@
   <li>
   Example</li>
   </ul>
  +-->
   
   <h3><a NAME="Logging/Tracing Plug"></a>Logging/Tracing</h3>
   AXIS logging and tracing is based on the Logging component of the
  @@ -224,7 +376,7 @@
   which currently provides methods that return client and server
   configurations.
   
  -<p>Our focus will be how to define the implemenation class for
  +<p>Our focus will be how to define the implementation class for
   <code>EngineConfigurationFactory</code>.
   
   <ul>
  @@ -251,7 +403,7 @@
   <code>AxisClient = new AxisClient(config);</code>
   </ul>
   <br>The details may vary (server versus client, whether other factories are 
involved, etc).
  -Regardless, the point is that user code is responsible for
  +Regardless, the point is that integration code is responsible for
   calling <code>EngineConfigurationFactoryFinder(someContext)</code>
   and ensuring that the results are handed to AXIS.&nbsp;
   <code>someContext</code> is key to how the factory finder
  @@ -274,8 +426,8 @@
   </li>
   <li>Locate all resources named
   <code>META-INF/services/org.apache.axis.EngineConfigurationFactory</code>.
  -Each line of such a file identifies the name of a class
  -implementing the interface.
  +Each line of such a resource identifies the name of a class
  +implementing the interface ('#' comments, through end-of-line).
   </li>
   <li>
   <code>org.apache.axis.configuration.EngineConfigurationFactoryServlet</code>
  @@ -301,7 +453,7 @@
   <li>
   The implementation class is required to examine runtime environment
   (to optionally include the parameter).
  -If the environment can provide informatin required by
  +If the environment can provide information required by
   an EngineConfigurationFactory,
   then the <code>newFactory()</code> may return in instance of that factory.
   Otherwise, <code>newFactory()</code> must return null.
  @@ -332,13 +484,15 @@
   from the current working directory!).
   
   <p>The default Servlet factory will open the Web Application resource
  -<code>/WEB-INF/server-config.wsdd</code>:
  +<code>/WEB-INF/server-config.wsdd</code>
  +(The name of this file may be changed using the
  +system property <code>axis.ServerConfigFile</code>):
   <ul>
   <li>
  -If it exists as a accessible file (i.e. not in a JAR/WAR file),
  -then it opens it as a file
  -(this allows changes to be saved,
  -if changes are allowed & made using the Admin tools).
  +If it exists as an accessible file (i.e. not in a JAR/WAR file),
  +then it opens it as a file.
  +This allows changes to be saved,
  +if changes are allowed & made using the Admin tools.
   </li>
   <li>
   If it does not exist as a file, then an attempt is made
  @@ -380,39 +534,8 @@
   
   <h3>
   <a NAME="Handlers Plug"></a>Handlers</h3>
  -What new handlers might a system integrator wish to implement?
  -<ul>
  -<li>
  -Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  -compliance?</li>
  -
  -<li>
  -Interfaces</li>
  -
  -<li>
  -Mechanism</li>
  -
  -<ul>
  -<li>
  -Life cycle</li>
  -
  -<li>
  -Exception handling - in general; plug-in shouldn't throw any exceptions
  -- does runtime ignore? Log?)</li>
  -
  -<li>
  -Multiple thread support?&nbsp; Ie., is synchronization required?</li>
  -</ul>
  -
  -<li>
  -Configuration/reconfiguration</li>
  -
  -<li>
  -Default behavior if not plugged.</li>
  -
  -<li>
  -Example</li>
  -</ul>
  +See the <a href="architecture-guide.html">Architecture 
  +Guide</a> for current information on Handlers.
   
   <h3>
   <a NAME="Internationalization Plug"></a>Internationalization</h3>
  @@ -592,7 +715,8 @@
   
   <h3>
   <a NAME="Performance Monitoring Plug"></a>Performance Monitoring</h3>
  -How can we monitor the performance of AXIS?
  +AXIS does not yet include specific Performance Monitoring Plugs.
  +<!--
   <ul>
   <li>
   Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  @@ -625,9 +749,12 @@
   <li>
   Example</li>
   </ul>
  +-->
   
   <h3>
   <a NAME="Encoding Plug"></a>Encoding</h3>
  +AXIS does not yet include an Encoding Plug.
  +<!--
   How can a system integrator plug in other encoding mechanisms such as SOAP
   1.2 or optimized XML-based encoding?
   <ul>
  @@ -662,43 +789,7 @@
   <li>
   Example</li>
   </ul>
  -
  -<h3>
  -<a NAME="Compiler"></a>Compiler</h3>
  -How can a system integrator plug in other encoding mechanisms such as SOAP
  -1.2 or optimized XML-based encoding?
  -<ul>
  -<li>
  -Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  -compliance?</li>
  -
  -<li>
  -Interfaces</li>
  -
  -<li>
  -Mechanism</li>
  -
  -<ul>
  -<li>
  -Life cycle</li>
  -
  -<li>
  -Exception handling - in general; plug-in shouldn't throw any exceptions
  -- does runtime ignore? Log?)</li>
  -
  -<li>
  -Multiple thread support?&nbsp; Ie., is synchronization required?</li>
  -</ul>
  -
  -<li>
  -Configuration/reconfiguration</li>
  -
  -<li>
  -Default behavior if not plugged.</li>
  -
  -<li>
  -Example</li>
  -</ul>
  +-->
   
   <h3>
   <a NAME="WSDL plug"></a>WSDL Parser and Code Generator Framework</h3>
  
  
  
  1.3.2.1   +80 -21    xml-axis/java/docs/reading.html
  
  Index: reading.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/reading.html,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- reading.html      3 Sep 2002 20:30:51 -0000       1.3
  +++ reading.html      8 Oct 2002 01:31:19 -0000       1.3.2.1
  @@ -22,20 +22,21 @@
   <img SRC="axis.jpg" height=96 width=176></h1></center>
   
   <h1>Recommended Reading</h1>
  -
  +<a name="specifications">
   <h2>Specifications</h2>
  +</a>
   <ol>
   
   <li>
       <a href="http://www.w3.org/TR/SOAP/";>
       SOAP Version 1.1
  -    </a>
  +    </a><br>
       Remember that SOAP1.1 is not an official W3C standard. 
   </li>
   <li>
       <a href="http://www.w3.org/TR/soap12-part0/";>
       SOAP Version 1.2 Part 0: Primer
  -    </a>
  +    </a><br>
       This and the follow-on sections cover what the W3C think SOAP 
       is and how it should be used. 
       
  @@ -43,7 +44,7 @@
   <li>
       <a href="http://www.w3.org/TR/wsdl";>
       Web Services Description Language (WSDL) 1.1
  -    </a>
  +    </a><br>
   </li>
   <li>
       <a href="http://ietf.org/rfc/rfc2616.txt";>
  @@ -53,13 +54,13 @@
   <li>
       <a href="http://java.sun.com/xml/downloads/jaxrpc.html";>
       JAX-RPC Specification 1.0
  -    </a>
  +    </a><br>
       The public API for Web Services in Java. 
   </li>
   <li>
       <a href="http://www.w3.org/TR/xmlschema-0/";>
       XML Schema Part 0: Primer
  -    </a>
  +    </a><br>
       The W3C XML Schema, (WXS) is one of the two sets of datatype SOAP
       supports, the other being the SOAP Section 5 datatypes that predate
       WXS. Complicated as it is, it is useful to have a vague understanding
  @@ -68,42 +69,58 @@
   
   
   </ol>
  +
  +<a name="presentations">
   <h2>Explanations, articles and presentations</h2>
  +</a>
   <ol>
   <li>
  -    <a 
href="http://radio.weblogs.com/0101679/stories/2002/03/16/aGentleIntroductionToSoap.html";>
  +    <a 
href="http://www.intertwingly.net/stories/2002/03/16/aGentleIntroductionToSoap.html";>
       A Gentle Introduction to SOAP
       </a>
  +    Sam Ruby tries not to scare people.
   </li>
   <li>
  -    <a 
href="http://radio.weblogs.com/0101679/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html";>
  +    <a 
href="http://www.intertwingly.net/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html";>
       A Busy Developer's Guide to WSDL 1.1
  -    </a>
  -</li>
  -<li>
  -    <a 
href="http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html";>
  -    To infinity and beyond - the quest for SOAP interoperability
  -    </a>
  +    </a><br>
  +    Quick intro to WSDL by the eponymous Sam Ruby.
   </li>
  +<li> 
  +    <a href="http://www.ociweb.com/javasig/knowledgebase/2002Sep/";>
  +    Axis - an open source web service toolkit for Java</a><br>
  +    by Mark Volkmann, Partner, Object Computing, Inc. A very good introduction
  +    to SOAP and Axis. Highly Recommended.  
  +    
   <li>
       <a href="http://manning.com/antbook";>
  -    Java develoment with Ant (chapter 15)
  -    </a>
  +    Java development with Ant 
  +    </a><br>
  +    by Hatcher and Loughran. 
  +    A book on Ant development which covers Web Service development with Axis, 
  +    along with other topics relevant to Java developers using Ant. The Web Service
  +    chapter, chapter 15, is free to download. 
  +    
   </li>
   <li>
       <a href="http://www.iseran.com/Steve/papers/when_web_services_go_bad.html";>
       When Web Services Go Bad
  -    </a>
  +    </a><br>
  +    Steve Loughran tries to scare people.
  +    A painful demonstration how deployment and system management are 
  +    trouble spots in a production service, followed by an espousal of a
  +    deployment-centric development process. 
  +    
   </li>
   <li>
       <a href="http://servlet.java.sun.com/javaone/sf2002/conf/sessions/index.en.jsp";>
  -    JavaOne 2002,Web Services Today and Tomorrow </a>
  +    JavaOne 2002,Web Services Today and Tomorrow </a><br>
       (Java Developer connection login required) 
   </li>    
   
   <li>
       <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC.html";>
  -    The Java Web Services Tutorial: Java API for XML-based RPC </a>
  +    The Java Web Services Tutorial: Java API for XML-based RPC </a><br>
       This is part of Sun's guide to their Java Web Services Developer Pack. 
       The examples are all based on their JWSDP, but as Axis also implements 
       JAX-RPC, they may all port to Axis.    
  @@ -113,7 +130,7 @@
   
   <li>
       <a href="http://java.sun.com/blueprints/webservices/using/webservbp.html";>
  -    Using Web Services Effectively.</a>
  +    Using Web Services Effectively.</a><br>
       
       Blissfully ignoring issues such as versioning, robustness and security and 
       all the other details a production Web Service needs, instead pushing EJB as 
  @@ -123,12 +140,46 @@
       
   </li>    
   
  +<li>
  +    <a href="http://www.pankaj-k.net/axis4tag/";>
  +    Web Services with JAX-RPC and Apache Axis.</a><br>
  +    by Pankaj Kumar. 
  +    Starting with a 10000 ft. view of Web Services, prior technologies, current and 
emerging
  +    standards, it quickly gets into the nitty-gritties of using JAX-RPC and Apache 
Axis
  +    for writing and executing programs. Has a nice coverage of different invocation 
styles --
  +    generated stubs, dynamic proxy and dynamic invocation interface. A good place 
to start
  +    if you are new to Web Services and Axis.
  +    <br/>
  +    <br/>
  +    The author also maintains a <a 
href="http://www.pankaj-k.net/webservices/index.html";>
  +    Web Services Resource Page</a>.
  +
  +</li>
   
   
   </ol>
  +<a name="interop">
  +<h2>Interoperability</h2>
  +</a>
  +<ol>
  +<li>
  +    <a 
href="http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html";>
  +    To infinity and beyond - the quest for SOAP interoperability
  +    </a><br>
  +    Sam Ruby explains why Interop matters so much.
  +</li>
  +<li>
  +    <a href="http://www.iseran.com/Steve/papers/interop/";>
  +    The Wondrous Curse of Interoperability
  +    </a><br>
  +    Steve Loughran on interop challenges (especially between .NET and Axis),
  +    and how to test for them. 
  +</li>
  +</ol>
   
  +<a name="advanced">
   <h2>Advanced topics</h2>
  -
  +</a>
   <ol>
   <li>
       <a href="http://www.extreme.indiana.edu/xgws/papers/sc00_paper/index.html";>
  @@ -145,5 +196,13 @@
       Investigating the Limits of SOAP Performance for Scientific Computing    
       </a>
   </li>
  +<li>
  +    <a href="http://www.w3.org/TR/webarch/";>
  +    Architectural Principles of the World Wide Web        
  +    </a>
  +</li>
  +
  +
  +
   </ol>
       
  
  
  
  1.11.2.1  +77 -61    xml-axis/java/docs/reference.html
  
  Index: reference.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/reference.html,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- reference.html    27 Sep 2002 02:41:55 -0000      1.11
  +++ reference.html    8 Oct 2002 01:31:19 -0000       1.11.2.1
  @@ -30,7 +30,6 @@
   </ul>
   <h2> <a name="Tools"></a>Tools Reference</h2>
   <h3><a name="WSDL2Java"></a>WSDL2Java Reference</h3>
  -<h4>Other WSDL2Java details</h4>
   <p>Usage:&nbsp; java org.apache.axis.wsdl.WSDL2Java [options] WSDL-URI <br>
     Options: <br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -h, --help <br>
  @@ -39,6 +38,18 @@
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v, --verbose <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     print informational messages <br>
  +  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n, --noImports <br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  only generate code for the immediate WSDL document <br>
  +  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -O, --timeout &lt;argument> <br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  timeout in seconds (default is 45, specify -1 to disable) <br>
  +  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -D, --Debug <br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  print debug information <br>
  +  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -W, --noWrapped<br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  turn off support for &quot;wrapped&quot; document/literal<br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s, --server-side <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     emit server-side bindings for web service <br>
  @@ -69,38 +80,56 @@
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t, --testCase <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     emit junit testcase class for web service <br>
  -  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n, --noImports <br>
  -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  only generate code for the immediate WSDL document <br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a, --all <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     generate code for all elements, even unreferenced ones <br>
  -  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -D, --Debug <br>
  +   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -T, --typeMappingVersion <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  print debug information <br>
  +  indicate 1.1 or 1.2.  The default is 1.1 (SOAP 1.1 JAX-RPC compliant.
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +    1.2 indicates SOAP 1.1 encoded.) <br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -F, --factory &lt;argument> <br>
  -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  name of the JavaWriterFactory class for extending Java generation functions 
  -  <br>
  -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  ompliant) <br>
  -  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -O, --timeout &lt;argument> <br>
  -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  timeout in seconds (default is 45, specify -1 to disable) <br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +    name of a custom class that implements GeneratorFactory interface
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +    (for extending Java generation functions) <br>
  +  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -H, --helperGen <br>
  +  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +    emits separate Helper classes for meta data <br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -U, --user &lt;argument> <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     username to access the WSDL-URI <br>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -P, --password &lt;argument> <br>
     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     password to access the WSDL-URI <br>
  -  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -W, --noWrapped<br>
  -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  turn off support for &quot;wrapped&quot; document/literal<br>
     &nbsp; 
   <h4> -h, --help</h4>
   Print the usage statement and exit 
   <h4> -v, --verbose</h4>
   See what the tool is generating as it is generating it. 
  +<h4> -n, --noImports</h4>
  +Only generate code for the WSDL document that appears on the command line.&nbsp; 
  +The default behaviour is to generate files for all WSDL documents, the immediate 
  +one and all imported ones. 
  +<h4> -O, --timeout</h4>
  +Timeout in seconds.  The default is 45.  Use -1 to disable the timeout.
  +<h4> -D, --Debug</h4>
  +Print debug information, which currently is WSDL2Java's symbol table.  Note that 
this is only printed after the symbol table is complete, ie., after the WSDL is parsed 
successfully.
  +<h4>-W, --noWrapped</h4>
  +This turns off the special treatment of what is called "wrapped" document/literal
  +style operations. &nbsp;By default, WSDL2Java will recognize the following
  +conditions:<br>
  +<ul>
  +  <li>If an input message has is a single part.</li>
  +  <li>The part is an element.</li>
  +  <li>The element has the same name as the operation</li>
  +  <li>The element's complex type has no attributes<br>
  +  </li>
  +</ul>
  +When it sees this, WSDL2Java will 'unwrap' the top level element, and treat each 
  +of the components of the element as arguments to the operation. This type of WSDL 
  +is the default for Microsoft .NET web services, which wrap up RPC style arguments 
  +in this top level schema element.
   <h4> -s, --server-side</h4>
   Emit the server-side bindings for the web service: 
   <ul>
  @@ -172,10 +201,6 @@
   0 or false for primitive types).&nbsp; Like the generated implementation file, 
   the generated test case file could be considered a template that you may fill 
   in. 
  -<h4> -n, --noImports</h4>
  -Only generate code for the WSDL document that appears on the command line.&nbsp; 
  -The default behaviour is to generate files for all WSDL documents, the immediate 
  -one and all imported ones. 
   <h4> -a, --all</h4>
   Generate code for all elements, even unreferenced ones.&nbsp; By default, WSDL2Java 
   only generates code for those elements in the WSDL file that are referenced. 
  @@ -197,13 +222,13 @@
     then that portType will be generated and only those types that are referenced 
     by that portType.
   <p>Note that the anchor is searched for in the WSDL file appearing on the command 
line, <b>not</b> in imported WSDL files.  This allows one WSDL file to import 
constructs defined in another WSDL file without the nuisance of having all the 
imported WSDL file's constructs generated.
  -<h4> -D, --Debug</h4>
  -Print debug information, which currently is WSDL2Java's symbol table. 
   <h4> -T, --typeMappingVersion &lt;argument></h4>
   Indicate 1.1 or 1.2.&nbsp; The default is 1.2 (SOAP 1.2 JAX-RPC compliant). 
   <h4> -F, --factory &lt;argument></h4>
   Used to extend the functionality of the WSDL2Java emitter. The argument is the 
   name of a class which extends JavaWriterFactory. 
  +<h4> -H, --helperGen</h4>
  +Emits separate Helper classes for meta data.
   <h4> -U, --user &lt;argument&gt;</h4>
   This username is used in resolving the WSDL-URI provided as the input to WSDL2Java. 
   &nbsp;If the URI contains a username, this will override the command line switch. 
  @@ -212,21 +237,6 @@
   This password is used in resolving the WSDL-URI provided as the input to WSDL2Java. 
   &nbsp;If the URI contains a password, this will override the command line 
switch.&nbsp; 
   <br>
  -<h4>-W, --noWrapped</h4>
  -This turns off the special treatment of what is called "wrapped" document/literal
  -style operations. &nbsp;By default, WSDL2Java will recognize the following
  -conditions:<br>
  -<ul>
  -  <li>If an input message has is a single part.</li>
  -  <li>The part is an element.</li>
  -  <li>The element has the same name as the operation</li>
  -  <li>The element's complex type has no attributes<br>
  -  </li>
  -</ul>
  -When it sees this, WSDL2Java will 'unwrap' the top level element, and treat each 
  -of the components of the element as arguments to the operation. This type of WSDL 
  -is the default for Microsoft .NET web services, which wrap up RPC style arguments 
  -in this top level schema element.<br>
   
   <h3><a name="Java2WSDL"></a>Java2WSDL Reference</h3>
   <p>Here is the help message generated from the current tool: </p>
  @@ -300,13 +310,9 @@
     <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -O, 
--outputImpl 
     &lt;argument></font></tt> <br>
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  output Implementation WSDL filename, setting this causes --outputWsdlMode to 
  -  be ignored</font></tt> <br>
  -  <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -f, 
--factory 
  -  &lt;argument></font></tt> <br>
  +  output Implementation WSDL filename, setting this causes</font></tt> <br>
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  name of the Java2WSDLFactory class for extending WSDL generation 
functions</font></tt> 
  -  <br>
  +  --outputWsdlMode to be ignored</font></tt> <br>
     <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i, 
--implClass 
     &lt;argument></font></tt> <br>
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  @@ -322,10 +328,6 @@
     &lt;argument></font></tt> <br>
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     space or comma separated list of methods not to export</font></tt> <br>
  -  <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -y, --style 
  -  &lt;argument></font></tt> <br>
  -  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  -  the style of the wsdl document: RPC, DOCUMENT or WRAPPED</font></tt> <br>
     <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c, 
--stopClasses 
     &lt;argument></font></tt> <br>
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  @@ -338,6 +340,22 @@
     <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
     indicate 1.1 or 1.2. The default is 1.2 (SOAP 1.2 JAX-RPC compliant)</font></tt> 
     <br>
  +  <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -A, 
--soapAction 
  +  &lt;argument></font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +  value of the operations soapAction field. Values are DEFAULT,</font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  OPERATION or NONE. OPERATION forces soapAction to the name</font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  of the operation.  DEFAULT causes the soapAction to be set</font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  according to the operations meta data (usually "").  NONE</font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  forces the soapAction to "".  The default is DEFAULT.</font></tt> <br>
  +  <tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -y, --style 
  +  &lt;argument></font></tt> <br>
  +  <tt><font 
color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
  +  the style of the wsdl document: RPC, DOCUMENT or WRAPPED</font></tt> <br>
     <tt><font color="#993366">Details:</font></tt> <br>
     <tt><font color="#993366">&nbsp;&nbsp; portType element name= &lt.portTypeName 
     value> OR &lt;class-of-portType name></font></tt> <br>
  @@ -352,27 +370,27 @@
     &nbsp; 
   <p><b>-h , --help</b> <br>
     Prints the help message. 
  -<p><b>-o, --output &lt;WSDL file></b> <br>
  -  Indicates the name of the output WSDL file.&nbsp; If not specified, a suitable 
  -  default WSDL file is written into the current directory. 
   <p><b>-I, --input &lt;WSDL file></b> <br>
     Optional parameter that indicates the name of the input wsdl file.  The output
     wsdl file will contain everything from the input wsdl file plus the new 
constructs.
     If a new construct is already present in the input wsdl file, it is not added.
     This option is useful for constructing a wsdl file with multiple ports, bindings,
     or portTypes.
  +<p><b>-o, --output &lt;WSDL file></b> <br>
  +  Indicates the name of the output WSDL file.&nbsp; If not specified, a suitable 
  +  default WSDL file is written into the current directory. 
   <p><b>-l, --location &lt;location></b> <br>
     Indicates the url of the location of the service.&nbsp; The name after the last 
     slash or backslash is the name of the service port (unless overridden by the 
     -s option).&nbsp; The service port address location attribute is assigned the 
     specified value. 
  -<p><b>-p, --portTypeName &lt;name></b> <br>
  +<p><b>-P, --portTypeName &lt;name></b> <br>
     Indicates the name to use use for the portType element. If not specified, the 
     class-of-portType name is used. 
   <p><b>-b, --bindingName &lt;name></b> <br>
     Indicates the name to use use for the binding element. If not specified, the 
     value of the --servicePortName + "SoapBinding" is used. 
  -<p><b>-s, --serviceElementName &lt;name></b> <br>
  +<p><b>-S, --serviceElementName &lt;name></b> <br>
     Indicates the name of the service element.&nbsp; If not specified, the service 
     element is the &lt;portTypeName>Service.&nbsp; 
   <p><b>-s, --servicePortName &lt;name></b> <br>
  @@ -411,24 +429,22 @@
     Use this option to indicate the name of the output implementation WSDL 
file.&nbsp; 
     If specified, Java2WSDL will produce interface and implementation WSDL 
files.&nbsp; 
     If this option is used, the -w option is ignored. 
  -<p><b>-f, --factory &lt;class></b> <br>
  -  (No longer used.) 
   <p><b>-i, --implClass &lt;impl-class></b> <br>
     Sometimes extra information is available in the implementation class file. Use 
     this option to specify the implementation class. 
  -<p><b>-f, --factory &lt;class></b> <br>
  -  (No longer used.) 
   <p><b>-x, --exclude &lt;list></b> <br>
     List of methods to not exclude from the wsdl file. 
  +<p><b>-c, --stopClasses &lt;list></b> <br>
  +  List of classes which stop the Java2WSDL inheritance search. 
  +<p><b>-T, --typeMappingVersion &lt;version></b> <br>
  +  Choose the default type mapping registry to use. Either 1.1 or 1.2.</p>
  +<p><b>-A, --soapAction &lt;argument></b> <br>
  +  The value of the operations soapAction field. Values are DEFAULT, OPERATION or 
NONE. OPERATION forces soapAction to the name of the operation.  DEFAULT causes the 
soapAction to be set according to the operation's meta data (usually "").  NONE forces 
the soapAction to "".  The default is DEFAULT.
   <p><b>-y, --style &lt;argument></b> <br>
     The style of the WSDL document:  RPC, DOCUMENT or WRAPPED.
     If RPC, a rpc/encoded wsdl is generated.
     If DOCUMENT, a document/literal wsdl is generated.
     If WRAPPED, a document/literal wsdl is generated using the wrapped approach.
  -<p><b>-c, --stopClasses &lt;list></b> <br>
  -  List of classes which stop the Java2WSDL inheritance search. 
  -<p><b>-T, --typeMappingVersion &lt;version></b> <br>
  -  Choose the default type mapping registry to use. Either 1.1 or 1.2.</p>
   <h2><a name="Deployment"></a>Deployment (WSDD) Reference</h2>
   Note : all the elements referred to in this section are in the WSDD namespace, 
   namely &quot;http://xml.apache.org/axis/wsdd/&quot;. 
  
  
  
  1.73.2.1  +27 -16    xml-axis/java/docs/user-guide.html
  
  Index: user-guide.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/user-guide.html,v
  retrieving revision 1.73
  retrieving revision 1.73.2.1
  diff -u -r1.73 -r1.73.2.1
  --- user-guide.html   30 Sep 2002 01:39:24 -0000      1.73
  +++ user-guide.html   8 Oct 2002 01:31:19 -0000       1.73.2.1
  @@ -600,8 +600,15 @@
   <h2><a NAME="DataMapping"></a>XML &lt;-> Java Data Mapping in Axis</h2>
   <h3>How your Java types map to SOAP/XML types</h3>
   
  -The JAX-RPC specification determines how Java types are mapped to WSDL and vice 
versa. 
  -So read chapters 4 and 5 of the <a href="http://java.sun.com/xml/jaxrpc/";>
  +Interoperability, <i>interop</i> is an ongoing challenge
  +between SOAP implementations. If you want your service to work with other platforms
  +and implementations, you do need to understand the issues. There are some
  +<a href="reading.html#interop">external articles</a> on the subject that act
  +as a good starting place. 
  +  
  +The basic mapping between Java types and WSDL/XSD/SOAP in Axis is determined by 
  +The JAX-RPC specification. Read chapters 4 and 5 of the 
  +<a href="http://java.sun.com/xml/jaxrpc/";>
   specification</a> to fully understand how things are converted. Here are
   some of the salient points. 
   
  @@ -627,10 +634,12 @@
     may choose to return a value of <tt>nil</tt>, then the primitive data types 
     are replaced by their wrapper classes, such as Byte, Double, Boolean, etc. 
   <h4>SOAP Encoding Datatypes</h4>
  -<p> Alongside the XSD datatypes are the SOAP 'section 5' datatypes that are all 
  +<p> Alongside the XSD datatypes are the SOAP 'Section 5' datatypes that are all 
     nillable, and so only ever map to the wrapper classes. These types exist because 
     they all support the &quot;ID&quot; and &quot;HREF&quot; attributes, and so 
     will be used when in an rpc-encoded context to support multi-ref serialization.
  +  
  +  
   <h3>Exceptions</h3>
   
   This is an area which causes plenty of confusion, and indeed, the author
  @@ -689,7 +698,7 @@
   at least not be as rigorous as Java in the rules as to how exceptions
   must be handled. 
   
  -<h4>What Axis can not send via SOAP</h4>
  +<h3>What Axis can send via SOAP with restricted Interoperability</h3>
   
   <h5>Unsigned data</h5>
   
  @@ -703,30 +712,32 @@
   with unsigned support from using them. At least, until 
   a revision of JAX-RPC adds this. 
   
  +<h5>Java Collections</h5>
  +
  +Some of the Collection classes, such as <tt>HashTable</tt> do have
  +serializers, but there is no formal interoperability with other SOAP
  +implementations, and nothing in the SOAP specifications which covers
  +complex objects. The most reliable way to send aggregate objects is to
  +use arrays. In particular, .NET cannot handle them, though many Java SOAP 
  +implementations can marshall and unmarshall hash tables.  
  +
  +
  +<h3>What Axis can not send via SOAP</h3>
   
  -<h5>Arbitrary Objects without registration</h5>
  +
  +<h5>Arbitrary Objects without Pre-Registration</h5>
   
   You cannot send arbitrary Java objects over the wire and expect them to
   be understood at the far end. With RMI you can send and receive
   <tt>Serializable</tt> Java objects, but that is because you are running
   Java at both ends. Axis will only send objects for which there is a
  -registered Axis serializer. This document will shortly show how to use
  +registered Axis serializer. This document shows below how to use
   the BeanSerializer to serialize any class that follows the JavaBean
   pattern of accessor and mutator. To serve up objects you must either
   register your classes with this BeanSerializer, or there must be
   serialization support built in to Axis.
   
   
  -<h5>Java Collections</h5>
  -
  -Some of the Collection classes, such as <tt>HashTable</tt> do have
  -serializers, but there is no formal interoperability with other SOAP
  -implementations, and nothing in the SOAP specifications which covers
  -complex objects. The most reliable way to send aggregate objects is to
  -use arrays. 
  -
  -This is an ongoing issue with SOAP interop; expect it to slowly improve
  -over time.
   
   <h5>Remote References</h5>
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.4.1   +0 -0      xml-axis/java/docs/AxisJMSSample.pdf
  
        <<Binary file>>
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.4.1   +0 -0      xml-axis/java/samples/jms/AxisJMSSample.pdf
  
        <<Binary file>>
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.44.2.1  +7 -5      xml-axis/java/src/org/apache/axis/FaultableHandler.java
  
  Index: FaultableHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/FaultableHandler.java,v
  retrieving revision 1.44
  retrieving revision 1.44.2.1
  diff -u -r1.44 -r1.44.2.1
  --- FaultableHandler.java     18 Sep 2002 16:10:31 -0000      1.44
  +++ FaultableHandler.java     8 Oct 2002 01:31:20 -0000       1.44.2.1
  @@ -134,11 +134,13 @@
               Handler faultHandler = null;
   
               Hashtable options = getOptions();
  -            Enumeration enum = options.keys();
  -            while (enum.hasMoreElements()) {
  -                String s = (String) enum.nextElement();
  -                if (s.equals("fault-" + fault.getFaultCode().getLocalPart())) {
  -                    faultHandler = (Handler)options.get(s);
  +            if (options != null) {
  +                Enumeration enum = options.keys();
  +                while (enum.hasMoreElements()) {
  +                    String s = (String) enum.nextElement();
  +                    if (s.equals("fault-" + fault.getFaultCode().getLocalPart())) {
  +                        faultHandler = (Handler)options.get(s);
  +                    }
                   }
               }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.38.4.1  +9 -3      xml-axis/java/src/org/apache/axis/handlers/BasicHandler.java
  
  Index: BasicHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/BasicHandler.java,v
  retrieving revision 1.38
  retrieving revision 1.38.4.1
  diff -u -r1.38 -r1.38.4.1
  --- BasicHandler.java 12 Aug 2002 22:58:46 -0000      1.38
  +++ BasicHandler.java 8 Oct 2002 01:31:20 -0000       1.38.4.1
  @@ -84,14 +84,20 @@
       protected static Log log =
           LogFactory.getLog(BasicHandler.class.getName());
   
  +    protected boolean makeLockable = false;
       protected Hashtable options;
       protected String name;
   
   
       /**
        * Should this Handler use a LockableHashtable for options?
  +     * Default is 'false'.
        */
  -    protected void initHashtable(boolean makeLockable)
  +    protected void setOptionsLockable(boolean makeLockable) {
  +        this.makeLockable = makeLockable;
  +    }
  +    
  +    protected void initHashtable()
       {
           if (makeLockable) {
               options = new LockableHashtable();
  @@ -128,7 +134,7 @@
        * Set the given option (name/value) in this handler's bag of options
        */
       public void setOption(String name, Object value) {
  -        if ( options == null ) initHashtable(false);
  +        if ( options == null ) initHashtable();
           options.put( name, value );
       }
   
  @@ -166,7 +172,7 @@
       }
   
       public void setOptions(Hashtable opts) {
  -        options = opts ;
  +        options = opts;
       }
   
       /**
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.84.2.1  +2 -1      xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
  
  Index: SOAPService.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
  retrieving revision 1.84
  retrieving revision 1.84.2.1
  diff -u -r1.84 -r1.84.2.1
  --- SOAPService.java  18 Sep 2002 16:10:40 -0000      1.84
  +++ SOAPService.java  8 Oct 2002 01:31:20 -0000       1.84.2.1
  @@ -235,7 +235,8 @@
        */
       public SOAPService()
       {
  -        initHashtable(true);
  +        setOptionsLockable(true);
  +        initHashtable();
   
           // For now, always assume we're the ultimate destination.
           // TODO : Handle SOAP 1.2 ultimateDestination actor as well
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.74.2.1  +10 -2     
xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java
  
  Index: SimpleAxisServer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java,v
  retrieving revision 1.74
  retrieving revision 1.74.2.1
  diff -u -r1.74 -r1.74.2.1
  --- SimpleAxisServer.java     18 Sep 2002 16:10:30 -0000      1.74
  +++ SimpleAxisServer.java     8 Oct 2002 01:31:21 -0000       1.74.2.1
  @@ -71,7 +71,7 @@
   import java.util.Hashtable;
   
   /**
  - * This is a single threaded implementation of an HTTP server for processing
  + * This is a simple implementation of an HTTP server for processing
    * SOAP requests via Apache's xml-axis.  This is not intended for production
    * use.  Its intended uses are for demos, debugging, and performance
    * profiling.
  @@ -95,7 +95,7 @@
       private Hashtable sessions = new Hashtable();
   
       // Are we doing threads?
  -    private static boolean doThreads = false;
  +    private static boolean doThreads = true;
   
       // Are we doing sessions?
       // Set this to false if you don't want any session overhead.
  @@ -103,6 +103,14 @@
   
       protected boolean isSessionUsed() {
           return doSessions;
  +    }
  +
  +    public void setDoThreads(boolean value) {
  +        doThreads = value ;
  +    }
  +
  +    public boolean getDoThreads() {
  +        return doThreads ;
       }
   
       protected Session createSession(String cooky) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.80.2.1  +4 -0      xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
  
  Index: JavaUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
  retrieving revision 1.80
  retrieving revision 1.80.2.1
  diff -u -r1.80 -r1.80.2.1
  --- JavaUtils.java    18 Sep 2002 16:10:41 -0000      1.80
  +++ JavaUtils.java    8 Oct 2002 01:31:21 -0000       1.80.2.1
  @@ -509,6 +509,10 @@
               // Allow mapping of HashMaps to Hashtables
               if (src == HashMap.class && dest == Hashtable.class)
                   return true;
  +
  +            // Allow mapping of Calendar to Date
  +            if (Calendar.class.isAssignableFrom(src) && dest == Date.class)
  +                return true;
           }
           
           Class destHeld = JavaUtils.getHolderValueType(dest);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.4.3   +182 -4    
xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java
  
  Index: BindingEntry.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java,v
  retrieving revision 1.3.4.2
  retrieving revision 1.3.4.3
  diff -u -r1.3.4.2 -r1.3.4.3
  --- BindingEntry.java 5 Oct 2002 05:26:07 -0000       1.3.4.2
  +++ BindingEntry.java 8 Oct 2002 01:31:21 -0000       1.3.4.3
  @@ -94,9 +94,13 @@
       private HashMap faults = new HashMap();
   
       // This is a map of a map.  It's a map keyed on operation name whose values
  -    // are maps keyed on parameter name.
  +    // are maps keyed on parameter name.  The ultimate values are simple Strings.
       private Map     mimeTypes; 
  -    
  +
  +    // This is a map of a map.  It's a map keyed on operation name whose values
  +    // are maps keyed on parameter name.  The ultimate values are simple
  +    // Booleans.
  +    private Map     headerParameters;
   
       /**
        * Construct a BindingEntry from a WSDL4J Binding object and the additional 
binding info:
  @@ -104,19 +108,59 @@
        * contain the input/output/fault body type information.
        */
       public BindingEntry(Binding binding, int bindingType, int bindingStyle,
  -            boolean hasLiteral, HashMap attributes, Map mimeTypes) {
  +            boolean hasLiteral, HashMap attributes, Map mimeTypes,
  +            Map headerParameters) {
           super(binding.getQName());
           this.binding = binding;
           this.bindingType = bindingType;
           this.bindingStyle = bindingStyle;
           this.hasLiteral = hasLiteral;
  -        this.attributes = attributes;
  +        if (attributes == null) {
  +            this.attributes = new HashMap();
  +        }
  +        else {
  +            this.attributes = attributes;
  +        }
           if (mimeTypes == null) {
               this.mimeTypes = new HashMap();
           }
           else {
               this.mimeTypes = mimeTypes;
           }
  +        if (headerParameters == null) {
  +            this.headerParameters = new HashMap();
  +        }
  +        else {
  +            this.headerParameters = headerParameters;
  +        }
  +    } // ctor
  +
  +    /**
  +     * This is a minimal constructor.  Everything will be set up with
  +     * defaults.  If the defaults aren't desired, then the appropriate
  +     * setter method should be called.  The defaults are:
  +     * bindingType = TYPE_UNKNOWN
  +     * bindingStyle = STYLE_DOCUMENT
  +     * hasLiteral = false
  +     * operation inputBodyTypes = USE_ENCODED
  +     * operation outputBodyTypes = USE_ENCODED
  +     * operation faultBodyTypes = USE_ENCODED
  +     * mimeTypes = null
  +
  +The caller of this constructor should
  +     * also call the various setter methods to fully fill out this object:
  +     * setBindingType, setBindingStyle, setHasLiteral, setAttribute,
  +     * setMIMEType.  
  +     */
  +    public BindingEntry(Binding binding) {
  +        super(binding.getQName());
  +        this.binding          = binding;
  +        this.bindingType      = TYPE_UNKNOWN;
  +        this.bindingStyle     = STYLE_DOCUMENT;
  +        this.hasLiteral       = false;
  +        this.attributes       = new HashMap();
  +        this.mimeTypes        = new HashMap();
  +        this.headerParameters = new HashMap();
       } // ctor
   
       /**
  @@ -174,6 +218,41 @@
       } // setMIMEType
   
       /**
  +     * Get the mime mapping for the given parameter name.
  +     * If there is none, this returns null.
  +     */
  +    public boolean isHeaderParameter(String operationName,
  +            String parameterName) {
  +        Map opMap = (Map) headerParameters.get(operationName);
  +        if (opMap == null) {
  +            return false;
  +        }
  +        else {
  +            Boolean bool = (Boolean) opMap.get(parameterName);
  +            return bool == null ? false : bool.booleanValue();
  +        }
  +    } // isHeaderParameter
  +
  +    /**
  +     * Get the header parameter map.
  +     */
  +    public Map getHeaderParameters() {
  +        return headerParameters;
  +    } // getHeaderParameters
  +
  +    /**
  +     * Set the header parameter mapping for the given parameter name.
  +     */
  +    public void setHeaderParameter(String operationName, String parameterName, 
boolean isHeader) {
  +        Map opMap = (Map) headerParameters.get(operationName);
  +        if (opMap == null) {
  +            opMap = new HashMap();
  +            headerParameters.put(operationName, opMap);
  +        }
  +        opMap.put(parameterName, new Boolean(isHeader));
  +    } // setHeaderParameter
  +
  +    /**
        * Get this entry's WSDL4J Binding object.
        */
       public Binding getBinding() {
  @@ -189,6 +268,15 @@
       } // getBindingType
   
       /**
  +     * Set this entry's binding type.
  +     */
  +    protected void setBindingType(int bindingType) {
  +        if (bindingType >= TYPE_SOAP && bindingType <= TYPE_UNKNOWN) {
  +        }
  +        this.bindingType = bindingType;
  +    } // setBindingType
  +
  +    /**
        * Get this entry's binding style.  One of BindingEntry.STYLE_RPC, 
BindingEntry.STYLE_DOCUMENT.
        */
       public int getBindingStyle() {
  @@ -196,6 +284,15 @@
       } // getBindingStyle
   
       /**
  +     * Set this entry's binding style.
  +     */
  +    protected void setBindingStyle(int bindingStyle) {
  +        if (bindingStyle == STYLE_RPC || bindingStyle == STYLE_DOCUMENT) {
  +            this.bindingStyle = bindingStyle;
  +        }
  +    } // setBindingStyle
  +
  +    /**
        * Do any of the message stanzas contain a soap:body which uses literal?
        */
       public boolean hasLiteral() {
  @@ -203,6 +300,13 @@
       } // hasLiteral
   
       /**
  +     * Set the literal flag.
  +     */
  +    protected void setHasLiteral(boolean hasLiteral) {
  +        this.hasLiteral = hasLiteral;
  +    } // setHashLiteral
  +
  +    /**
        * Get the input body type for the given operation.  One of 
BindingEntry.USE_ENCODED,
        * BindingEntry.USE_LITERAL.
        */
  @@ -217,6 +321,21 @@
       } // getInputBodyType
   
       /**
  +     * Set the input body type for the given operation.
  +     */
  +     protected void setInputBodyType(Operation operation, int inputBodyType) {
  +         OperationAttr attr = (OperationAttr) attributes.get(operation);
  +         if (attr == null) {
  +             attr = new OperationAttr();
  +             attributes.put(operation, attr);
  +         }
  +         attr.setInputBodyType(inputBodyType);
  +         if (inputBodyType == USE_LITERAL) {
  +             setHasLiteral(true);
  +         }
  +     } // setInputBodyType
  +
  +    /**
        * Get the output body type for the given operation.  One of 
BindingEntry.USE_ENCODED,
        * BindingEntry.USE_LITERAL.
        */
  @@ -231,6 +350,35 @@
       } // getOutputBodyType
   
       /**
  +     * Set the output body type for the given operation.
  +     */
  +     protected void setOutputBodyType(Operation operation, int outputBodyType) {
  +         OperationAttr attr = (OperationAttr) attributes.get(operation);
  +         if (attr == null) {
  +             attr = new OperationAttr();
  +             attributes.put(operation, attr);
  +         }
  +         attr.setOutputBodyType(outputBodyType);
  +         if (outputBodyType == USE_LITERAL) {
  +             setHasLiteral(true);
  +         }
  +     } // setOutputBodyType
  +
  +     /**
  +      * Set the body type for the given operation.  If input is true,
  +      * then this is the inputBodyType, otherwise it's the outputBodyType.
  +      * (NOTE:  this method exists to enable reusing some SymbolTable code.
  +      */
  +     protected void setBodyType(Operation operation, int bodyType, boolean input) {
  +         if (input) {
  +             setInputBodyType(operation, bodyType);
  +         }
  +         else {
  +             setOutputBodyType(operation, bodyType);
  +         }
  +     } // setBodyType
  +
  +    /**
        * Get the fault body type for the given fault of the given operation.  One of
        * BindingEntry.USE_ENCODED, BindingEntry.USE_LITERAL.
        */
  @@ -268,6 +416,18 @@
       }
   
       /**
  +     * Set the fault body type map for the given operation.
  +     */
  +     protected void setFaultBodyTypeMap(Operation operation, HashMap 
faultBodyTypeMap) {
  +         OperationAttr attr = (OperationAttr) attributes.get(operation);
  +         if (attr == null) {
  +             attr = new OperationAttr();
  +             attributes.put(operation, attr);
  +         }
  +         attr.setFaultBodyTypeMap(faultBodyTypeMap);
  +     } // setInputBodyTypeMap
  +
  +    /**
        * Contains attributes for Operations
        *  - Body type: encoded or literal
        */
  @@ -282,16 +442,34 @@
               this.faultBodyTypeMap = faultBodyTypeMap;
           }
   
  +        public OperationAttr() {
  +            this.inputBodyType = USE_ENCODED;
  +            this.outputBodyType = USE_ENCODED;
  +            this.faultBodyTypeMap = null;
  +        }
  +
           public int getInputBodyType() {
               return inputBodyType;
           }
   
  +        protected void setInputBodyType(int inputBodyType) {
  +            this.inputBodyType = inputBodyType;
  +        }
  +
           public int getOutputBodyType() {
               return outputBodyType;
           }
   
  +        protected void setOutputBodyType(int outputBodyType) {
  +            this.outputBodyType = outputBodyType;
  +        }
  +
           public HashMap getFaultBodyTypeMap() {
               return faultBodyTypeMap;
  +        }
  +
  +        protected void setFaultBodyTypeMap(HashMap faultBodyTypeMap) {
  +            this.faultBodyTypeMap = faultBodyTypeMap;
           }
       } // class OperationAttr
   
  
  
  
  1.3.4.1   +12 -1     
xml-axis/java/src/org/apache/axis/wsdl/symbolTable/Parameter.java
  
  Index: Parameter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/Parameter.java,v
  retrieving revision 1.3
  retrieving revision 1.3.4.1
  diff -u -r1.3 -r1.3.4.1
  --- Parameter.java    24 Jul 2002 16:15:03 -0000      1.3
  +++ Parameter.java    8 Oct 2002 01:31:21 -0000       1.3.4.1
  @@ -79,11 +79,14 @@
       private TypeEntry type;
       private byte mode = IN;
   
  +    private boolean inHeader = false;
  +
       public String toString() {
           return "(" + type
                   + (mimeType == null ? "" : "(" + mimeType + ")")
                   + ", " + getName() + ", "
  -                + (mode == IN ? "IN)" : mode == INOUT ? "INOUT)" : "OUT)");
  +                + (mode == IN ? "IN)" : mode == INOUT ? "INOUT)" : "OUT)"
  +                + (inHeader ? "(soap:header)" : ""));
       } // toString
   
       public QName getQName() {
  @@ -130,4 +133,12 @@
       public void setMode(byte mode) {
           this.mode = mode;
       }
  +
  +    public boolean inHeader() {
  +        return inHeader;
  +    } // inHeader
  +
  +    public void setInHeader(boolean inHeader) {
  +        this.inHeader = inHeader;
  +    } // setInHeader
   } // class Parameter
  
  
  
  1.41.4.4  +96 -67    
xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
  retrieving revision 1.41.4.3
  retrieving revision 1.41.4.4
  diff -u -r1.41.4.3 -r1.41.4.4
  --- SymbolTable.java  5 Oct 2002 05:44:34 -0000       1.41.4.3
  +++ SymbolTable.java  8 Oct 2002 01:31:21 -0000       1.41.4.4
  @@ -102,6 +102,7 @@
   import javax.wsdl.extensions.soap.SOAPBinding;
   import javax.wsdl.extensions.soap.SOAPBody;
   import javax.wsdl.extensions.soap.SOAPFault;
  +import javax.wsdl.extensions.soap.SOAPHeader;
   
   import javax.xml.rpc.holders.BooleanHolder;
   import javax.xml.rpc.holders.IntHolder;
  @@ -614,7 +615,7 @@
                       if (!importedFiles.contains(url)) {
                           importedFiles.add(url);
                           String filename = url.toString();
  -                        populate(context, null,
  +                        populate(url, null,
                                   XMLUtils.newDocument(filename), filename);
                       }
                   }
  @@ -1262,6 +1263,10 @@
                                          BindingEntry bindingEntry)
               throws IOException {
   
  +        // HACK ALERT!  This whole method is waaaay too complex.
  +        // It needs rewriting (for instance, we sometimes new up
  +        // a Parameter, then ignore it in favor of another we new up.)
  +
           // Determine if there's only one element.  For wrapped
           // style, we normally only have 1 part which is an
           // element.  But with MIME we could have any number of
  @@ -1329,6 +1334,10 @@
                   }
                   setMIMEType(param, bindingEntry == null ? null :
                           bindingEntry.getMIMEType(opName, partName));
  +                if (bindingEntry != null &&
  +                        bindingEntry.isHeaderParameter(opName, partName)) {
  +                    param.setInHeader(true);
  +                }
   
                   v.add(param);
   
  @@ -1409,6 +1418,9 @@
                       p.setType(elem.getType());
                       setMIMEType(p, bindingEntry == null ? null :
                               bindingEntry.getMIMEType(opName, partName));
  +                    if (bindingEntry.isHeaderParameter(opName, partName)) {
  +                        p.setInHeader(true);
  +                    }
                       v.add(p);
                   }
               } else {
  @@ -1424,6 +1436,9 @@
                   }
                   setMIMEType(param, bindingEntry == null ? null :
                           bindingEntry.getMIMEType(opName, partName));
  +                if (bindingEntry.isHeaderParameter(opName, partName)) {
  +                    param.setInHeader(true);
  +                }
   
                   v.add(param);
               }
  @@ -1465,40 +1480,45 @@
       private void populateBindings(Definition def) throws IOException {
           Iterator i = def.getBindings().values().iterator();
           while (i.hasNext()) {
  -            int bindingStyle = BindingEntry.STYLE_DOCUMENT;
  -            int bindingType = BindingEntry.TYPE_UNKNOWN;
               Binding binding = (Binding) i.next();
  +
  +            BindingEntry bEntry = new BindingEntry(binding);
  +            symbolTablePut(bEntry);
  +
               Iterator extensibilityElementsIterator = 
binding.getExtensibilityElements().iterator();
               while (extensibilityElementsIterator.hasNext()) {
                   Object obj = extensibilityElementsIterator.next();
                   if (obj instanceof SOAPBinding) {
  -                    bindingType = BindingEntry.TYPE_SOAP;
  +                    bEntry.setBindingType(BindingEntry.TYPE_SOAP);
                       SOAPBinding sb = (SOAPBinding) obj;
                       String style = sb.getStyle();
                       if ("rpc".equalsIgnoreCase(style)) {
  -                        bindingStyle = BindingEntry.STYLE_RPC;
  +                        bEntry.setBindingStyle(BindingEntry.STYLE_RPC);
                       }
                   }
                   else if (obj instanceof HTTPBinding) {
                       HTTPBinding hb = (HTTPBinding) obj;
                       if (hb.getVerb().equalsIgnoreCase("post")) {
  -                        bindingType = BindingEntry.TYPE_HTTP_POST;
  +                        bEntry.setBindingType(BindingEntry.TYPE_HTTP_POST);
                       }
                       else {
  -                        bindingType = BindingEntry.TYPE_HTTP_GET;
  +                        bEntry.setBindingType(BindingEntry.TYPE_HTTP_GET);
                       }
                   }
               }
   
  -            // Check the Binding Operations for use="literal"
  -            boolean hasLiteral = false;
  +            // Step through the binding operations, setting the following as 
appropriate:
  +            // - hasLiteral
  +            // - body types
  +            // - mimeTypes
  +            // - headers
               HashMap attributes = new HashMap();
               List bindList = binding.getBindingOperations();
  -            Map mimeTypes = new HashMap();
               HashMap faultMap = new HashMap(); // name to SOAPFault from WSDL4J
               
               for (Iterator opIterator = bindList.iterator(); opIterator.hasNext();) {
                   BindingOperation bindOp = (BindingOperation) opIterator.next();
  +                Operation operation = bindOp.getOperation();
                   BindingInput bindingInput = bindOp.getBindingInput();
                   BindingOutput bindingOutput = bindOp.getBindingOutput();
                   String opName = bindOp.getName();
  @@ -1514,35 +1534,11 @@
                               new String[] {opName, inputName, outputName}));
                   }
   
  -                int inputBodyType = BindingEntry.USE_ENCODED;
  -                int outputBodyType = BindingEntry.USE_ENCODED;
  -                Map opMimeTypes = new HashMap();
  -                mimeTypes.put(opName, opMimeTypes);
  -
                   // input
                   if (bindingInput != null) {
                       if (bindingInput.getExtensibilityElements() != null) {
                           Iterator inIter = 
bindingInput.getExtensibilityElements().iterator();
  -                        for (; inIter.hasNext();) {
  -                            Object obj = inIter.next();
  -                            if (obj instanceof SOAPBody) {
  -                                String use = ((SOAPBody) obj).getUse();
  -                                if (use == null) {
  -                                    throw new IOException(Messages.getMessage(
  -                                            "noUse", opName));
  -                                }
  -                                if (use.equalsIgnoreCase("literal")) {
  -                                    inputBodyType = BindingEntry.USE_LITERAL;
  -                                }
  -                                break;
  -                            }
  -                            else if (obj instanceof MIMEMultipartRelated) {
  -                                IntHolder holder = new IntHolder(inputBodyType);
  -                                opMimeTypes.putAll(collectMIMETypes(
  -                                        (MIMEMultipartRelated) obj, holder, 
bindOp));
  -                                inputBodyType = holder.value;
  -                            }
  -                        }
  +                        fillInBindingInfo(bEntry, operation, inIter, true);
                       }
                   }
   
  @@ -1550,26 +1546,7 @@
                   if (bindingOutput != null) {
                       if (bindingOutput.getExtensibilityElements() != null) {
                           Iterator outIter = 
bindingOutput.getExtensibilityElements().iterator();
  -                        for (; outIter.hasNext();) {
  -                            Object obj = outIter.next();
  -                            if (obj instanceof SOAPBody) {
  -                                String use = ((SOAPBody) obj).getUse();
  -                                if (use == null) {
  -                                    throw new IOException(Messages.getMessage(
  -                                            "noUse", opName));
  -                                }
  -                                if (use.equalsIgnoreCase("literal")) {
  -                                    outputBodyType = BindingEntry.USE_LITERAL;
  -                                }
  -                                break;
  -                            }
  -                            else if (obj instanceof MIMEMultipartRelated) {
  -                                IntHolder holder = new IntHolder(outputBodyType);
  -                                opMimeTypes.putAll(collectMIMETypes(
  -                                        (MIMEMultipartRelated) obj, holder, 
bindOp));
  -                                outputBodyType = holder.value;
  -                            }
  -                        }
  +                        fillInBindingInfo(bEntry, operation, outIter, false);
                       }
                   }
   
  @@ -1616,7 +1593,6 @@
   
                       // Check this fault to make sure it matches the one
                       // in the matching portType Operation
  -                    Operation operation = bindOp.getOperation();
                       Fault opFault = operation.getFault(bFault.getName());
                       if (opFault == null) {
                           throw new IOException(
  @@ -1633,8 +1609,12 @@
                                                                     soapFault,
                                                                     xmlType));
                   }
  +
                   // Add this fault name and info to the map
                   faultMap.put(bindOp, faults);
  +                
  +                int inputBodyType = bEntry.getInputBodyType(operation);
  +                int outputBodyType = bEntry.getOutputBodyType(operation);
   
                   // Associate the portType operation that goes with this binding
                   // with the body types.
  @@ -1645,21 +1625,70 @@
                   // NOTE:  should I include faultBodyType in this check?
                   if (inputBodyType == BindingEntry.USE_LITERAL ||
                           outputBodyType == BindingEntry.USE_LITERAL) {
  -                    hasLiteral = true;
  +                    bEntry.setHasLiteral(true);
                   }
  +                bEntry.setFaultBodyTypeMap(operation, faultMap);
               } // binding operations
  -            BindingEntry bEntry = new BindingEntry(binding, bindingType, 
bindingStyle, hasLiteral, attributes, mimeTypes);
  +
               bEntry.setFaults(faultMap);
               symbolTablePut(bEntry);
           }
       } // populateBindings
   
       /**
  -     * Collect the list of those parts that are really MIME types.
  +     * Fill in some binding information:  bodyType, mimeType, header info.
  +     */
  +    private void fillInBindingInfo(BindingEntry bEntry, Operation operation,
  +            Iterator it, boolean input) throws IOException {
  +        for (; it.hasNext();) {
  +            Object obj = it.next();
  +            if (obj instanceof SOAPBody) {
  +                setBodyType(((SOAPBody) obj).getUse(), bEntry, operation,
  +                        input);
  +            }
  +            else if (obj instanceof SOAPHeader) {
  +                SOAPHeader header = (SOAPHeader) obj;
  +                setBodyType(header.getUse(), bEntry, operation, input);
  +
  +                // Note, this only works for explicit headers - those whose
  +                // parts come from messages used in the portType's operation
  +                // input/output clauses - it does not work for implicit
  +                // headers - those whose parts come from messages not used in
  +                // the portType-s operation's input/output clauses.
  +                bEntry.setHeaderParameter(operation.getName(), header.getPart(),
  +                        true);
  +            }
  +            else if (obj instanceof MIMEMultipartRelated) {
  +                bEntry.setBodyType(operation,
  +                        addMIMETypes(bEntry, (MIMEMultipartRelated) obj,
  +                        operation), input);
  +            }
  +        }
  +    } // fillInBindingInfo
  +
  +    /**
  +     * Set the body type.
  +     */
  +    private void setBodyType(String use, BindingEntry bEntry,
  +            Operation operation, boolean input) throws IOException {
  +        if (use == null) {
  +            throw new IOException(Messages.getMessage(
  +                    "noUse", operation.getName()));
  +        }
  +        if (use.equalsIgnoreCase("literal")) {
  +            bEntry.setBodyType(operation, BindingEntry.USE_LITERAL,
  +                    input);
  +        }
  +    } // setBodyType
  +
  +    /**
  +     * Add the parts that are really MIME types as MIME types.
  +     * A side effect is to return the body Type of the given
  +     * MIMEMultipartRelated object.
        */
  -    private Map collectMIMETypes(MIMEMultipartRelated mpr, IntHolder bodyType,
  -            BindingOperation bindOp) throws IOException {
  -        HashMap mimeTypes = new HashMap();
  +    private int addMIMETypes(BindingEntry bEntry, MIMEMultipartRelated mpr,
  +            Operation op) throws IOException {
  +        int bodyType = BindingEntry.USE_ENCODED;
           List parts = mpr.getMIMEParts();
           Iterator i = parts.iterator();
           while (i.hasNext()) {
  @@ -1670,22 +1699,22 @@
                   Object obj = j.next();
                   if (obj instanceof MIMEContent) {
                       MIMEContent content = (MIMEContent) obj;
  -                    mimeTypes.put(content.getPart(), content.getType());
  +                    bEntry.setMIMEType(op.getName(), content.getPart(), 
content.getType());
                   }
                   else if (obj instanceof SOAPBody) {
                       String use = ((SOAPBody) obj).getUse();
                       if (use == null) {
                           throw new IOException(Messages.getMessage(
  -                                "noUse", bindOp.getName()));
  +                                "noUse", op.getName()));
                       }
                       if (use.equalsIgnoreCase("literal")) {
  -                        bodyType.value = BindingEntry.USE_LITERAL;
  +                        bodyType = BindingEntry.USE_LITERAL;
                       }
                   }
               }
           }
  -        return mimeTypes;
  -    } // collectMIMETypes
  +        return bodyType;
  +    } // addMIMETypes
   
       /**
        * Populate the symbol table with all of the ServiceEntry's from the Definition.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.30.2.1  +1 -1      xml-axis/java/xmls/properties.xml
  
  Index: properties.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/xmls/properties.xml,v
  retrieving revision 1.30
  retrieving revision 1.30.2.1
  diff -u -r1.30 -r1.30.2.1
  --- properties.xml    25 Sep 2002 19:04:00 -0000      1.30
  +++ properties.xml    8 Oct 2002 01:31:21 -0000       1.30.2.1
  @@ -12,7 +12,7 @@
   <property file="${axis.home}/build.properties"/>
   <property file="${user.home}/build.properties"/>
   
  -<property name="axis.version" value="1.0rc2" />
  +<property name="axis.version" value="1.0" />
   <property name="name" value="axis" />
   <property name="Name" value="Axis" />
   <property name="year" value="2002" />
  
  
  


Reply via email to