axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ru...@apache.org
Subject cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsdl Java2WsdlAntTask.java
Date Mon, 30 Sep 2002 13:19:30 GMT
rubys       2002/09/30 06:19:30

  Modified:    java     Tag: axis1_0 build.xml buildTest.xml
               java/docs Tag: axis1_0 architecture-guide.html
                        developers-guide.html integration-guide.html
                        reference.html subsystems.jpg user-guide.html
               java/lib Tag: axis1_0 commons-logging.jar
               java/samples/jms Tag: axis1_0 build.xml
               java/samples/message Tag: axis1_0 MessageService.java
                        TestMsg.java deploy.wsdd
               java/src/org/apache/axis Tag: axis1_0 SimpleChain.java
               java/src/org/apache/axis/client Tag: axis1_0 Call.java
               java/src/org/apache/axis/configuration Tag: axis1_0
                        EngineConfigurationFactoryFinder.java
                        EngineConfigurationFactoryServlet.java
               java/src/org/apache/axis/deployment/wsdd Tag: axis1_0
                        WSDDJAXRPCHandlerInfo.java
                        WSDDJAXRPCHandlerInfoChain.java WSDDService.java
               java/src/org/apache/axis/description Tag: axis1_0
                        OperationDesc.java ServiceDesc.java
               java/src/org/apache/axis/encoding Tag: axis1_0
                        DefaultSOAP12TypeMappingImpl.java
                        DefaultTypeMappingImpl.java
                        DeserializationContextImpl.java
                        SerializationContextImpl.java TypeMappingImpl.java
                        TypeMappingRegistryImpl.java
               java/src/org/apache/axis/encoding/ser Tag: axis1_0
                        ArraySerializerFactory.java
                        Base64SerializerFactory.java
                        BaseDeserializerFactory.java
                        BaseSerializerFactory.java BeanSerializer.java
                        BeanSerializerFactory.java
                        CalendarSerializerFactory.java
                        DateSerializerFactory.java
                        ElementSerializerFactory.java
                        EnumSerializerFactory.java
                        HexSerializerFactory.java
                        JAFDataHandlerSerializerFactory.java
                        MapSerializerFactory.java
                        QNameSerializerFactory.java SimpleDeserializer.java
                        VectorSerializerFactory.java
               java/src/org/apache/axis/i18n Tag: axis1_0
                        resource.properties
               java/src/org/apache/axis/message Tag: axis1_0
                        RPCElement.java RPCParam.java
               java/src/org/apache/axis/providers/java Tag: axis1_0
                        JavaProvider.java
               java/src/org/apache/axis/server Tag: axis1_0
                        JNDIAxisServerFactory.java
               java/src/org/apache/axis/transport/http Tag: axis1_0
                        AxisServlet.java ServletEndpointContextImpl.java
               java/src/org/apache/axis/wsdl Tag: axis1_0 Java2WSDL.java
               java/src/org/apache/axis/wsdl/fromJava Tag: axis1_0
                        Emitter.java Types.java
               java/src/org/apache/axis/wsdl/toJava Tag: axis1_0
                        Emitter.java JavaDeployWriter.java
                        JavaStubWriter.java
               java/test/MSGDispatch Tag: axis1_0 TestService.java
               java/test/encoding Tag: axis1_0 TestAttributes.java
                        TestDeser1999.java TestDeser2000.java
                        TestDeser2001.java
               java/test/soap Tag: axis1_0 PackageTests.java
                        TestHandler.java TestHeaderAttrs.java
                        TestService.java
               java/test/wsdl/inout Tag: axis1_0 inout.wsdl
               java/test/wsdl/wrapped_inout Tag: axis1_0
                        WrappedInOutTestCase.java
               java/tools/org/apache/axis/tools/ant/wsdl Tag: axis1_0
                        Java2WsdlAntTask.java
  Added:       java/src/org/apache/axis/discovery Tag: axis1_0
                        DiscoverOldNamesInManagedProperties.java
               java/src/org/apache/axis/encoding/ser Tag: axis1_0
                        SimpleSerializerFactory.java
               java/test/soap Tag: axis1_0 TestFaultHandler.java
                        TestOnFaultHeaders.java
               java/test/wsdl/esr Tag: axis1_0 EsrTestBindingImpl.java
                        EsrTestServiceTestCase.java build.xml esr.wsdl
  Removed:     java     Tag: axis1_0 buildPreTestTaskdefs.xml
               java/src/org/apache/axis/encoding/ser Tag: axis1_0
                        SimpleNonPrimitiveSerializerFactory.java
                        SimplePrimitiveSerializerFactory.java
               java/src/org/apache/axis/transport/jms Tag: axis1_0
                        SonicConstants.java
               java/test/functional/ant Tag: axis1_0
                        RunAxisFunctionalTestsTask.java
               java/test/wsdl Tag: axis1_0 Java2WsdlAntTask.java
                        Wsdl2javaAntTask.java Wsdl2javaTestSuite.xml
                        build.xml
  Log:
  Bowing to the overwhelming consensus that every change made to date needs
  to go into the release, I've rolled everything in.
  
  This brings up the question: at what point should we really freeze?  Do
  we think 12 seconds before the release is enough?  Or should it be 4?
  
  Meanwhile, the diffs below will give everybody who voted +1 to roll
  everything in a second chance to review the changes.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.196.2.2 +20 -41    xml-axis/java/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/build.xml,v
  retrieving revision 1.196.2.1
  retrieving revision 1.196.2.2
  diff -u -r1.196.2.1 -r1.196.2.2
  --- build.xml	25 Sep 2002 20:03:06 -0000	1.196.2.1
  +++ build.xml	30 Sep 2002 13:19:22 -0000	1.196.2.2
  @@ -151,9 +151,6 @@
       <copy file="${commons-discovery.jar}" toDir="${build.lib}"/>
       <copy file="${log4j-core.jar}" toDir="${build.lib}"/>
   
  -<!-- stub in my task generations -->
  -    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}" antfile="buildPreTestTaskdefs.xml" />
  -
        <!--  Build the new org.apache.axis.tools.ant stuff -->
        <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/tools" antfile="build.xml" />
        <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/tools" antfile="build.xml" target="test"/>
  @@ -245,42 +242,6 @@
       </ant>
     </target>
   
  -  <!-- =================================================================== -->
  -  <!-- Functional tests, no dependencies (for no-build testing)            -->
  -  <!-- =================================================================== -->
  -  <target name="functional-tests-only" depends="printEnv"
  -    description="functional tests without a rebuild; the Axis Ant task must be in ANT_HOME/lib"
  -    >
  -
  -    <!-- The Axis Ant task must be built (into ANT_HOME/lib)... -->
  -    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/test" antfile="build_functional_tests.xml" target="functional-tests-only"/>
  -
  -    <!--
  -    ...and then the functional tests can be run.  If this step yields a
  -    "can't find class test.functional.ant.RunAxisFunctionalTestsTask",
  -    verify that your Ant classpath contains ANT_HOME/lib.
  -    -->
  -
  -  </target>
  -
  -  <target name="functional-tests-secure-only" depends="printEnv"
  -    description="functional secure tests without a rebuild;"
  -    >
  -    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/test" antfile="build_functional_tests.xml" target="functional-tests-secure-only"/>
  -  </target>
  -
  -
  -  <!-- =================================================================== -->
  -  <!-- Functional tests, no server (for testing under debugger)            -->
  -  <!-- =================================================================== -->
  -  <target name="functional-tests-noserver" depends="compile, buildFunctional"
  -    description="functional tests, no server">
  -    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/test" antfile="build_functional_tests.xml" target="junit-functional-noserver">
  -      <property name="test.functional.usefile" value="${test.functional.usefile}"/>
  -    </ant>
  -
  -  </target>
  -
     <target name="runComponentTests" depends="compile, buildTest">
        <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}" antfile="buildTest.xml" target="componentTest"/>
     </target>
  @@ -292,8 +253,11 @@
       <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}" antfile="buildTest.xml" target="functional-tests"/>
     </target>
   
  -  <!-- Security only tests, with full dependencies -->
  -  <target name="secure-tests" depends="compile, buildTest, junit, functional-tests-secure-only">
  +  <target name="functional-tests-secure-only" depends="buildFunctional" description="secure functional tests">
  +    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}" antfile="buildTest.xml" target="functional-tests-secure-only">
  +      <property name="junit.present" value="${junit.present}"/>
  +    </ant>
  +
     </target>
   
     <!-- All tests -->
  @@ -442,6 +406,21 @@
         <fileset dir="${build.javadocs}"/>
       </copy>
       <copy file="../LICENSE" tofile="${dist.dir}/LICENSE"/>
  +  </target>
  +
  +  <!-- =================================================================== -->
  +  <!-- Interop 3                                                           -->
  +  <!-- =================================================================== -->
  +  <target name="interop3" depends="buildTest"
  +      description="run the round3 interop tests">
  +    <ant dir="test/wsdl/interop3/import1"/>
  +    <ant dir="test/wsdl/interop3/import2"/>
  +    <ant dir="test/wsdl/interop3/import3"/>
  +    <ant dir="test/wsdl/interop3/compound1"/>
  +    <ant dir="test/wsdl/interop3/compound2"/>
  +    <ant dir="test/wsdl/interop3/docLit"/>
  +    <ant dir="test/wsdl/interop3/docLitParam"/>
  +    <ant dir="test/wsdl/interop3/rpcEnc"/>
     </target>
   
     <!-- =================================================================== -->
  
  
  
  1.40.4.1  +14 -0     xml-axis/java/buildTest.xml
  
  Index: buildTest.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/buildTest.xml,v
  retrieving revision 1.40
  retrieving revision 1.40.4.1
  diff -u -r1.40 -r1.40.4.1
  --- buildTest.xml	19 Sep 2002 15:58:00 -0000	1.40
  +++ buildTest.xml	30 Sep 2002 13:19:22 -0000	1.40.4.1
  @@ -237,6 +237,20 @@
     </target>
   
     <!-- =================================================================== -->
  +  <!-- Run secure functional tests ONLY                                    -->
  +  <!-- =================================================================== -->
  +  <target name="functional-tests-secure-only" if="junit.present">
  +
  +    <runaxisfunctionaltests
  +      url="http://localhost:8088"
  +      startTarget1="start-functional-test-tcp-server"
  +      startTarget2="start-functional-test-http-server"
  +      testTarget="junit-functional-secure"
  +      stopTarget="stop-functional-test-http-server-secure" />
  +
  +  </target>
  +
  +<!-- =================================================================== -->
     <!-- Run simple tests                                                -->
     <!-- =================================================================== -->
     <target name="simple-tests" depends="setenv" if="junit.present" >
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.16.4.1  +1 -1      xml-axis/java/docs/architecture-guide.html
  
  Index: architecture-guide.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/architecture-guide.html,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- architecture-guide.html	4 Sep 2002 22:47:03 -0000	1.16
  +++ architecture-guide.html	30 Sep 2002 13:19:22 -0000	1.16.4.1
  @@ -152,7 +152,7 @@
   <p>The following diagram shows the layering of subsystems. The lower layers
   are independent of the higher layers. The 'stacked' boxes represent mutually
   independent, although not necessary mutually exclusive, alternatives. For
  -example, the HTTP and SMTP transports are independent of each other but
  +example, the HTTP, SMTP, and JMS transports are independent of each other but
   may be used together.
   <p><img SRC="subsystems.jpg">
   <p>
  
  
  
  1.28.4.1  +115 -19   xml-axis/java/docs/developers-guide.html
  
  Index: developers-guide.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/developers-guide.html,v
  retrieving revision 1.28
  retrieving revision 1.28.4.1
  diff -u -r1.28 -r1.28.4.1
  --- developers-guide.html	10 Sep 2002 21:02:14 -0000	1.28
  +++ developers-guide.html	30 Sep 2002 13:19:22 -0000	1.28.4.1
  @@ -37,6 +37,7 @@
   <br><a href="#Exception Handling">Exception Handling</a>
   <br><a href="#Compile And Run">Compile and Run</a>
   <br><a href="#Internationalization">Internationalization</a>
  +<br>&nbsp;&nbsp;&nbsp;<a href="#Extending Message Files">Extending Message Files</a>
   <br><a href="#Adding Testcases">Adding Testcases</a>
   <br><a href="#TestStructure">Test and Samples Structure</a>
   <br><a href="#CodeChecks">Adding Source Code Checks</a>
  @@ -132,14 +133,14 @@
   For example, <code>org.apache.axis.components.logger.LogFactory</code> is the factory,
   or discovery mechanism, for the logger component/service.
   <p>
  -The <code>org.apache.axis.components.bytecode</code> package demonstrates
  -both a factory, and supporting classes for different bytecode tools used
  -by axis.  This is representative of a pluggable component that uses
  -external tooling, but isolates them behind a 'thin' wrapper to AXIS,
  -providing only the limited interface required by AXIS.
  +The <code>org.apache.axis.components.image</code> package demonstrates
  +both a factory, and supporting classes for different image tools used
  +by AXIS.  This is representative of a pluggable component that uses
  +external tooling, isolating it behind a 'thin' wrapper to AXIS that
  +provides only a limited interface to meet AXIS minimal requirements.
   This allows future designers
   and implementors to gain an explicit understanding of the AXIS's
  -requirements on these tools.
  +specific requirements on these tools.
   <h3>
   <a NAME="Logging/Tracing"></a>Logging/Tracing</h3>
   AXIS logging and tracing is based on the Logging component of the
  @@ -358,8 +359,8 @@
   AXIS is in the process of moving away from using system properties
   as the primary point of internal configuration.
   Avoid calling <code>System.getProperty()</code>,
  -and instead call <code>AxisEngine.getGlobalProperty</code>.
  -<code>AxisEngine.getGlobalProperty</code> will
  +and instead call <code>AxisProperties.getProperty</code>.
  +<code>AxisProperties.getProperty</code> will
   call <code>System.getProperty</code>, and will (eventually)
   query other sources of configuration information.
   <p>
  @@ -367,11 +368,6 @@
   global configuration system to be redesigned
   to better support multiple AXIS engines in a
   single JVM.
  -<p>
  -A <code>getGlobalProperty()</code> method has also been added
  -to <code>BasicHandler</code>.
  -Handlers (ancestors of <code>BasicHandler</code>) should use this local method
  -rather than accessing <code>AxisEngine.getGlobalProperty</code>.
   
   <h2>
   <a NAME="Exception Handling"></a>Exception Handling</h2>
  @@ -574,17 +570,20 @@
   If you make changes to the source code that results in the generation of
   text (error messages or debug information), you must follow the following
   guidelines to ensure that your text is properly translated.
  -<br>&nbsp;
  +<h3>
  +<a NAME="Developer Guidelines"></a>Developer Guidelines</h3>
   <ol>
   <li>
   Your text string should be added as a property to the resource.properties
  -file (xml-axis/java/src/org/apache/axis/utils/resource.properties).&nbsp;
  +file (xml-axis/java/src/org/apache/axis/i18n/resource.properties).&nbsp;
   Note that some of the utility applications (i.e. tcpmon) have their own
  -resource property files (tcpmon.properties).</li>
  -
  +resource property files (tcpmon.properties).
  +</li>
   <br>&nbsp;
   <li>
   The resource.properties file contains translation and usage instructions.&nbsp;
  +Entries in a message resource file are of the form
  +<font color="#009900">&lt;key&gt;=&lt;message&gt;</font>.
   Here is an example message:</li>
   <p>
   <p><font color="#009900">sample00=My name is {0}, and my title is {1}.</font>
  @@ -601,11 +600,12 @@
   </ol>
   <li>
   The code should use the
  -static method org.apache.axis.utils.JavaUtils.getMessage
  +static method org.apache.axis.i18n.Messages.getMessage
   to obtain the text and add inserts.&nbsp; Here is an example usage:</li>
   <p>
  -<p><font color="#009900">JavaUtils.getMessage("sample00", "Rich Scheuerle",
  +<p><font color="#009900">Messages.getMessage("sample00", "Rich Scheuerle",
   "Software Developer");</font>
  +
   <br>&nbsp;
   <li>
   <font color="#000000">All keys in the properties file should use the syntax
  @@ -627,8 +627,104 @@
   <li>
   <font color="#000000">All new entries should be placed at the bottom of
   the file to ease translation.</font></li>
  +
  +<br>&nbsp;
  +<li>
  +<font color="#000000">We may occasionally want to trim the properties file of old data, but this should only be done on major releases. </font></li>
   </ol>
   </ol>
  +
  +<h4>
  +<a NAME="Example"></a>Example</h4>
  +
  +Consider the following statement:
  +<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +if ( operationName == null )</code>
  +<br><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +throw new AxisFault( "No operation name specified" );</code>
  +<p>
  +We will add an entry into
  +org/apache/axis/i18n/resource.properties:
  +<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noOperation=No operation name specified.</code>
  +<p>And change the code to read:
  +<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +if ( operationName == null )</code>
  +<br><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  +throw new AxisFault(Messages.getMessage("noOperation"));</code>
  +
  +<h3>
  +<a NAME="Interface"></a>Interface</h3>
  +
  +AXIS uses the standard Java internationalization class
  +<code>java.util.ResourceBundle</code>
  +to access property files and message strings,
  +and uses <code>java.text.MessageFormat</code>
  +to format the strings using variables.
  +AXIS provides a single class <code>org.apache.axis.i18n.Messages</code>
  +that manages both ResourceBundle and MessageFormat classes.
  +Messages methods are:
  +
  +<p><code>public static java.util.ResourceBundle getResourceBundle();</code>
  +<p><code>public static String getMessage(String key) throws java.util.MissingResourceException;</code>
  +<p><code>public static String getMessage(String key, String var) throws java.util.MissingResourceException;</code>
  +<p><code>public static String getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;</code>
  +<p><code>public static String getMessage(String key, String[] vars) throws java.util.MissingResourceException;</code>
  +
  +<p>AXIS programmers can work with the resource bundle directly via a call
  +to <code>Messages.getResourceBundle()</code>,
  +but the <code>getMessage()</code>
  +methods should be used instead for two reasons:
  +<ol>
  +<li>
  +It's a shortcut.  It is cleaner to call</li>
  +
  +<ol><code>Messages.getMessage("myMsg00");</code></ol>
  +than
  +<ol><code>Messages.getResourceBundle().getString("myMsg00");</code></ol>
  +
  +<br>
  +<li>
  +The <code>getMessage</code> methods enable messages with variables.</li>
  +</ol>
  +
  +<h4>
  +The getMessage methods</h4>
  +If you have a message with no variables
  +<ol><code>myMsg00=This is a string.</code></ol>
  +then simply call
  +<ol><code>Messages.getMessage("myMsg00");</code></ol>
  +
  +<p><br>If you have a message with variables, use the syntax
  +<font face="Courier New,Courier">"{X}"</font>
  +where <code>X</code> is
  +the number of the variable, starting at 0. For example:
  +<ol><code>myMsg00=My {0} is {1}.</code></ol>
  +then call:
  +<ol><code>Messages.getMessage("myMsg00","name", "Russell");</code></ol>
  +and the resulting string will be:&nbsp; "My name is Russell."
  +<p>You could also call the String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>:
  +<ol><code>Messages.getMessage("myMsg00", new String[] {"name", "Russell"});</code></ol>
  +
  +<p><br>The String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  +is all that is necessary, but the vast majority of messages will have 0,
  +1 or 2 variables, so the other <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  +methods are provided as a convenience to avoid the complexity of the String
  +array version.
  +<p>Note that the <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  +methods throw <font face="Courier New,Courier"><font size=-1>MissingResourceException</font></font>
  +if the resource cannot be found.&nbsp; And ParseException if there are
  +more {X} entries than arguments.&nbsp; These exceptions are <font face="Courier New,Courier"><font size=-1>RuntimeException'</font></font>s,
  +so the caller doesn't have to explicitly catch them.
  +<p>The resource bundle properties file is org/apache/axis/i18n/resource.properties.
  +
  +<h3>
  +<a NAME="Extending Message Files"></a>Extending Message Files</h3>
  +Generally,
  +within AXIS all messages are placed in
  +org.apache.axis.i18n.resource.properties.
  +There are facilities for extending the messages without
  +modifying this file for integration or 3rd party extensions to AXIS.
  +See the <a href="integration-guide.html#Extending Message Files"/>Integration Guide</a> for details.
   
   <h2>
   <a NAME="Adding Testcases"></a><font color="#000000">Adding Testcases</font></h2>
  
  
  
  1.10.4.1  +333 -117  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.10
  retrieving revision 1.10.4.1
  diff -u -r1.10 -r1.10.4.1
  --- integration-guide.html	20 Sep 2002 20:55:02 -0000	1.10
  +++ integration-guide.html	30 Sep 2002 13:19:22 -0000	1.10.4.1
  @@ -36,6 +36,7 @@
   <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>
  @@ -213,38 +214,168 @@
   
   <h3>
   <a NAME="Configuration Plug"></a>Configuration</h3>
  -How can AXIS fit into existing configuration systems?
  -<ul>
  -<li>
  -Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  -compliance?</li>
  +<br>The internal data model used by AXIS is based on
  +an AXIS specific data model: Web Services Deployment Descriptor (WSDD).
  +AXIS initially obtains the WSDD information for a
  +service from an instance of <code>org.apache.axis.EngineConfiguration</code>.
  +
  +<p>The EngineConfiguration is provided by an implementation of
  +the interface <code>org.apache.axis.EngineConfigurationFactory</code>,
  +which currently provides methods that return client and server
  +configurations.
   
  +<p>Our focus will be how to define the implemenation class for
  +<code>EngineConfigurationFactory</code>.
  +
  +<ul>
   <li>
  -Interfaces</li>
  +Justification/Rationale</li>
  +<br>While the default behaviour is sufficient for general use of
  +AXIS, integrating AXIS into an existing application server may
  +require an alternate deployment model.
  +A customized implementation of the EngineConfigurationFactory
  +would map from the hosts deployment model to AXIS's internal
  +deployment model.
  +<br>&nbsp;
   
   <li>
   Mechanism</li>
  +<br>The relevant sequence of instructions used to obtain
  +configuration information and initialize AXIS is as follows:
  +<ul>
  +<br>
  +<code>EngineConfigurationFactory factory = EngineConfigurationFactoryFinder(someContext);</code>
  +<br>
  +<code>EngineCongfiguration config = factory.getClientEngineConfig();</code>
  +<br>
  +<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
  +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
  +locates the appropariate implementation of
  +EngineConfigurationFactory to be used, if any.
   
  +<p>EngineConfigurationFactoryFinder works as follows:
  +<br>&nbsp;
   <ul>
  +<li>Obtain a list of classes that implement
  +<code>org.apache.axis.EngineConfigurationFactory</code>,
  +in the following order:
  +<ul>
  +<li>
  +The value of the system property <code>axis.EngineConfigFactory</code>.
  +</li>
  +<li>
  +The value of the system property
  +<code>org.apache.axis.EngineConfigurationFactory</code>.
  +</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.
  +</li>
   <li>
  -Life cycle</li>
  +<code>org.apache.axis.configuration.EngineConfigurationFactoryServlet</code>
  +</li>
  +<li>
  +<code>org.apache.axis.configuration.EngineConfigurationFactoryDefault</code>
  +</li>
  +</ul>
  +</li>
  +
  +<br>
  +<li>Classes implementing EngineConfigurationFactory are required to
  +provide the method
  +<br>&nbsp;
  +<ul>
  +<code>public static EngineConfigurationFactory newFactory(Object)</code>
  +</ul>
  +<br>
  +This method is called, passing <code>someContext</code> as the parameter.
  +</li>
   
  +<br>&nbsp;
   <li>
  -Exception handling - in general; plug-in shouldn't throw any exceptions
  -- does runtime ignore? Log?)</li>
  +The implementation class is required to examine runtime environment
  +(to optionally include the parameter).
  +If the environment can provide informatin required by
  +an EngineConfigurationFactory,
  +then the <code>newFactory()</code> may return in instance of that factory.
  +Otherwise, <code>newFactory()</code> must return null.
  +</li>
   
  +<br>&nbsp;
   <li>
  -Multiple thread support?&nbsp; Ie., is synchronization required?</li>
  +EngineConfigurationFactoryFinder returns the first non-null
  +factory it obtains.
  +</li>
   </ul>
  +<br>&nbsp;
  +
   
   <li>
  -Configuration/reconfiguration</li>
  +Default behavior</li>
  +<br>The default behaviour is provided by the last two elements
  +of the list of implementing classes, as described above:
  +<ul>
  +<li>
  +<code>org.apache.axis.configuration.EngineConfigurationFactoryServlet</code>
  +<br><code>newFactory(obj)</code> is called.
  +If <code>obj instanceof javax.servlet.ServletContext</code> is true,
  +then an instance of this class is returned.
  +<p>The default Servlet factory is expected to function as a server
  +(as a client it will incorrectly attempt
  +to load the WSDD file <code>client-config.wsdd</code>
  +from the current working directory!).
   
  +<p>The default Servlet factory will open the Web Application resource
  +<code>/WEB-INF/server-config.wsdd</code>:
  +<ul>
   <li>
  -Default behavior if not plugged.</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).
  +</li>
  +<li>
  +If it does not exist as a file, then an attempt is made
  +to access it as a resource stream (getResourceAsStream),
  +which works for JAR/WAR file contents.
  +</li>
  +<li>
  +If the resource is simply not available,
  +an attempt is made to create it as a file.
  +</li>
  +<li>
  +If all above attempts fail, a final attempt is
  +made to access <code>org.apache.axis.server.server-config.wsdd</code>
  +as a data stream.
  +</li>
  +</ul>
   
  +</li>
  +<br>&nbsp;
   <li>
  -Example</li>
  +<code>org.apache.axis.configuration.EngineConfigurationFactoryDefault</code>
  +<br><code>newFactory(obj)</code> is called.
  +If <code>obj</code> is null
  +then an instance of this class is returned.
  +A non-null <code>obj</code> is presumed to
  +require a non-default factory.
  +
  +<p>The default factory will load the WSDD files
  +<code>client-config.wsdd</code> or <code>server-config.wsdd</code>,
  +as appropriate, from the current working directory.
  +The names of these files may be changed using the
  +system properties <code>axis.ClientConfigFile</code>
  +and <code>axis.ServerConfigFile</code>,
  +respectively.
  +</li>
  +</ul>
  +
   </ul>
   
   <h3>
  @@ -285,104 +416,74 @@
   
   <h3>
   <a NAME="Internationalization Plug"></a>Internationalization</h3>
  -The plug point for internationalization isn't a framework, but simply a
  -property file of the strings used in AXIS.
  -<br>&nbsp;
  +AXIS supports internationalization by providing
  +both a property file of the strings used in AXIS,
  +and an extension mechanism that facilitates
  +accessing internal AXIS messages and extending the messages
  +available to integration code based on existing AXIS code.
  +
  +<h4>
  +<a NAME="Translation"></a>Translation</h4>
  +
   <ul>
   <li>
   Justification/Rationale</li>
   
  -<br>In order for readers of languages other than English to be comfortable
  -with AXIS, we provide a mechanism for the strings used in AXIS to be translated.&nbsp;
  -We do not provide any translations in AXIS; we merely provide a means by
  -which translators can easily plug in their translations.
  +<br>
  +In order for readers of languages other than English
  +to be comfortable with AXIS,
  +we provide a mechanism for the strings used in AXIS to be translated.
  +We do not provide any translations in AXIS;
  +we merely provide a means by which translators
  +can easily plug in their translations.
   <br>&nbsp;
  +
   <li>
  -Interfaces</li>
  +Mechanism</li>
  +<br>
  +AXIS provides english messages in the
  +Java resource named
  +org.apache.axis.i18n.resource.properties
  +(in the source tree, the file is named
  +xml-axis/java/src/org/apache/axis/i18n/resource.properties).
  +
  +<p>AXIS makes use of the Java internationalization mechanism -
  +i.e., a java.util.ResourceBundle backed by a properties file -
  +and the java.text.MessageFormat class to substitute
  +parameters into the message text.
   
  -<br>AXIS uses the standard Java internationalization class:&nbsp; <font face="Courier New,Courier"><font size=-1>PropertyResourceBundle</font></font>.&nbsp;
  -To make this class easy to use, there are a number of methods on JavaUtils
  -that are used to get the messages within the resource bundle.
  -<p><font face="Courier New,Courier"><font size=-1>public static java.util.ResourceBundle
  -getMessageResourceBundle();</font></font>
  -<p><font face="Courier New,Courier"><font size=-1>public static String
  -getMessage(String key) throws java.util.MissingResourceException;</font></font>
  -<p><font face="Courier New,Courier"><font size=-1>public static String
  -getMessage(String key, String var) throws java.util.MissingResourceException;</font></font>
  -<p><font face="Courier New,Courier"><font size=-1>public static String
  -getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;</font></font>
  -<p><font face="Courier New,Courier"><font size=-1>public static String
  -getMessage(String key, String[] vars) throws java.util.MissingResourceException;</font></font>
  -<p>AXIS programmers can work with the resource bundle directly via a call
  -to <font face="Courier New,Courier"><font size=-1>JavaUtils.getMessageResourceBundle</font></font>,
  -but the <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  -methods should be used instead for two reasons:
  -<br>&nbsp;
  -<ol>
  -<li>
  -It's a shortcut.&nbsp; It is cleaner to call</li>
  -
  -<ol><font face="Courier New,Courier"><font size=-1>JavaUtils.getMessage("myMsg00");</font></font></ol>
  -than
  -<ol><font face="Courier New,Courier"><font size=-1>JavaUtils.getMessageResourceBundle().getString("myMsg00");</font></font></ol>
  -
  -<li>
  -The <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  -methods enable messages with variables.</li>
  -</ol>
  +<ul>
  +<br>
  +<li>
  +java.util.ResourceBundle retrieves message text
  +from a property file using a key provided by the program.
  +Entries in a message resource file are of the form
  +&lt;key&gt;=&lt;message&gt;.
  +</li>
   
  -<h4>
  -The getMessage methods</h4>
  -If you have a message with no variables
  -<ol><font face="Courier New,Courier"><font size=-1>myMsg00=This is a string.</font></font></ol>
  -then simply call
  -<ol><font face="Courier New,Courier"><font size=-1>JavaUtils.getMessage("myMsg00");</font></font></ol>
  -
  -<p><br>If you have a message with variables, use the syntax <font face="Courier New,Courier">"{X}"</font>
  -where <font face="Courier New,Courier"><font size=-1>X</font></font> is
  -the number of the variable, starting at 0.&nbsp; For example:
  -<ol><font face="Courier New,Courier"><font size=-1>myMsg00=My {0} is {1}.</font></font></ol>
  -then call:
  -<ol><font face="Courier New,Courier"><font size=-1>JavaUtils.getMessage("myMsg00",
  -"name", "Russell");</font></font></ol>
  -and the resulting string will be:&nbsp; "My name is Russell."
  -<p>You could also call the String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>:
  -<ol><font face="Courier New,Courier"><font size=-1>JavaUtils.getMessage("myMsg00",
  -new String[] {"name", "Russell"});</font></font></ol>
  -
  -<p><br>The String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  -is all that is necessary, but the vast majority of messages will have 0,
  -1 or 2 variables, so the other <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  -methods are provided as a convenience to avoid the complexity of the String
  -array version.
  -<p>Note that the <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
  -methods throw <font face="Courier New,Courier"><font size=-1>MissingResourceException</font></font>
  -if the resource cannot be found.&nbsp; And ParseException if there are
  -more {X} entries than arguments.&nbsp; These exceptions are <font face="Courier New,Courier"><font size=-1>RuntimeException'</font></font>s,
  -so the caller doesn't have to explicitly catch them.
  -<p>The resource bundle properties file is org/apache/axis/i18n/resource.properties.
   <br>&nbsp;
   <li>
  -Mechanism</li>
  +java.text.MessageFormat substitutes variables for
  +markers in the message text.
  +Markers use the syntax
  +<font face="Courier New,Courier">"{X}"</font>
  +where <code>X</code> is
  +the number of the variable, starting at 0.
  +</li>
  +</ul>
  +
  +<p>For example: <code>myMsg00=My {0} is {1}.</code>
  +
  +<p>Translation requires creating an
  +alternate version of the property file provided by AXIS
  +for a target language.
  +The JavaDoc for <code>java.utils.ResourceBundle</code>
  +provides details on how to identify different property
  +files for different locales.
   
  -<br>The Java internationalization mechanism - i.e., a ResourceBundle backed
  -by a properties file - and the java.text.MessageFormat class, are sufficient
  -for our needs.
  -<p>Entries in the properties file must follow the pattern:&nbsp; <font face="Courier New,Courier"><font size=-1>&lt;string>&lt;2-digit
  -suffix></font></font>.
  -<p>Entries should be ordered in the properties file alphabetically by key.
  -<p>Entries in the properties file must never be changed.&nbsp; If a code
  -change requires a message change, don't change the existing message; instead
  -create a new entry, incrementing the 2-digit suffix.&nbsp; This must be
  -done for two reasons:&nbsp; 1.&nbsp; You don't know whether the message
  -is being used elsewhere.&nbsp; 2.&nbsp; So the translator only has to be
  -aware of, and translate, the new strings.&nbsp; Without this restriction,
  -every time translators are given the properties file to translate, they
  -would have to translate all strings all the time.
  -<ul>&nbsp;</ul>
  -We may occasionally want to trim the properties file of old data, but this
  -should only be done on major releases.
  -<ul>&nbsp;</ul>
  +<p>For details on using AXIS's internationalization tools,
  +see the <a href="developers-guide.html">Developer's Guide</a>.
  +<br>&nbsp;
   
   <li>
   Default behavior</li>
  @@ -390,26 +491,104 @@
   <br>The default behavior, meaning what happens when a translated file doesn't
   exist for a given locale, is to fall back on the English-language properties
   file.&nbsp; If that file doesn't exist (unlikely unless something is seriously
  -wrong), AXIS with throw an exception with an English-language reason message.
  +wrong), AXIS will throw an exception with an English-language reason message.
   <br>&nbsp;
  +</ul>
  +
  +<h4>
  +<a NAME="Extending Message Files"></a>Extending Message Files</h4>
  +AXIS provides a Message file extension mechanism
  +that allows AXIS-based code to use AXIS message keys,
  +as well as new message keys unique to the extended code.
  +
  +<ul>
  +<li>
  +Justification/Rationale</li>
  +<br>
  +AXIS provides pluggable interfaces for
  +various AXIS entities, including EngineConfigurationFactory's,
  +Provides, and Handlers.
  +AXIS also provides a variety of implementations
  +of these entities.
  +It is convenient to use AXIS source code for
  +such implementations as starting points for developing
  +extentions and customizations that fulfill the unique needs
  +of the end user.
  +<br>&nbsp;
  +
   <li>
  -Examples</li>
  +Procedure</li>
  +<br>To extend the AXIS message file:
  +<br>&nbsp;
  +<ul>
  +<li>Copy the AXIS source file
  +<code>java/src/org/apache/axis/i18n/Messages.java</code>
  +to your project/package, say
  +<code>my/project/package/path/Messages.java</code>.
  +</li>
  +<ul>
  +<li>Set the <code>package</code> declaration in the copied file
  +to the correct package name.
  +</li>
  +<li>Set the private attribute <code>projectName</code>
  +to <code>"my.project"</code>:
  +the portion of the package name that is common to your project.
  +<code>projectName</code> must be equal to or be a prefix of the
  +copied Messages package name.
  +</li>
  +</ul>
  +<br>&nbsp;
  +<li>Create the file
  +<code>my/project/package/path/resource.properties</code>.
  +Add new message key/value pairs to this file.
  +</li>
  +<br>&nbsp;
  +<li>As you copy AXIS source files over to your project,
  +change the <code>import org.apache.axis.i18n.Messages</code>
  +statement to <code>import my.project.package.path.Messages</code>.
  +</li>
  +<li>Use the methods provided by the class Messages,
  +as discussed in the <a href="developers-guide.html">Developer's Guide</a>,
  +to access the new messages.
  +</li>
  +</ul>
  +<br>
   
  -<br>In <font face="Courier New,Courier"><font size=-1>org.apache.axis.client.Call.invoke</font></font>,
  -there is the following statement:
  -<p><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -if ( operationName == null )</font></font>
  -<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -throw new AxisFault( "No operation name specified" );</font></font>
  -<p>We will have to add an entry into org/apache/axis/i18n/resource.properties.&nbsp;
  -Something like:
  -<p><font face="Courier New,Courier"><font size=-1>noOperation=No operation
  -name specified.</font></font>
  -<p>And change the code to read:
  -<p><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -if ( operationName == null )</font></font>
  -<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -throw new AxisFault(JavaUtils.getMessage("noOperation"));</font></font></ul>
  +<li>
  +Behavior</li>
  +
  +<ul>
  +<li>
  +Local Search</li>
  +<br><code>Messages</code> begins looking for a key's value in
  +the <code>resources.properties</code>
  +resource in it's (Messages) package.
  +<br>&nbsp;
  +
  +<li>
  +Hierarchical Search</li>
  +<br>If <code>Messages</code> cannot locate
  +either the key, or the resource file,
  +it walks up the package hierarchy until it finds it.
  +The top of the hierarchy, above which it will not search,
  +is defined by the <code>projectName</code> attribute,
  +set above.
  +<br>&nbsp;
  +
  +<li>
  +Default behavior</li>
  +<br>If the key cannot be found in the package hierarchy
  +then a default resource is used.
  +The default behaviour is determined by
  +the <code>parent</code> attribute of the
  +<code>Messages</code> class copied to your extensions directory.
  +<p>Unless changed, the default behavior, meaning what happens when a key
  +isn't defined in the new properties file,
  +is to fall back to the AXIS properties file
  +(org.apache.axis.i18n.resource.properties).
  +<br>&nbsp;
  +</ul>
  +</ul>
   
   <h3>
   <a NAME="Performance Monitoring Plug"></a>Performance Monitoring</h3>
  @@ -449,6 +628,43 @@
   
   <h3>
   <a NAME="Encoding Plug"></a>Encoding</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="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>
  
  
  
  1.9.4.1   +40 -7     xml-axis/java/docs/reference.html
  
  Index: reference.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/reference.html,v
  retrieving revision 1.9
  retrieving revision 1.9.4.1
  diff -u -r1.9 -r1.9.4.1
  --- reference.html	4 Sep 2002 22:47:03 -0000	1.9
  +++ reference.html	30 Sep 2002 13:19:22 -0000	1.9.4.1
  @@ -322,6 +322,10 @@
     &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; 
  @@ -359,7 +363,7 @@
     or portTypes.
   <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 overriden by the 
  +  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>
  @@ -410,12 +414,17 @@
   <p><b>-f, --factory &lt;class></b> <br>
     (No longer used.) 
   <p><b>-i, --implClass &lt;impl-class></b> <br>
  -  Sometimes extra information is avalable in the implementation class file. Use 
  +  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>-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>
  @@ -440,7 +449,7 @@
       Defines a Handler, and indicates the type of the handler. &quot;Type&quot; 
       is either the name of another previously defined Handler, or a QName of the 
       form &quot;<b>java:<i>class.name</i></b>&quot;. The optional &quot;name&quot; 
  -    attribute allows you to refer to this Handler defintion in other parts of 
  +    attribute allows you to refer to this Handler definition in other parts of 
       the deployment. May contain an arbitrary number of <b><font face="Courier New, Courier, mono">&lt;option 
       name=&quot;</font></b><font face="Courier New, Courier, mono"><i>name</i></font><b><font face="Courier New, Courier, mono">&quot; 
       value=&quot;</font></b><font face="Courier New, Courier, mono"><i>value</i></font><b><font face="Courier New, Courier, mono">&quot;&gt;</font></b> 
  @@ -455,11 +464,35 @@
       <b>Options</b> may be specified as follows : <code><b>&lt;parameter name=&quot;</b>name<b>&quot; 
       value=&quot;</b>value<b>&quot;/&gt;</b></code>, and common ones include:<br>
       <br>
  -    <b>className</b> : the backend implementation class<br>
  -    <b>allowedMethods</b> : the allowed methods (use &quot;*&quot; to allow all 
  -    public methods)<br>
  -    <b>allowedRoles</b> : comma-separated list of roles allowed to access this 
  +    <ul>
  +    <li><b>className</b> : the backend implementation class<br>
  +    <li><b>allowedMethods</b> : 
  +    Each provider can determine which methods are allowed to be exposed as web services.
  +    <br>To summaries for Axis supplied providers:<br>
  +    <p><u>Java RPC Provider</u> (provider="java:RPC") by default all public methods specified by the class
  +    in the className option, including any inherited methods are 
  +    available as web services.<br> For more details regarding the Java Provider 
  +    please see <B>WHERE???</B>.
  +    <P><u>Java MsgProvder</u> (provider="java:MSG") 
  +    <!-- Glen to provide details -->
  +    <P>In order to further restrict the above methods, the <b>allowedMethods</b> option  may
  +    be used to specify in a space delimited list the names of only those methods which are allowed 
  +    as web services. It is also possible to specify for this option the value <b>"*"</b> which is
  +    functionally equivalent to not specify the option at all.
  +    Also, it is worth mentioning  that the <b>operation</b> element is used to further define the methods being offered, but it does not affect
  +    which methods are made available.
  +    <p><i>Note, while this is true for Axis supplied providers,  it is implementation dependent on each individual provider. Please review
  +    your providers documentation on how or if it supports this option.</i>
  +   </i> 
  +   <P>
  +   <B><u>Note, Exposing any web service has security implications.</u><br></B>As a best practices guide it is
  +   <u>highly</u> recommend when offering a web service in un secure environment to restrict allowed methods to only those
  +   required for the service being offered. And, for those that are made available, to <b>fully</b> understand their function
  +   and how they may access and expose your systems's resources.
  +   <P>
  +    <li><b>allowedRoles</b> : comma-separated list of roles allowed to access this 
       service<br>
  +    </ul>
       <br>
       If you wish to define handlers which should be invoked either before or after 
       the service's provider, you may do so with the <b>&lt;requestFlow&gt;</b> 
  
  
  
  1.3.18.1  +82 -157   xml-axis/java/docs/subsystems.jpg
  
  	<<Binary file>>
  
  
  1.71.2.1  +118 -58   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.71
  retrieving revision 1.71.2.1
  diff -u -r1.71 -r1.71.2.1
  --- user-guide.html	24 Sep 2002 13:12:26 -0000	1.71
  +++ user-guide.html	30 Sep 2002 13:19:22 -0000	1.71.2.1
  @@ -142,9 +142,10 @@
     <li>Preliminary support for the <b>SOAP with Attachments</b> specification</li>
     <li> An EJB provider for accessing EJB's as Web Services</li>
     <li> HTTP servlet-based transport</li>
  +  <li> JMS based transport</li>
     <li> Standalone version of the server (with HTTP support)</li>
     <li> Examples, including a client and server for the soapbuilders community 
  -    interoperability tests and experimental TCP and file-based transports.</li>
  +    interoperability tests and experimental TCP, JMS, and file-based transports.</li>
   </ul>
   
   <h3> What's missing?</h3>
  @@ -376,6 +377,8 @@
   (which for a service is called a "provider"), and a response flow. In this case, 
   our provider is "java:RPC", which is built into Axis, and indicates a Java RPC 
   service. The actual class which handles this is <b>org.apache.axis.providers.java.RPCProvider</b>. 
  +We'll go into more detail later on the different styles of services and their 
  +providers. 
   <p>We need to tell the RPCProvider that it should instantiate and call the correct 
     class (e.g. samples.userguide.example3.MyService), and we do so by including 
     &lt;parameter> tags, giving the service one parameter to configure the class 
  @@ -475,63 +478,126 @@
   <p><b>WARNING: enabling remote administration may give unauthorized parties
   access to your machine. If you do this, please make sure to add security
   to your configuration!</b>
  -<h3>Writing and Deploying Document-Style Message Services</h3>
  -<p>The SOAP specification allows for message-oriented services as well as RPC. 
  -  RPC defines strict encoding rules for passing serialized objects as method parameters 
  -  and return values. Message services can receive and return arbitrary XML messages 
  -  in the SOAP Body. If you want to work with the raw XML of the incoming and outgoing 
  -  SOAP Bodies, write a message service.</p>
  -<h4>What, Exactly, Is a Message Service?</h4>
  -<p>I don't know. This is a very confusing subject and I haven't read enough of 
  -  the SOAP spec. Axis developer people, help? Is it &quot;any service that does 
  -  not use RPC&quot;? Is it &quot;all SOAP services, including those using RPC, 
  -  which is really just a restricted form of SOAP messaging?&quot;</p>
  -<h4>Method Signatures for a Message Service</h4>
  -<p>Axis makes it easy to work with the raw XML in the SOAP Body. Message services 
  -  are handled by <code>org.apache.axis.providers.java.MsgProvider</code>, which 
  -  expects a class with one method having one of the following three signatures:</p>
  -<p><code>public Element [] method(Vector v);<br>
  -  public Document method(Document doc);<br>
  -  public void method(MessageContext mc);</code></p>
  -<p>Note: in future versions of Axis, the first method will likely be revised to 
  -  one of the following:</p>
  -<p><code>public Element [] method(Element[] e);<br>
  -  public Vector method(Vector v);</code></p>
  -<p>The first version allows multiple SOAP Body Elements (child elements of the 
  -  SOAP Body); the second assumes that the request and response SOAP Bodies will 
  -  each have only one SOAP Element. The third method signature leaves your method 
  -  to dig all necessary information out of the MessageContext object, which essentially 
  -  lets you get at everything Axis knows about the request and response.</p>
  -<h4>Deploying a Message Service</h4>
  -<p>A sample message service can be found in
  -<a href="../samples/message/MessageService.java">samples/message/MessageService.java</a>. 
  +<h3>Service Styles - RPC, Document, Wrapped, and Message</h3>
  +<p>There are four &quot;styles&quot; of service in Axis 1.0. <b>RPC</b> services 
  +  use the SOAP RPC conventions, and also the SOAP &quot;section 5&quot; encoding. 
  +  <b>Document</b> services do not use any encoding (so in particular, you won't 
  +  see multiref object serialization or SOAP-style arrays on the wire) but DO still 
  +  do XML&lt;-&gt;Java databinding. <b>Wrapped</b> services are just like document 
  +  services, except that rather than binding the entire SOAP body into one big 
  +  structure, they &quot;unwrap&quot; it into individual parameters. <b>Message</b> 
  +  services receive and return arbitrary XML in the SOAP Envelope without any type 
  +  mapping / data binding. If you want to work with the raw XML of the incoming 
  +  and outgoing SOAP Envelopes, write a message service.</p>
  +<h4>RPC services</h4>
  +RPC services are the default in Axis. They are what you get when you deploy services 
  +with &lt;service ... provider=&quot;java:RPC&quot;&gt; or &lt;service ... style=&quot;RPC&quot;&gt;. 
  +RPC services follow the SOAP RPC and encoding rules, which means that the XML 
  +for an RPC service will look like the &quot;echoString&quot; example above - each 
  +RPC invocation is modeled as an outer element which matches the operation name, 
  +containing inner elements each of which maps to a parameter of the operation. 
  +Axis will deserialize XML into Java objects which can be fed to your service, 
  +and will serialize the returned Java object(s) from your service back into XML. 
  +Since RPC services default to the soap section 5 encoding rules, objects will 
  +be encoded via &quot;multi-ref&quot; serialization, which allows object graphs 
  +to be encoded. (see the SOAP spec for more on multi-ref serialization) 
  +<h4>Document / Wrapped services </h4>
  +<p>Document services and wrapped services are similar in that neither uses the 
  +  SOAP encoding for data, it's just plain old XML schema. In both cases, however, 
  +  Axis still &quot;binds&quot; Java representations to the XML (see the <a href="#DataMapping">databinding</a> 
  +  section for more), so you end up dealing with Java objects, not directly with 
  +  XML constructs.</p>
  +<p>A good place to start in describing the difference between document and wrapped 
  +  services is with a sample SOAP message containing a purchase order:</p>
  +<pre class="xml">&lt;soap:Envelope xmlns="http://xml.apache.org/axis/wsdd/"
  +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  +  &lt;soap:Body&gt;
  +    &lt;myNS:PurchaseOrder xmlns:myNS=&quot;http://commerce.com/PO&quot;&gt;
  +      &lt;item&gt;SK001&lt;/item&gt;
  +      &lt;quantity&gt;1&lt;/quantity&gt;
  +      &lt;description&gt;Sushi Knife&lt;/description&gt;
  +    &lt;/myNS:PurchaseOrder&gt;
  +  &lt;/soap:Body&gt;
  +&lt;/soap:Envelope&gt;
  +</pre>
  +<p>The relevant schema for the PurchaseOrder looks like this:</p>
  +<pre class="xml">&lt;schema targetNamespace=&quot;http://commerce.com/PO&quot;>
  +  &lt;complexType name=&quot;POType&quot;&gt;
  +    &lt;sequence&gt;
  +      &lt;element name=&quot;item&quot; type=&quot;xsd:string&quot;/&gt;
  +      &lt;element name=&quot;quantity&quot; type=&quot;xsd:int&quot;/&gt;
  +      &lt;element name=&quot;description&quot; type=&quot;xsd:string&quot;/&gt;
  +    &lt;/sequence&gt;
  +  &lt;/complexType&gt;
  +  &lt;element name=&quot;PurchaseOrder&quot; type=&quot;POType&quot;/&gt;
  +&lt;/deployment></pre>
  +<p>For a <b>document</b> style service, this would map to a method like this:</p>
  +<p class="example">public void method(PurchaseOrder po)</p>
  +<p>In other words, the ENTIRE &lt;PurchaseOrder&gt; element would be handed to 
  +  your method as a single bean with three fields inside it. On the other hand, 
  +  for a <b>wrapped</b> style service, it would map to a method like this:</p>
  +<p class="example">public void purchaseOrder(String item, int quantity, String 
  +  description)</p>
  +<p>Note that in the &quot;wrapped&quot; case, the &lt;PurchaseOrder&gt; element 
  +  is a &quot;wrapper&quot; (hence the name) which only serves to indicate the 
  +  correct operation. The arguments to our method are what we find when we &quot;unwrap&quot; 
  +  the outer element and take each of the inner ones as a parameter.</p>
  +<p>The document or wrapped style is indicated in WSDD as follows:</p>
  +<p><span class="example">&lt;service ... style=&quot;document&quot;&gt;</span> 
  +  for document style<br>
  +  <span class="example">&lt;service ... style=&quot;wrapped&quot;&gt;</span> for 
  +  wrapped style</p>
  +<p>In most cases you won't need to worry about document or wrapped services if 
  +  you are starting from a WSDL document (<a href="#WSDL">see below</a>).</p>
  +<h4>Message services</h4>
  +<p>Finally, we arrive at &quot;Message&quot; style services, which should be used 
  +  when you want Axis to step back and let your code at the actual XML instead 
  +  of turning it into Java objects. There are four valid signatures for your message-style 
  +  service methods:</p>
  +<p><code>public Element [] method(Element [] bodies);</code><code><br>
  +  public SOAPBodyElement [] method (SOAPBodyElement [] bodies);</code><code><br>
  +  public Document method(Document body);<br>
  +  public void method(SOAPEnvelope req, SOAPEnvelope resp);</code> </p>
  +<p>The first two will pass your method arrays of either DOM Elements or SOAPBodyElements 
  +  - the arrays will contain one element for each XML element inside the &lt;soap:body&gt; 
  +  in the envelope.</p>
  +<p>The third signature will pass you a DOM Document representing the &lt;soap:body&gt;, 
  +  and expects the same in return.</p>
  +<p>The fourth signature passes you two SOAPEnvelope objects representing the request 
  +  and response messages. This is the signature to use if you need to look at or 
  +  modify headers in your service method. Whatever you put into the response envelope 
  +  will automatically be sent back to the caller when you return. Note that the 
  +  response envelope may already contain headers which have been inserted by other 
  +  Handlers.</p>
  +<p><b>Message Example</b></p>
  +<p>A sample message service can be found in <a href="../samples/message/MessageService.java">samples/message/MessageService.java</a>. 
     The service class, <code>MessageService</code>, has one public method, <code>echoElements</code>, 
     which matches the first of the three method signatures above:</p>
  -<pre class="example">public Element[] echoElements(Vector elems) </pre>
  -<p>The <code>MsgProvider</code> handler calls the method with a <code>java.util.Vector</code> 
  +<pre class="example">public Element[] echoElements(Element [] elems) </pre>
  +<p>The <code>MsgProvider</code> handler calls the method with an array<code></code> 
     of <code>org.w3c.dom.Element</code> objects that correspond to the immediate 
  -  children of the incoming message's SOAP Body. Often, this Vector will will be 
  +  children of the incoming message's SOAP Body. Often, this array will contain 
     a single Element (perhaps the root element of some XML document conforming to 
     some agreed-upon schema), but the SOAP Body can handle any number of children. 
     The method returns an <code>Element[]</code> array to be returned in the SOAP 
  -  body.</p>
  +  body of the response message.</p>
   <p>Message services must be deployed with a WSDD file. Here is the full WSDD for 
     the <code>MessageService</code> class:</p>
   <pre class="XML">
   &lt;deployment name=&quot;test&quot; xmlns=&quot;http://xml.apache.org/axis/wsdd/&quot;
         xmlns:java=&quot;http://xml.apache.org/axis/wsdd/providers/java&quot;
         xmlns:xsi=&quot;http://www.w3.org/2000/10/XMLSchema-instance&quot;&gt;
  -	&lt;service name=&quot;MessageService&quot; provider=&quot;java:MSG&quot;&gt;
  +	&lt;service name=&quot;MessageService&quot; <font color="#FF0000">style=&quot;message&quot;</font>&gt;
       &lt;parameter name=&quot;className&quot; value=&quot;samples.message.MessageService&quot;/&gt;
       &lt;parameter name=&quot;allowedMethods&quot; value=&quot;echoElements&quot;/&gt;
     &lt;/service&gt;<br>&lt;/deployment&gt;</pre>
  -<p>Note that the &quot;provider&quot; attribute is different from the RPC deployment 
  -  example. &quot;java:MSG&quot; tells Axis that this service is to be handled 
  -  by <code>org.apache.axis.providers.java.MsgProvider</code> rather than
  -<code>org.apache.axis.providers.java.RPCProvider.</code></p>
  -<h2>
  -<a NAME="DataMapping"></a>XML &lt;-> Java Data Mapping in Axis</h2>
  -
  +<p>Note that the &quot;style&quot; attribute is different from the RPC deployment 
  +  example. The &quot;message&quot; style tells Axis that this service is to be 
  +  handled by <code>org.apache.axis.providers.java.MsgProvider</code> rather than 
  +  <code>org.apache.axis.providers.java.RPCProvider</code>. </p>
  +<p>You can test this service by deploying it, then running samples.message.TestMsg 
  +  (look at the source to see what the test driver does).</p>
  +<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. 
  @@ -557,21 +623,14 @@
   <tr><td>xsd:short </td><td><tt>short</tt></td></tr>
   <tr><td>xsd:string</td><td><tt>java.lang.String</tt></td></tr>
   </table>
  -<p>
  -
  -If the WSDL says that an object can be <tt>nillable</tt>, that is the
  -caller 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. 
  -
  -<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
  -datatypes date from an era before XML Schema; now that XSD is final and
  -support is common, there should be no reason to write services that
  -serve the SOAP datatypes rather than the XSD alternatives. 
  -
  +<p> If the WSDL says that an object can be <tt>nillable</tt>, that is the caller 
  +  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 
  +  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
  @@ -1374,6 +1433,7 @@
   <li>org.apache.axis.encoding.ser.SimpleDeserializer</li>
   <li>org.apache.axis.session.Session</li>
   <li>org.apache.axis.transport.http.SimpleAxisServer</li>
  +<li>org.apache.axis.transport.jms.SimpleJMSListener</li>
   <li>org.apache.axis.utils.BeanProperty</li>
   <li>org.apache.axis.wsdl.WSDL2Java</li>
   <li>org.apache.axis.wsdl.Java2WSDL</li>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.9.4.1   +59 -54    xml-axis/java/lib/commons-logging.jar
  
  	<<Binary file>>
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.4.1   +8 -0      xml-axis/java/samples/jms/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/jms/build.xml,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- build.xml	17 Sep 2002 16:50:36 -0000	1.1
  +++ build.xml	30 Sep 2002 13:19:23 -0000	1.1.4.1
  @@ -45,6 +45,14 @@
     <target name="clean"/>
     <target name="copy"/>
     <target name="compile">
  +    <condition property="jms.present" >
  +      <available classname="javax.jms.Message" classpathref="classpath" />
  +    </condition>
  +
  +<!-- ===================================================================
  +   <echo message="jms.present=${jms.present}" />
  +==================================================================== -->
  +
       <javac srcdir="${axis.home}" destdir="${build.dest}" debug="${debug}" fork="${javac.fork}">
         <classpath>
           <path refid="classpath"/>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +65 -6     xml-axis/java/samples/message/MessageService.java
  
  Index: MessageService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/message/MessageService.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- MessageService.java	24 Sep 2002 20:45:19 -0000	1.3
  +++ MessageService.java	30 Sep 2002 13:19:23 -0000	1.3.2.1
  @@ -1,14 +1,73 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2002 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
  +
   package samples.message ;
   
   import org.w3c.dom.Element ;
   
  +/**
  + * Simple message-style service sample.
  + */
   public class MessageService {
  +    /**
  +     * Service method, which simply echoes back any XML it receives.
  +     * 
  +     * @param elems an array of DOM Elements, one for each SOAP body element
  +     * @return an array of DOM Elements to be sent in the response body
  +     */ 
       public Element[] echoElements(Element [] elems) {
  -        Element[]  result = new Element[elems.length];
  -
  -        for ( int i = 0 ; i < elems.length ; i++ )
  -            result[i] = (Element) elems[i];
  -        
  -        return( result );
  +        return elems;
       }
   }
  
  
  
  1.2.4.1   +58 -0     xml-axis/java/samples/message/TestMsg.java
  
  Index: TestMsg.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/message/TestMsg.java,v
  retrieving revision 1.2
  retrieving revision 1.2.4.1
  diff -u -r1.2 -r1.2.4.1
  --- TestMsg.java	16 Sep 2002 19:34:24 -0000	1.2
  +++ TestMsg.java	30 Sep 2002 13:19:23 -0000	1.2.4.1
  @@ -1,3 +1,58 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2002 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
  +
   package samples.message;
   
   import org.apache.axis.client.Service;
  @@ -14,6 +69,9 @@
   import java.net.URL;
   import java.util.Vector;
   
  +/**
  + * Simple test driver for our message service.
  + */ 
   public class TestMsg {
       public String doit(String[] args) throws Exception {
           Options opts = new Options(args);
  
  
  
  1.2.20.1  +2 -1      xml-axis/java/samples/message/deploy.wsdd
  
  Index: deploy.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/message/deploy.wsdd,v
  retrieving revision 1.2
  retrieving revision 1.2.20.1
  diff -u -r1.2 -r1.2.20.1
  --- deploy.wsdd	15 Jan 2002 17:57:02 -0000	1.2
  +++ deploy.wsdd	30 Sep 2002 13:19:23 -0000	1.2.20.1
  @@ -1,7 +1,8 @@
   <deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/" 
               xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
               xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
  -  <service name="MessageService" provider="java:MSG">
  +  <!-- note that either style="message" OR provider="java:MSG" both work -->
  +  <service name="MessageService" style="message">
       <parameter name="className" value="samples.message.MessageService" />
       <parameter name="allowedMethods" value="echoElements" />
     </service>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.54.4.1  +15 -4     xml-axis/java/src/org/apache/axis/SimpleChain.java
  
  Index: SimpleChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/SimpleChain.java,v
  retrieving revision 1.54
  retrieving revision 1.54.4.1
  diff -u -r1.54 -r1.54.4.1
  --- SimpleChain.java	18 Sep 2002 16:10:31 -0000	1.54
  +++ SimpleChain.java	30 Sep 2002 13:19:23 -0000	1.54.4.1
  @@ -92,6 +92,9 @@
   
       protected Vector handlers = new Vector();
       protected boolean invoked = false;
  +    
  +    private String CAUGHTFAULT_PROPERTY = 
  +            "org.apache.axis.SimpleChain.caughtFaultInResponse";
   
       public void init() {
           for ( int i = 0 ; i < handlers.size() ; i++ )
  @@ -154,10 +157,18 @@
                   i++;
               }
           } catch( AxisFault f ) {
  -           // Attach the fault to the response message; enabling access to the
  -           // fault details while inside the handler onFault methods.
  -            Message respMsg = new Message(f);
  -            msgContext.setResponseMessage(respMsg);
  +            // Something went wrong.  If we haven't already put this fault
  +            // into the MessageContext's response message, do so and make sure
  +            // we only do it once.  This allows onFault() methods to safely
  +            // set headers and such in the response message without them
  +            // getting stomped.
  +            if (!msgContext.isPropertyTrue(CAUGHTFAULT_PROPERTY)) {
  +                // Attach the fault to the response message; enabling access to the
  +                // fault details while inside the handler onFault methods.
  +                Message respMsg = new Message(f);
  +                msgContext.setResponseMessage(respMsg);
  +                msgContext.setProperty(CAUGHTFAULT_PROPERTY, Boolean.TRUE);
  +            }
               while( --i >= 0 )
                   ((Handler) handlers.elementAt( i )).onFault( msgContext );
               throw f;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.179.4.1 +30 -5     xml-axis/java/src/org/apache/axis/client/Call.java
  
  Index: Call.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
  retrieving revision 1.179
  retrieving revision 1.179.4.1
  diff -u -r1.179 -r1.179.4.1
  --- Call.java	19 Sep 2002 20:32:56 -0000	1.179
  +++ Call.java	30 Sep 2002 13:19:23 -0000	1.179.4.1
  @@ -895,6 +895,14 @@
       }
   
       /**
  +     * Set the QName of the return element
  +     * 
  +     * NOT part of JAX-RPC
  +     */ 
  +    public void setReturnQName(QName qname) {
  +        operation.setReturnQName(qname);
  +    }
  +    /**
        * Sets the desired return Java Class.  This is a convenience method
        * which will cause the Call to automatically convert return values
        * into a desired class if possible.  For instance, we return object
  @@ -1894,10 +1902,18 @@
                   // GD 03/15/02 : We're now checking for invalid metadata
                   // config at the top of this method, so don't need to do it
                   // here.  Check for void return, though.
  +                boolean findReturnParam = false;
                   if (!XMLType.AXIS_VOID.equals(returnType)) {
  -                    RPCParam param = (RPCParam)resArgs.get(0);
  -                    result = param.getValue();
  -                    outParamStart = 1;
  +                    if (operation.getReturnQName() == null) {
  +                        // Assume the first param is the return
  +                        RPCParam param = (RPCParam)resArgs.get(0);
  +                        result = param.getValue();
  +                        outParamStart = 1;
  +                    } else {
  +                        // If the QName of the return value was given to us, look
  +                        // through the result arguments to find the right name
  +                        findReturnParam = true;
  +                    }
                   }
   
                   for (int i = outParamStart; i < resArgs.size(); i++) {
  @@ -1912,8 +1928,17 @@
                           value = JavaUtils.convert(value, javaType);
                       }
   
  -                    outParams.put(param.getQName(), value);
  -                    outParamsList.add(value);
  +                    // Check if this parameter is our return 
  +                    // otherwise just add it to our outputs
  +                    if (findReturnParam &&
  +                          operation.getReturnQName().equals(param.getQName())) {
  +                        // found it!
  +                        result = value;
  +                        findReturnParam = false;
  +                    } else {
  +                        outParams.put(param.getQName(), value);
  +                        outParamsList.add(value);
  +                    }
                   }
               }
           } else {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.12.4.1  +10 -2     xml-axis/java/src/org/apache/axis/configuration/EngineConfigurationFactoryFinder.java
  
  Index: EngineConfigurationFactoryFinder.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/EngineConfigurationFactoryFinder.java,v
  retrieving revision 1.12
  retrieving revision 1.12.4.1
  diff -u -r1.12 -r1.12.4.1
  --- EngineConfigurationFactoryFinder.java	18 Sep 2002 16:10:30 -0000	1.12
  +++ EngineConfigurationFactoryFinder.java	30 Sep 2002 13:19:24 -0000	1.12.4.1
  @@ -61,12 +61,15 @@
   
   import org.apache.axis.EngineConfigurationFactory;
   import org.apache.axis.components.logger.LogFactory;
  +import org.apache.axis.discovery.DiscoverOldNamesInManagedProperties;
   import org.apache.axis.utils.Messages;
   import org.apache.commons.discovery.ResourceClassIterator;
   import org.apache.commons.discovery.ResourceNameIterator;
   import org.apache.commons.discovery.resource.ClassLoaders;
   import org.apache.commons.discovery.resource.classes.DiscoverClasses;
  +import org.apache.commons.discovery.resource.names.DiscoverNamesInManagedProperties;
   import org.apache.commons.discovery.resource.names.DiscoverServiceNames;
  +import org.apache.commons.discovery.resource.names.NameDiscoverers;
   import org.apache.commons.discovery.tools.ClassUtils;
   import org.apache.commons.logging.Log;
   
  @@ -146,13 +149,18 @@
                           ClassLoaders loaders =
                               ClassLoaders.getAppLoaders(mySpi, myFactory, true);
                   
  -                        ResourceNameIterator it =
  -                            new DiscoverServiceNames(loaders).findResourceNames(mySpi.getName());
  +                        NameDiscoverers nameDiscoverers = new NameDiscoverers();
  +                        nameDiscoverers.addResourceNameDiscover(new DiscoverOldNamesInManagedProperties());
  +                        nameDiscoverers.addResourceNameDiscover(new DiscoverNamesInManagedProperties());
  +                        nameDiscoverers.addResourceNameDiscover(new DiscoverServiceNames(loaders));
  +                            
  +                        ResourceNameIterator it = nameDiscoverers.findResourceNames(mySpi.getName());
                   
                           ResourceClassIterator services =
                               new DiscoverClasses(loaders).findResourceClasses(it);
                   
                           EngineConfigurationFactory factory = null;
  +
                           while (factory == null  &&  services.hasNext()) {
                               Class service = services.nextResourceClass().loadClass();
                   
  
  
  
  1.16.2.1  +31 -17    xml-axis/java/src/org/apache/axis/configuration/EngineConfigurationFactoryServlet.java
  
  Index: EngineConfigurationFactoryServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/EngineConfigurationFactoryServlet.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- EngineConfigurationFactoryServlet.java	23 Sep 2002 16:17:46 -0000	1.16
  +++ EngineConfigurationFactoryServlet.java	30 Sep 2002 13:19:24 -0000	1.16.2.1
  @@ -65,7 +65,7 @@
   import org.apache.axis.ConfigurationException;
   import org.apache.axis.EngineConfiguration;
   import org.apache.axis.EngineConfigurationFactory;
  -import org.apache.axis.AxisEngine;
  +import org.apache.axis.server.AxisServer;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.utils.ClassUtils;
  @@ -168,24 +168,35 @@
           FileProvider config = null;
   
           String realWebInfPath = ctx.getRealPath(appWebInfPath);
  -        if (realWebInfPath == null) {
  -            File configFile = new File(realWebInfPath, SERVER_CONFIG_FILE);
  -            if (!configFile.exists()) {
  -                InputStream is = ctx.getResourceAsStream(appWebInfPath + "/" + SERVER_CONFIG_FILE);
  -                if (is != null) {
  -                    // FileProvider assumes responsibility for 'is':
  -                    // do NOT call is.close().
  -                    config = new FileProvider(is);
  -                }
  -    
  -                if (config == null) {
  -                    log.error(Messages.getMessage("servletEngineWebInfError01",
  -                                                   configFile.toString()));
  -                }
  +
  +        /**
  +         * If path/file doesn't exist, it may still be accessible
  +         * as a resource-stream (i.e. it may be packaged in a JAR
  +         * or WAR file).
  +         */
  +        if (realWebInfPath == null  ||
  +            !(new File(realWebInfPath, SERVER_CONFIG_FILE)).exists())
  +        {
  +            String name = appWebInfPath + "/" + SERVER_CONFIG_FILE;
  +            InputStream is = ctx.getResourceAsStream(name);
  +            if (is != null) {
  +                // FileProvider assumes responsibility for 'is':
  +                // do NOT call is.close().
  +                config = new FileProvider(is);
  +            }
  +
  +            if (config == null) {
  +                log.error(Messages.getMessage("servletEngineWebInfError01",
  +                                               name));
               }
           }
           
  -        if (config == null) {
  +        /**
  +         * Couldn't get data  OR  file does exist.
  +         * If we have a path, then attempt to either open
  +         * the existing file, or create an (empty) file.
  +         */
  +        if (config == null  &&  realWebInfPath != null) {
               try {
                   config = new FileProvider(realWebInfPath, SERVER_CONFIG_FILE);
               } catch (ConfigurationException e) {
  @@ -193,10 +204,13 @@
               }
           }
   
  +        /**
  +         * Fall back to config file packaged with AxisEngine
  +         */
           if (config == null) {
               log.warn(Messages.getMessage("servletEngineWebInfWarn00"));
               try {
  -                InputStream is = ClassUtils.getResourceAsStream(AxisEngine.class, SERVER_CONFIG_FILE);
  +                InputStream is = ClassUtils.getResourceAsStream(AxisServer.class, SERVER_CONFIG_FILE);
                   config = new FileProvider(is);
               } catch (Exception e) {
                   log.error(Messages.getMessage("servletEngineWebInfError02"), e);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.6.4.1   +1 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDJAXRPCHandlerInfo.java
  
  Index: WSDDJAXRPCHandlerInfo.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDJAXRPCHandlerInfo.java,v
  retrieving revision 1.6
  retrieving revision 1.6.4.1
  diff -u -r1.6 -r1.6.4.1
  --- WSDDJAXRPCHandlerInfo.java	18 Sep 2002 16:10:39 -0000	1.6
  +++ WSDDJAXRPCHandlerInfo.java	30 Sep 2002 13:19:24 -0000	1.6.4.1
  @@ -153,7 +153,7 @@
       }
       
       public void setHandlerMap(Map map) {
  -        // Add parameters to Parameters Table here
  +        _map = map;
       }
       
       public QName[] getHeaders() {
  
  
  
  1.3.4.1   +17 -1     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDJAXRPCHandlerInfoChain.java
  
  Index: WSDDJAXRPCHandlerInfoChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDJAXRPCHandlerInfoChain.java,v
  retrieving revision 1.3
  retrieving revision 1.3.4.1
  diff -u -r1.3 -r1.3.4.1
  --- WSDDJAXRPCHandlerInfoChain.java	4 Sep 2002 13:25:03 -0000	1.3
  +++ WSDDJAXRPCHandlerInfoChain.java	30 Sep 2002 13:19:24 -0000	1.3.4.1
  @@ -171,5 +171,21 @@
   			}
   			
   			context.endElement();
  -	}
  +    }
  +    
  +    public ArrayList getHandlerInfoList() {
  +        return _hiList;
  +    }
  +    
  +    public void setHandlerInfoList(ArrayList hiList) {
  +        _hiList = hiList;
  +    }
  +    
  +    public String[] getRoles() {
  +        return _roles;
  +    }
  +    
  +    public void setRoles(String[] roles) {
  +        _roles = roles;
  +    }
   }
  
  
  
  1.94.4.1  +9 -0      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java
  
  Index: WSDDService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v
  retrieving revision 1.94
  retrieving revision 1.94.4.1
  diff -u -r1.94 -r1.94.4.1
  --- WSDDService.java	18 Sep 2002 20:04:50 -0000	1.94
  +++ WSDDService.java	30 Sep 2002 13:19:24 -0000	1.94.4.1
  @@ -660,4 +660,13 @@
           }
           return (TypeMapping) tmr.getTypeMapping(encodingStyle);
       }
  +
  + 
  +     public WSDDJAXRPCHandlerInfoChain getHandlerInfoChain() {
  +         return _wsddHIchain;
  +     }
  + 
  +     public void setHandlerInfoChain(WSDDJAXRPCHandlerInfoChain hichain) {
  +         _wsddHIchain = hichain;
  +     }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.22.2.1  +2 -0      xml-axis/java/src/org/apache/axis/description/OperationDesc.java
  
  Index: OperationDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v
  retrieving revision 1.22
  retrieving revision 1.22.2.1
  diff -u -r1.22 -r1.22.2.1
  --- OperationDesc.java	25 Sep 2002 03:55:16 -0000	1.22
  +++ OperationDesc.java	30 Sep 2002 13:19:24 -0000	1.22.2.1
  @@ -85,6 +85,8 @@
       // public Document method(Document)
       public static final int MSG_METHOD_DOCUMENT = 4;
   
  +    public static final int MSG_METHOD_NONCONFORMING = -4;
  +
       protected static Log log =
           LogFactory.getLog(OperationDesc.class.getName());
   
  
  
  
  1.60.2.2  +22 -2     xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
  
  Index: ServiceDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
  retrieving revision 1.60.2.1
  retrieving revision 1.60.2.2
  diff -u -r1.60.2.1 -r1.60.2.2
  --- ServiceDesc.java	25 Sep 2002 20:03:06 -0000	1.60.2.1
  +++ ServiceDesc.java	30 Sep 2002 13:19:24 -0000	1.60.2.2
  @@ -56,6 +56,7 @@
   
   import org.apache.axis.AxisServiceConfig;
   import org.apache.axis.InternalException;
  +import org.apache.axis.Constants;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPBodyElement;
   import org.apache.axis.components.logger.LogFactory;
  @@ -578,6 +579,7 @@
   
                   if (style == Style.MESSAGE) {
                       int messageOperType = checkMessageMethod(method);
  +                    if(messageOperType == OperationDesc.MSG_METHOD_NONCONFORMING) continue;
                       if (messageOperType == -1) {
                           throw new InternalException("Couldn't match method to any of the allowable message-style patterns!");
                       }
  @@ -701,9 +703,10 @@
                   return OperationDesc.MSG_METHOD_SOAPENVELOPE;
               }
           }
  -
  -        throw new InternalException (Messages.getMessage("badMsgMethodParams",
  +        if( null != allowedMethods && !allowedMethods.isEmpty() )
  +          throw new InternalException (Messages.getMessage("badMsgMethodParams",
                                                            method.getName()));
  +        return    OperationDesc.MSG_METHOD_NONCONFORMING;                                              
       }
   
       /**
  @@ -845,6 +848,13 @@
        */
       private void getSyncedOperationsForName(Class implClass, String methodName)
       {
  +        // If we're a Skeleton deployment, skip the statics.
  +        if (isSkeletonClass) {
  +            if (methodName.equals("getOperationDescByName") ||
  +                methodName.equals("getOperationDescs"))
  +                return;
  +        }
  +        
           // If we have no implementation class, don't worry about it (we're
           // probably on the client)
           if (implClass == null)
  @@ -941,6 +951,13 @@
        */
       private void createOperationsForName(Class implClass, String methodName)
       {
  +        // If we're a Skeleton deployment, skip the statics.
  +        if (isSkeletonClass) {
  +            if (methodName.equals("getOperationDescByName") ||
  +                methodName.equals("getOperationDescs"))
  +                return;
  +        }
  +        
           Method [] methods = implClass.getDeclaredMethods();
   
           for (int i = 0; i < methods.length; i++) {
  @@ -1020,10 +1037,13 @@
           // appropriately.
           if (style == Style.MESSAGE) {
               int messageOperType = checkMessageMethod(method);
  +            if(messageOperType == OperationDesc.MSG_METHOD_NONCONFORMING) return;
               if (messageOperType == -1) {
                   throw new InternalException("Couldn't match method to any of the allowable message-style patterns!");
               }
               operation.setMessageOperationStyle(messageOperType);
  +            operation.setReturnClass(Object.class);
  +            operation.setReturnType(Constants.XSD_ANYTYPE);
           } else {
               // For other styles, continue here.
               Class retClass = method.getReturnType();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/discovery/DiscoverOldNamesInManagedProperties.java
  
  Index: DiscoverOldNamesInManagedProperties.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/discovery/DiscoverOldNamesInManagedProperties.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.10.2  +11 -13    xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java
  
  Index: DefaultSOAP12TypeMappingImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultSOAP12TypeMappingImpl.java,v
  retrieving revision 1.4.10.1
  retrieving revision 1.4.10.2
  diff -u -r1.4.10.1 -r1.4.10.2
  --- DefaultSOAP12TypeMappingImpl.java	25 Sep 2002 20:03:07 -0000	1.4.10.1
  +++ DefaultSOAP12TypeMappingImpl.java	30 Sep 2002 13:19:25 -0000	1.4.10.2
  @@ -98,19 +98,17 @@
   
           // SOAP Encoded strings are treated as primitives.
           // Everything else is not.
  -        myRegisterSimple(Constants.SOAP_STRING, java.lang.String.class, true);  
  -        myRegisterSimple(Constants.SOAP_BOOLEAN,
  -                         java.lang.Boolean.class, false); 
  -        myRegisterSimple(Constants.SOAP_DOUBLE, java.lang.Double.class, false);
  -        myRegisterSimple(Constants.SOAP_FLOAT, java.lang.Float.class, false);
  -        myRegisterSimple(Constants.SOAP_INT, java.lang.Integer.class, false);
  -        myRegisterSimple(Constants.SOAP_INTEGER,
  -                         java.math.BigInteger.class, false);
  -        myRegisterSimple(Constants.SOAP_DECIMAL, java.math.BigDecimal.class,
  -                         false);
  -        myRegisterSimple(Constants.SOAP_LONG, java.lang.Long.class, false);
  -        myRegisterSimple(Constants.SOAP_SHORT, java.lang.Short.class, false);
  -        myRegisterSimple(Constants.SOAP_BYTE, java.lang.Byte.class, false);
  +        myRegisterSimple(Constants.SOAP_STRING, java.lang.String.class);
  +        myRegisterSimple(Constants.SOAP_BOOLEAN, java.lang.Boolean.class);
  +        myRegisterSimple(Constants.SOAP_DOUBLE, java.lang.Double.class);
  +        myRegisterSimple(Constants.SOAP_FLOAT, java.lang.Float.class);
  +        myRegisterSimple(Constants.SOAP_INT, java.lang.Integer.class);
  +        myRegisterSimple(Constants.SOAP_INTEGER, java.math.BigInteger.class);
  +        myRegisterSimple(Constants.SOAP_DECIMAL, java.math.BigDecimal.class
  +        );
  +        myRegisterSimple(Constants.SOAP_LONG, java.lang.Long.class);
  +        myRegisterSimple(Constants.SOAP_SHORT, java.lang.Short.class);
  +        myRegisterSimple(Constants.SOAP_BYTE, java.lang.Byte.class);
   
           // SOAP 1.2
           // byte[] -ser-> SOAP_BASE64
  
  
  
  1.55.4.2  +57 -71    xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java
  
  Index: DefaultTypeMappingImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v
  retrieving revision 1.55.4.1
  retrieving revision 1.55.4.2
  diff -u -r1.55.4.1 -r1.55.4.2
  --- DefaultTypeMappingImpl.java	25 Sep 2002 20:03:07 -0000	1.55.4.1
  +++ DefaultTypeMappingImpl.java	30 Sep 2002 13:19:25 -0000	1.55.4.2
  @@ -75,8 +75,7 @@
   import org.apache.axis.encoding.ser.QNameDeserializerFactory;
   import org.apache.axis.encoding.ser.QNameSerializerFactory;
   import org.apache.axis.encoding.ser.SimpleDeserializerFactory;
  -import org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory;
  -import org.apache.axis.encoding.ser.SimplePrimitiveSerializerFactory;
  +import org.apache.axis.encoding.ser.SimpleSerializerFactory;
   import org.apache.axis.encoding.ser.VectorDeserializerFactory;
   import org.apache.axis.encoding.ser.VectorSerializerFactory;
   import org.apache.axis.utils.JavaUtils;
  @@ -154,19 +153,16 @@
   
           // SOAP Encoded strings are treated as primitives.
           // Everything else is not.
  -        myRegisterSimple(Constants.SOAP_STRING, java.lang.String.class, true);  
  -        myRegisterSimple(Constants.SOAP_BOOLEAN,
  -                         java.lang.Boolean.class, false); 
  -        myRegisterSimple(Constants.SOAP_DOUBLE, java.lang.Double.class, false);
  -        myRegisterSimple(Constants.SOAP_FLOAT, java.lang.Float.class, false);
  -        myRegisterSimple(Constants.SOAP_INT, java.lang.Integer.class, false);
  -        myRegisterSimple(Constants.SOAP_INTEGER,
  -                         java.math.BigInteger.class, false);
  -        myRegisterSimple(Constants.SOAP_DECIMAL, java.math.BigDecimal.class,
  -                         false);
  -        myRegisterSimple(Constants.SOAP_LONG, java.lang.Long.class, false);
  -        myRegisterSimple(Constants.SOAP_SHORT, java.lang.Short.class, false);
  -        myRegisterSimple(Constants.SOAP_BYTE, java.lang.Byte.class, false);
  +        myRegisterSimple(Constants.SOAP_STRING, java.lang.String.class);
  +        myRegisterSimple(Constants.SOAP_BOOLEAN, java.lang.Boolean.class);
  +        myRegisterSimple(Constants.SOAP_DOUBLE, java.lang.Double.class);
  +        myRegisterSimple(Constants.SOAP_FLOAT, java.lang.Float.class);
  +        myRegisterSimple(Constants.SOAP_INT, java.lang.Integer.class);
  +        myRegisterSimple(Constants.SOAP_INTEGER, java.math.BigInteger.class);
  +        myRegisterSimple(Constants.SOAP_DECIMAL, java.math.BigDecimal.class);
  +        myRegisterSimple(Constants.SOAP_LONG, java.lang.Long.class);
  +        myRegisterSimple(Constants.SOAP_SHORT, java.lang.Short.class);
  +        myRegisterSimple(Constants.SOAP_BYTE, java.lang.Byte.class);
   
           // HexBinary binary data needs to use the hex binary serializer/deserializer
           myRegister(Constants.XSD_HEXBIN,     HexBinary.class,
  @@ -242,27 +238,27 @@
           */
   
           // If SOAP 1.1 over the wire, map wrapper classes to XSD primitives.
  -        myRegisterSimple(Constants.XSD_STRING, java.lang.String.class, true);
  -        myRegisterSimple(Constants.XSD_BOOLEAN, java.lang.Boolean.class, true);
  -        myRegisterSimple(Constants.XSD_DOUBLE, java.lang.Double.class, true);
  -        myRegisterSimple(Constants.XSD_FLOAT, java.lang.Float.class, true);
  -        myRegisterSimple(Constants.XSD_INT, java.lang.Integer.class, true);
  -        myRegisterSimple(Constants.XSD_INTEGER, java.math.BigInteger.class,
  -                         true);
  -        myRegisterSimple(Constants.XSD_DECIMAL, java.math.BigDecimal.class,
  -                         true);
  -        myRegisterSimple(Constants.XSD_LONG, java.lang.Long.class, true);
  -        myRegisterSimple(Constants.XSD_SHORT, java.lang.Short.class, true);
  -        myRegisterSimple(Constants.XSD_BYTE, java.lang.Byte.class, true);
  +        myRegisterSimple(Constants.XSD_STRING, java.lang.String.class);
  +        myRegisterSimple(Constants.XSD_BOOLEAN, java.lang.Boolean.class);
  +        myRegisterSimple(Constants.XSD_DOUBLE, java.lang.Double.class);
  +        myRegisterSimple(Constants.XSD_FLOAT, java.lang.Float.class);
  +        myRegisterSimple(Constants.XSD_INT, java.lang.Integer.class);
  +        myRegisterSimple(Constants.XSD_INTEGER, java.math.BigInteger.class
  +        );
  +        myRegisterSimple(Constants.XSD_DECIMAL, java.math.BigDecimal.class
  +        );
  +        myRegisterSimple(Constants.XSD_LONG, java.lang.Long.class);
  +        myRegisterSimple(Constants.XSD_SHORT, java.lang.Short.class);
  +        myRegisterSimple(Constants.XSD_BYTE, java.lang.Byte.class);
   
           // The XSD Primitives are mapped to java primitives.
  -        myRegisterSimple(Constants.XSD_BOOLEAN, boolean.class, true);
  -        myRegisterSimple(Constants.XSD_DOUBLE, double.class, true);
  -        myRegisterSimple(Constants.XSD_FLOAT, float.class, true);
  -        myRegisterSimple(Constants.XSD_INT, int.class, true);
  -        myRegisterSimple(Constants.XSD_LONG, long.class, true);
  -        myRegisterSimple(Constants.XSD_SHORT, short.class, true);
  -        myRegisterSimple(Constants.XSD_BYTE, byte.class, true);
  +        myRegisterSimple(Constants.XSD_BOOLEAN, boolean.class);
  +        myRegisterSimple(Constants.XSD_DOUBLE, double.class);
  +        myRegisterSimple(Constants.XSD_FLOAT, float.class);
  +        myRegisterSimple(Constants.XSD_INT, int.class);
  +        myRegisterSimple(Constants.XSD_LONG, long.class);
  +        myRegisterSimple(Constants.XSD_SHORT, short.class);
  +        myRegisterSimple(Constants.XSD_BYTE, byte.class);
   
           // Map QNAME to the jax rpc QName class
           myRegister(Constants.XSD_QNAME,
  @@ -288,38 +284,38 @@
   
           // Mapping for xsd:time.  Map to Axis type Time
           myRegister(Constants.XSD_TIME,       org.apache.axis.types.Time.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Time.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Time.class,
                                                Constants.XSD_TIME),
                      new SimpleDeserializerFactory(org.apache.axis.types.Time.class,
                                                  Constants.XSD_TIME)
           );
           // These are the g* types (gYearMonth, etc) which map to Axis types
           myRegister(Constants.XSD_YEARMONTH, org.apache.axis.types.YearMonth.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.YearMonth.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.YearMonth.class,
                                                Constants.XSD_YEARMONTH),
                      new SimpleDeserializerFactory(org.apache.axis.types.YearMonth.class,
                                                Constants.XSD_YEARMONTH)
           );
           myRegister(Constants.XSD_YEAR, org.apache.axis.types.Year.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Year.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Year.class,
                                                Constants.XSD_YEAR),
                      new SimpleDeserializerFactory(org.apache.axis.types.Year.class,
                                                Constants.XSD_YEAR)
           );
           myRegister(Constants.XSD_MONTH, org.apache.axis.types.Month.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Month.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Month.class,
                                                Constants.XSD_MONTH),
                      new SimpleDeserializerFactory(org.apache.axis.types.Month.class,
                                                Constants.XSD_MONTH)
           );
           myRegister(Constants.XSD_DAY, org.apache.axis.types.Day.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Day.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Day.class,
                                                Constants.XSD_DAY),
                      new SimpleDeserializerFactory(org.apache.axis.types.Day.class,
                                                Constants.XSD_DAY)
           );
           myRegister(Constants.XSD_MONTHDAY, org.apache.axis.types.MonthDay.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.MonthDay.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.MonthDay.class,
                                                Constants.XSD_MONTHDAY),
                      new SimpleDeserializerFactory(org.apache.axis.types.MonthDay.class,
                                                Constants.XSD_MONTHDAY)
  @@ -386,7 +382,7 @@
   
           // xsd:token
           myRegister(Constants.XSD_TOKEN, org.apache.axis.types.Token.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Token.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Token.class,
                                                Constants.XSD_TOKEN),
                      new SimpleDeserializerFactory(org.apache.axis.types.Token.class,
                                                Constants.XSD_TOKEN)
  @@ -394,7 +390,7 @@
   
           // a xsd:normalizedString
           myRegister(Constants.XSD_NORMALIZEDSTRING, org.apache.axis.types.NormalizedString.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.NormalizedString.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.NormalizedString.class,
                                                Constants.XSD_NORMALIZEDSTRING),
                      new SimpleDeserializerFactory(org.apache.axis.types.NormalizedString.class,
                                                Constants.XSD_NORMALIZEDSTRING)
  @@ -402,7 +398,7 @@
   
           // a xsd:unsignedLong
           myRegister(Constants.XSD_UNSIGNEDLONG, org.apache.axis.types.UnsignedLong.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.UnsignedLong.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.UnsignedLong.class,
                                                     Constants.XSD_UNSIGNEDLONG),
                new SimpleDeserializerFactory(org.apache.axis.types.UnsignedLong.class,
                                              Constants.XSD_UNSIGNEDLONG)
  @@ -410,7 +406,7 @@
   
           // a xsd:unsignedInt
           myRegister(Constants.XSD_UNSIGNEDINT, org.apache.axis.types.UnsignedInt.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.UnsignedInt.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.UnsignedInt.class,
                                                     Constants.XSD_UNSIGNEDINT),
                new SimpleDeserializerFactory(org.apache.axis.types.UnsignedInt.class,
                                              Constants.XSD_UNSIGNEDINT)
  @@ -418,7 +414,7 @@
   
           // a xsd:unsignedShort
           myRegister(Constants.XSD_UNSIGNEDSHORT, org.apache.axis.types.UnsignedShort.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.UnsignedShort.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.UnsignedShort.class,
                                                     Constants.XSD_UNSIGNEDSHORT),
                new SimpleDeserializerFactory(org.apache.axis.types.UnsignedShort.class,
                                              Constants.XSD_UNSIGNEDSHORT)
  @@ -426,7 +422,7 @@
   
           // a xsd:unsignedByte
           myRegister(Constants.XSD_UNSIGNEDBYTE, org.apache.axis.types.UnsignedByte.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.UnsignedByte.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.UnsignedByte.class,
                                                Constants.XSD_UNSIGNEDBYTE),
                      new SimpleDeserializerFactory(org.apache.axis.types.UnsignedByte.class,
                                                Constants.XSD_UNSIGNEDBYTE)
  @@ -434,7 +430,7 @@
   
           // a xsd:nonNegativeInteger
           myRegister(Constants.XSD_NONNEGATIVEINTEGER, org.apache.axis.types.NonNegativeInteger.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.NonNegativeInteger.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.NonNegativeInteger.class,
                                                     Constants.XSD_NONNEGATIVEINTEGER),
                new SimpleDeserializerFactory(org.apache.axis.types.NonNegativeInteger.class,
                                              Constants.XSD_NONNEGATIVEINTEGER)
  @@ -442,7 +438,7 @@
   
           // a xsd:negativeInteger
           myRegister(Constants.XSD_NEGATIVEINTEGER, org.apache.axis.types.NegativeInteger.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.NegativeInteger.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.NegativeInteger.class,
                                                     Constants.XSD_NEGATIVEINTEGER),
                new SimpleDeserializerFactory(org.apache.axis.types.NegativeInteger.class,
                                              Constants.XSD_NEGATIVEINTEGER)
  @@ -450,7 +446,7 @@
   
           // a xsd:positiveInteger
           myRegister(Constants.XSD_POSITIVEINTEGER, org.apache.axis.types.PositiveInteger.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.PositiveInteger.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.PositiveInteger.class,
                                                     Constants.XSD_POSITIVEINTEGER),
                new SimpleDeserializerFactory(org.apache.axis.types.PositiveInteger.class,
                                              Constants.XSD_POSITIVEINTEGER)
  @@ -458,7 +454,7 @@
   
           // a xsd:nonPositiveInteger
           myRegister(Constants.XSD_NONPOSITIVEINTEGER, org.apache.axis.types.NonPositiveInteger.class,
  -             new SimplePrimitiveSerializerFactory(org.apache.axis.types.NonPositiveInteger.class,
  +             new SimpleSerializerFactory(org.apache.axis.types.NonPositiveInteger.class,
                                                     Constants.XSD_NONPOSITIVEINTEGER),
                new SimpleDeserializerFactory(org.apache.axis.types.NonPositiveInteger.class,
                                              Constants.XSD_NONPOSITIVEINTEGER)
  @@ -466,7 +462,7 @@
   
           // a xsd:Name
           myRegister(Constants.XSD_NAME, org.apache.axis.types.Name.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Name.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Name.class,
                                                Constants.XSD_NAME),
                      new SimpleDeserializerFactory(org.apache.axis.types.Name.class,
                                                Constants.XSD_NAME)
  @@ -474,7 +470,7 @@
   
           // a xsd:NCName
           myRegister(Constants.XSD_NCNAME, org.apache.axis.types.NCName.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.NCName.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.NCName.class,
                                                Constants.XSD_NCNAME),
                      new SimpleDeserializerFactory(org.apache.axis.types.NCName.class,
                                                Constants.XSD_NCNAME)
  @@ -482,7 +478,7 @@
   
           // a xsd:NmToken
           myRegister(Constants.XSD_NMTOKEN, org.apache.axis.types.NMToken.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.NMToken.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.NMToken.class,
                                                Constants.XSD_NMTOKEN),
                      new SimpleDeserializerFactory(org.apache.axis.types.NMToken.class,
                                                Constants.XSD_NMTOKEN)
  @@ -490,7 +486,7 @@
   
           // a xsd:Duration
           myRegister(Constants.XSD_DURATION, org.apache.axis.types.Duration.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.Duration.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.Duration.class,
                                                Constants.XSD_DURATION),
                      new SimpleDeserializerFactory(org.apache.axis.types.Duration.class,
                                                Constants.XSD_DURATION)
  @@ -498,7 +494,7 @@
           
           // a xsd:anyURI
           myRegister(Constants.XSD_ANYURI, org.apache.axis.types.URI.class,
  -                   new SimplePrimitiveSerializerFactory(org.apache.axis.types.URI.class,
  +                   new SimpleSerializerFactory(org.apache.axis.types.URI.class,
                                                Constants.XSD_ANYURI),
                      new SimpleDeserializerFactory(org.apache.axis.types.URI.class,
                                                Constants.XSD_ANYURI)
  @@ -537,20 +533,10 @@
        * Register a "simple" type mapping - in other words, a
        * @param xmlType
        * @param javaType
  -     * @param primitive
  -     */ 
  -    protected void myRegisterSimple(QName xmlType,
  -                                    Class javaType,
  -                                    boolean primitive) {
  -        SerializerFactory sf;
  +     */
  +    protected void myRegisterSimple(QName xmlType, Class javaType) {
  +        SerializerFactory sf = new SimpleSerializerFactory(javaType, xmlType);
           DeserializerFactory df = null;
  -        if (primitive) {
  -            sf = new SimplePrimitiveSerializerFactory(javaType,
  -                                                      xmlType);
  -        } else {
  -            sf = new SimpleNonPrimitiveSerializerFactory(javaType,
  -                                                         xmlType);
  -        }
           if (javaType != java.lang.Object.class) {
               df = new SimpleDeserializerFactory(javaType, xmlType);
           }
  @@ -579,7 +565,7 @@
                   for (int i=0; i < Constants.URIS_SCHEMA_XSD.length; i++) {
                       QName qName = new QName(Constants.URIS_SCHEMA_XSD[i],
                                               xmlType.getLocalPart());
  -                    super.register(javaType, qName, sf, df);
  +                    super.internalRegister(javaType, qName, sf, df);
                   }
               }
               else if (xmlType.getNamespaceURI().equals(
  @@ -587,12 +573,12 @@
                   for (int i=0; i < Constants.URIS_SOAP_ENC.length; i++) {
                       QName qName = new QName(Constants.URIS_SOAP_ENC[i],
                                               xmlType.getLocalPart());
  -                    super.register(javaType, qName, sf, df);
  +                    super.internalRegister(javaType, qName, sf, df);
                   }
               }
               // Register with the specified xmlType.
               // This is the prefered mapping and the last registed one wins
  -            super.register(javaType, xmlType, sf, df);
  +            super.internalRegister(javaType, xmlType, sf, df);
           } catch (JAXRPCException e) { }
       }
   
  
  
  
  1.63.4.1  +6 -9      xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java
  
  Index: DeserializationContextImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java,v
  retrieving revision 1.63
  retrieving revision 1.63.4.1
  diff -u -r1.63 -r1.63.4.1
  --- DeserializationContextImpl.java	18 Sep 2002 16:10:37 -0000	1.63
  +++ DeserializationContextImpl.java	30 Sep 2002 13:19:25 -0000	1.63.4.1
  @@ -328,15 +328,12 @@
   
           // OK, this is a QName, so look up the prefix in our current mappings.
           int i = qNameStr.indexOf(':');
  -        if (i == -1)
  -            return null;
  -
  -        String nsURI = getNamespaceURI(qNameStr.substring(0, i));
  -
  -        //log.debug("namespace = " + nsURI);
  -
  -        if (nsURI == null)
  -            return null;
  +        String nsURI;
  +        if (i == -1) {
  +            nsURI = getNamespaceURI("");
  +        } else {
  +            nsURI = getNamespaceURI(qNameStr.substring(0, i));
  +        }
   
           return new QName(nsURI, qNameStr.substring(i + 1));
       }
  
  
  
  1.73.2.2  +1 -1      xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java
  
  Index: SerializationContextImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java,v
  retrieving revision 1.73.2.1
  retrieving revision 1.73.2.2
  diff -u -r1.73.2.1 -r1.73.2.2
  --- SerializationContextImpl.java	25 Sep 2002 20:03:07 -0000	1.73.2.1
  +++ SerializationContextImpl.java	30 Sep 2002 13:19:25 -0000	1.73.2.2
  @@ -1277,7 +1277,7 @@
        * Attempts to get a serializer for the indicated javaType and xmlType.
        * @param javaType is the type of the object
        * @param xmlType is the preferred qname type.
  -     * @param actualXmlType is set to a QNameHolder or null.  
  +     * @param actualXMLType is set to a QNameHolder or null.  
        *                     If a QNameHolder, the actual xmlType is returned.
        * @return found class/serializer or null
        **/
  
  
  
  1.33.4.2  +20 -1     xml-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java
  
  Index: TypeMappingImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java,v
  retrieving revision 1.33.4.1
  retrieving revision 1.33.4.2
  diff -u -r1.33.4.1 -r1.33.4.2
  --- TypeMappingImpl.java	25 Sep 2002 20:03:07 -0000	1.33.4.1
  +++ TypeMappingImpl.java	30 Sep 2002 13:19:25 -0000	1.33.4.2
  @@ -58,7 +58,6 @@
   import org.apache.axis.Constants;
   import org.apache.axis.encoding.ser.BeanSerializerFactory;
   import org.apache.axis.encoding.ser.BeanDeserializerFactory;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.ClassUtils;
   import org.apache.axis.utils.Messages;
   
  @@ -245,7 +244,27 @@
                            javax.xml.rpc.encoding.SerializerFactory sf,
                            javax.xml.rpc.encoding.DeserializerFactory dsf)
           throws JAXRPCException {
  +        // At least a serializer or deserializer factory must be specified.
  +        if (sf == null && dsf == null) {
  +            throw new JAXRPCException(Messages.getMessage("badSerFac"));
  +        }
  +
  +        internalRegister(javaType, xmlType, sf, dsf);
  +    }
   
  +    /**
  +     * Internal version of register(), which allows null factories.
  +     *
  +     * @param javaType
  +     * @param xmlType
  +     * @param sf
  +     * @param dsf
  +     * @throws JAXRPCException
  +     */
  +    protected void internalRegister(Class javaType, QName xmlType,
  +                         javax.xml.rpc.encoding.SerializerFactory sf,
  +                         javax.xml.rpc.encoding.DeserializerFactory dsf)
  +            throws JAXRPCException {
           // Both javaType and xmlType must be specified.
           if (javaType == null || xmlType == null) {
               throw new JAXRPCException(
  
  
  
  1.16.4.1  +2 -8      xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java
  
  Index: TypeMappingRegistryImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- TypeMappingRegistryImpl.java	18 Sep 2002 16:10:37 -0000	1.16
  +++ TypeMappingRegistryImpl.java	30 Sep 2002 13:19:25 -0000	1.16.4.1
  @@ -56,16 +56,10 @@
   package org.apache.axis.encoding;
   
   import org.apache.axis.Constants;
  -import org.apache.axis.deployment.wsdd.WSDDConstants;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   
  -import javax.xml.namespace.QName;
   import javax.xml.rpc.JAXRPCException;
   
  -import java.beans.IntrospectionException;
  -import java.io.IOException;
  -import java.io.PrintStream;
   import java.util.HashMap;
   
   /**
  @@ -340,11 +334,11 @@
       /**
        * Removes the TypeMapping for the namespace.
        *
  -     * @param typeMapping- The type mapping   to remove
  +     * @param mapping The type mapping to remove
        * @return true if found and removed
        */
       public boolean removeTypeMapping(
  -                                     javax.xml.rpc.encoding.TypeMapping mapping) {
  +                                  javax.xml.rpc.encoding.TypeMapping mapping) {
           String[] ns = getRegisteredEncodingStyleURIs();
           boolean rc = false;
           for (int i=0; i < ns.length; i++) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializerFactory.java
  
  Index: ArraySerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializerFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.5.10.1
  diff -u -r1.5 -r1.5.10.1
  --- ArraySerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.5
  +++ ArraySerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.5.10.1
  @@ -76,6 +76,6 @@
    */
   public class ArraySerializerFactory extends BaseSerializerFactory {
       public ArraySerializerFactory() {
  -        super(ArraySerializer.class, false); 
  +        super(ArraySerializer.class);
       }
   }
  
  
  
  1.6.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/Base64SerializerFactory.java
  
  Index: Base64SerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64SerializerFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.6.10.1
  diff -u -r1.6 -r1.6.10.1
  --- Base64SerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.6
  +++ Base64SerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.6.10.1
  @@ -76,6 +76,6 @@
    */
   public class Base64SerializerFactory extends BaseSerializerFactory {
       public   Base64SerializerFactory(Class javaType, QName xmlType) {
  -        super(Base64Serializer.class, true, xmlType, javaType);  // Share Base64Serializer instance
  +        super(Base64Serializer.class, xmlType, javaType);  // Share Base64Serializer instance
       } 
   }
  
  
  
  1.8.4.2   +5 -14     xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java
  
  Index: BaseDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java,v
  retrieving revision 1.8.4.1
  retrieving revision 1.8.4.2
  diff -u -r1.8.4.1 -r1.8.4.2
  --- BaseDeserializerFactory.java	25 Sep 2002 20:03:07 -0000	1.8.4.1
  +++ BaseDeserializerFactory.java	30 Sep 2002 13:19:25 -0000	1.8.4.2
  @@ -90,13 +90,17 @@
        */
       public BaseDeserializerFactory(Class deserClass) {
           this.deserClass = deserClass;
  +        this.mechanisms = new Vector();
  +        this.mechanisms.add(Constants.AXIS_SAX);
       }
       public BaseDeserializerFactory(Class deserClass,
                                      QName xmlType,
                                      Class javaType) {
  -        this.deserClass = deserClass;
  +        this(deserClass);
           this.xmlType = xmlType;
           this.javaType = javaType;
  +        this.deserClassConstructor = getConstructor(deserClass); 
  +        this.getDeserializer = getDeserializerMethod(javaType);    
       }
   
       public javax.xml.rpc.encoding.Deserializer
  @@ -132,9 +136,6 @@
        */
       protected Deserializer getGeneralPurpose(String mechanismType) {
           if (javaType != null && xmlType != null) {
  -            if (deserClassConstructor == null) {
  -                deserClassConstructor = getConstructor(deserClass); 
  -            }
               if (deserClassConstructor != null) {
                   try {
                       return (Deserializer) 
  @@ -165,12 +166,6 @@
        */
       protected Deserializer getSpecialized(String mechanismType) {
           if (javaType != null && xmlType != null) {
  -            // Ensure that getDeserializerMethod is called only once.
  -            synchronized (this) {
  -                if (getDeserializer == null) {
  -                    getDeserializer = getDeserializerMethod(javaType);    
  -                }
  -            }
               if (getDeserializer != null) {
                   try {
                       return (Deserializer) 
  @@ -219,10 +214,6 @@
        * @return List of unique identifiers for the supported XML processing mechanism types
        */
       public Iterator getSupportedMechanismTypes() {
  -        if (mechanisms == null) {
  -            mechanisms = new Vector();
  -            mechanisms.add(Constants.AXIS_SAX);
  -        }
           return mechanisms.iterator();
       }
   
  
  
  
  1.15.4.2  +21 -40    xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java
  
  Index: BaseSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java,v
  retrieving revision 1.15.4.1
  retrieving revision 1.15.4.2
  diff -u -r1.15.4.1 -r1.15.4.2
  --- BaseSerializerFactory.java	25 Sep 2002 20:03:07 -0000	1.15.4.1
  +++ BaseSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.15.4.2
  @@ -55,27 +55,17 @@
   
   package org.apache.axis.encoding.ser;
   
  -import org.xml.sax.Attributes;
  -import org.xml.sax.SAXException;
  -
   import javax.xml.namespace.QName;
   import javax.xml.rpc.JAXRPCException;
   
  -import java.io.IOException;
   import java.util.Vector;
   import java.util.Iterator;
   
   import org.apache.axis.Constants;
   import org.apache.axis.utils.ClassUtils;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.encoding.SerializerFactory;
  -import org.apache.axis.encoding.SerializationContext;
  -import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.encoding.DeserializationContext;
  -import org.apache.axis.encoding.Deserializer;
   
   import java.lang.reflect.Constructor;
   import java.lang.reflect.Method;
  @@ -92,7 +82,6 @@
       static Vector mechanisms = null;
       
       protected Class serClass = null;
  -    protected boolean share = false;
       protected Serializer ser = null;
       protected QName xmlType = null;
       protected Class javaType = null;
  @@ -102,44 +91,46 @@
       /**
        * Constructor
        * @param serClass is the class of the Serializer
  -     * @param share indicates if serializers can be shared. getSerializerAs 
  -     * will always return the same serializer object if share is true.  
        * Sharing is only valid for xml primitives.
        */
  -    public BaseSerializerFactory(Class serClass, boolean share) {
  +    public BaseSerializerFactory(Class serClass) {
           this.serClass = serClass;
  -        this.share = share;
       }
  -    public BaseSerializerFactory(Class serClass, boolean share, 
  +    public BaseSerializerFactory(Class serClass,
                                    QName xmlType, Class javaType) {
  -        this.serClass = serClass;
  -        this.share = share;
  +        this(serClass);
           this.xmlType = xmlType;
           this.javaType = javaType;
  +        this.serClassConstructor = getConstructor(serClass);
  +        this.getSerializer = getSerializerMethod(javaType);
       }
   
       public javax.xml.rpc.encoding.Serializer 
           getSerializerAs(String mechanismType)
           throws JAXRPCException {
  -        // Need to add code to check against mechanisms vector.
  -        if (share && ser != null) {
  +        synchronized (this) {
  +            if (ser==null) {
  +                ser = getSerializerAsInternal(mechanismType);
  +            }
               return ser;
           }
  -        ser = null;
  -
  +    }
  +    
  +    protected Serializer getSerializerAsInternal(String mechanismType)
  +        throws JAXRPCException {
           // Try getting a specialized Serializer
  -        ser = getSpecialized(mechanismType);
  +        Serializer serializer = getSpecialized(mechanismType);
           
           // Try getting a general purpose Serializer via constructor
           // invocation
  -        if (ser == null) {
  -            ser = getGeneralPurpose(mechanismType);
  +        if (serializer == null) {
  +            serializer = getGeneralPurpose(mechanismType);
           }
   
           try {            
               // If not successfull, try newInstance
  -            if (ser == null) {
  -                ser = (Serializer) serClass.newInstance();
  +            if (serializer == null) {
  +                serializer = (Serializer) serClass.newInstance();
               }
           } catch (Exception e) {
               throw new JAXRPCException(
  @@ -147,7 +138,7 @@
                                        serClass.getName()),
                   e);
           }
  -        return ser;
  +        return serializer;
       }
       
       /**
  @@ -156,10 +147,6 @@
        */
       protected Serializer getGeneralPurpose(String mechanismType) {
           if (javaType != null && xmlType != null) {
  -            if (serClassConstructor == null) {
  -                serClassConstructor = getConstructor(serClass);
  -            }
  -
               if (serClassConstructor != null) {
                   try {
                       return (Serializer) 
  @@ -190,12 +177,6 @@
        */
       protected Serializer getSpecialized(String mechanismType) {
           if (javaType != null && xmlType != null) {
  -            // Ensure that getSerializerMethod is called only once.
  -            synchronized (this) {
  -                if (getSerializer == null) {
  -                    getSerializer = getSerializerMethod(javaType);
  -                }
  -            }
               if (getSerializer != null) {
                   try {
                       return (Serializer) 
  @@ -277,8 +258,8 @@
        * public <constructor>(Class javaType, QName xmlType)
        * public <constructor>()
        * @param factory class
  -     * @param QName xmlType
  -     * @param Class javaType
  +     * @param xmlType
  +     * @param javaType
        */
       public static SerializerFactory createFactory(Class factory, 
                                                     Class javaType, 
  
  
  
  1.58.4.1  +6 -0      xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java
  
  Index: BeanSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v
  retrieving revision 1.58
  retrieving revision 1.58.4.1
  diff -u -r1.58 -r1.58.4.1
  --- BeanSerializer.java	20 Sep 2002 20:20:05 -0000	1.58
  +++ BeanSerializer.java	30 Sep 2002 13:19:25 -0000	1.58.4.1
  @@ -420,6 +420,12 @@
                               boolean isUnbounded,
                               boolean isOmittable, Element where) throws Exception {
           String elementType = types.writeType(fieldType);
  +        if (elementType == null) {
  +            // If writeType returns null, then emit an anytype in such situations.
  +            QName anyQN = Constants.XSD_ANYTYPE;
  +            String prefix = types.getNamespaces().getCreatePrefix(anyQN.getNamespaceURI());
  +            elementType = prefix + ":" + anyQN.getLocalPart();
  +        }
           Element elem = types.createElement(fieldName,
                                              elementType,
                                              types.isNullable(fieldType),
  
  
  
  1.6.4.1   +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializerFactory.java
  
  Index: BeanSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializerFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.6.4.1
  diff -u -r1.6 -r1.6.4.1
  --- BeanSerializerFactory.java	17 Sep 2002 22:55:47 -0000	1.6
  +++ BeanSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.6.4.1
  @@ -85,7 +85,7 @@
       protected BeanPropertyDescriptor[] propertyDescriptor = null;
   
       public BeanSerializerFactory(Class javaType, QName xmlType) {
  -        super(BeanSerializer.class, false, xmlType, javaType);  
  +        super(BeanSerializer.class, xmlType, javaType);
           // Sometimes an Enumeration class is registered as a Bean.
           // If this is the case, silently switch to the EnumSerializer
           if (JavaUtils.isEnumClass(javaType)) {
  
  
  
  1.2.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/CalendarSerializerFactory.java
  
  Index: CalendarSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/CalendarSerializerFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.2.10.1
  diff -u -r1.2 -r1.2.10.1
  --- CalendarSerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.2
  +++ CalendarSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.2.10.1
  @@ -63,6 +63,6 @@
    */
   public class CalendarSerializerFactory extends BaseSerializerFactory {
       public CalendarSerializerFactory(Class javaType, QName xmlType) {
  -        super(CalendarSerializer.class, true, xmlType, javaType);   // true indicates shared class
  +        super(CalendarSerializer.class, xmlType, javaType);   // true indicates shared class
       }
   }
  
  
  
  1.3.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializerFactory.java
  
  Index: DateSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializerFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.3.10.1
  diff -u -r1.3 -r1.3.10.1
  --- DateSerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.3
  +++ DateSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.3.10.1
  @@ -76,6 +76,6 @@
    */
   public class DateSerializerFactory extends BaseSerializerFactory {
       public DateSerializerFactory(Class javaType, QName xmlType) {
  -        super(DateSerializer.class, true, xmlType, javaType);   // true indicates shared class
  +        super(DateSerializer.class, xmlType, javaType);   // true indicates shared class
       }
   }
  
  
  
  1.3.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializerFactory.java
  
  Index: ElementSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializerFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.3.10.1
  diff -u -r1.3 -r1.3.10.1
  --- ElementSerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.3
  +++ ElementSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.3.10.1
  @@ -76,6 +76,6 @@
    */
   public class ElementSerializerFactory extends BaseSerializerFactory {
       public ElementSerializerFactory() {
  -        super(ElementSerializer.class, true);  // Share ElementSerializer instance
  +        super(ElementSerializer.class);  // Share ElementSerializer instance
       }
   }
  
  
  
  1.3.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializerFactory.java
  
  Index: EnumSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializerFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.3.10.1
  diff -u -r1.3 -r1.3.10.1
  --- EnumSerializerFactory.java	11 Jun 2002 14:53:55 -0000	1.3
  +++ EnumSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.3.10.1
  @@ -76,6 +76,6 @@
    */
   public class EnumSerializerFactory extends BaseSerializerFactory {
       public EnumSerializerFactory(Class javaType, QName xmlType) {
  -        super(EnumSerializer.class, true, xmlType, javaType);  // Share EnumSerializer instance
  +        super(EnumSerializer.class, xmlType, javaType);  // Share EnumSerializer instance
       }
   }
  
  
  
  1.4.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializerFactory.java
  
  Index: HexSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializerFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.4.10.1
  diff -u -r1.4 -r1.4.10.1
  --- HexSerializerFactory.java	11 Jun 2002 14:53:56 -0000	1.4
  +++ HexSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.4.10.1
  @@ -76,6 +76,6 @@
    */
   public class HexSerializerFactory extends BaseSerializerFactory {
       public HexSerializerFactory(Class javaType, QName xmlType) {
  -        super(HexSerializer.class, true, xmlType, javaType);  // Share HexSerializer instance
  +        super(HexSerializer.class, xmlType, javaType);  // Share HexSerializer instance
       }
   }
  
  
  
  1.4.4.1   +2 -2      xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializerFactory.java
  
  Index: JAFDataHandlerSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializerFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.4.4.1
  diff -u -r1.4 -r1.4.4.1
  --- JAFDataHandlerSerializerFactory.java	26 Aug 2002 13:10:21 -0000	1.4
  +++ JAFDataHandlerSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.4.4.1
  @@ -71,10 +71,10 @@
   public class JAFDataHandlerSerializerFactory extends BaseSerializerFactory {
   
       public JAFDataHandlerSerializerFactory(Class javaType, QName xmlType) {
  -        super(getSerializerClass(javaType, xmlType), false, xmlType, javaType); 
  +        super(getSerializerClass(javaType, xmlType), xmlType, javaType);
       }
       public JAFDataHandlerSerializerFactory() {
  -        super(JAFDataHandlerSerializer.class, false); 
  +        super(JAFDataHandlerSerializer.class);
       }
   
       private static Class getSerializerClass(Class javaType, QName xmlType) {
  
  
  
  1.5.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializerFactory.java
  
  Index: MapSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializerFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.5.10.1
  diff -u -r1.5 -r1.5.10.1
  --- MapSerializerFactory.java	11 Jun 2002 14:53:56 -0000	1.5
  +++ MapSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.5.10.1
  @@ -86,6 +86,6 @@
   public class MapSerializerFactory extends BaseSerializerFactory {
   
       public MapSerializerFactory(Class javaType, QName xmlType) {
  -        super(MapSerializer.class, false, xmlType, javaType); 
  +        super(MapSerializer.class, xmlType, javaType);
       }
   }
  
  
  
  1.2.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/QNameSerializerFactory.java
  
  Index: QNameSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/QNameSerializerFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.2.10.1
  diff -u -r1.2 -r1.2.10.1
  --- QNameSerializerFactory.java	11 Jun 2002 14:53:56 -0000	1.2
  +++ QNameSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.2.10.1
  @@ -62,6 +62,6 @@
    */
   public class QNameSerializerFactory extends BaseSerializerFactory {
       public QNameSerializerFactory(Class javaType, QName xmlType) {
  -        super(QNameSerializer.class, true, xmlType, javaType);   // true indicates shared class
  +        super(QNameSerializer.class, xmlType, javaType);   // true indicates shared class
       }
   }
  
  
  
  1.27.4.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java
  
  Index: SimpleDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java,v
  retrieving revision 1.27
  retrieving revision 1.27.4.1
  diff -u -r1.27 -r1.27.4.1
  --- SimpleDeserializer.java	19 Sep 2002 20:17:35 -0000	1.27
  +++ SimpleDeserializer.java	30 Sep 2002 13:19:25 -0000	1.27.4.1
  @@ -207,7 +207,7 @@
                              DeserializationContext context)
           throws SAXException
       {
  -        if (isNil || val == null || val.length() == 0) {
  +        if (isNil || val == null) {
               value = null;
               return;
           }
  
  
  
  1.5.10.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ser/VectorSerializerFactory.java
  
  Index: VectorSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/VectorSerializerFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.5.10.1
  diff -u -r1.5 -r1.5.10.1
  --- VectorSerializerFactory.java	11 Jun 2002 14:53:56 -0000	1.5
  +++ VectorSerializerFactory.java	30 Sep 2002 13:19:25 -0000	1.5.10.1
  @@ -86,6 +86,6 @@
   public class VectorSerializerFactory extends BaseSerializerFactory {
   
       public VectorSerializerFactory(Class javaType, QName xmlType) {
  -        super(VectorSerializer.class, false, xmlType, javaType); 
  +        super(VectorSerializer.class, xmlType, javaType);
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/SimpleSerializerFactory.java
  
  Index: SimpleSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleSerializerFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.2   +2 -2      xml-axis/java/src/org/apache/axis/i18n/resource.properties
  
  Index: resource.properties
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/i18n/resource.properties,v
  retrieving revision 1.6.2.1
  retrieving revision 1.6.2.2
  diff -u -r1.6.2.1 -r1.6.2.2
  --- resource.properties	25 Sep 2002 20:03:07 -0000	1.6.2.1
  +++ resource.properties	30 Sep 2002 13:19:26 -0000	1.6.2.2
  @@ -910,8 +910,8 @@
   
   generating=Generating {0}
   
  -j2woptStyle00=The style of binding in the WSDL, either DOCUMENT or RPC.
  -j2woptBadStyle00=The value of --style must be DOCUMENT or RPC.
  +j2woptStyle00=The style of binding in the WSDL, either DOCUMENT, RPC, or WRAPPED.
  +j2woptBadStyle00=The value of --style must be DOCUMENT, RPC, or WRAPPED.
   
   noClassForService00=Could not find class for the service named: {0}\nHint: you may need to copy your class files/tree into the right location (which depends on the servlet system you are using).
   j2wDuplicateClass00=The <class-of-portType> has already been specified as, {0}.  It cannot be specified again as {1}.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.75.4.1  +0 -2      xml-axis/java/src/org/apache/axis/message/RPCElement.java
  
  Index: RPCElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v
  retrieving revision 1.75
  retrieving revision 1.75.4.1
  diff -u -r1.75 -r1.75.4.1
  --- RPCElement.java	18 Sep 2002 16:10:28 -0000	1.75
  +++ RPCElement.java	30 Sep 2002 13:19:26 -0000	1.75.4.1
  @@ -56,7 +56,6 @@
   package org.apache.axis.message;
   
   import org.apache.axis.AxisFault;
  -import org.apache.axis.Constants;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
   import org.apache.axis.description.OperationDesc;
  @@ -65,7 +64,6 @@
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.enum.Style;
   import org.apache.axis.handlers.soap.SOAPService;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.wsdl.toJava.Utils;
   import org.xml.sax.Attributes;
  
  
  
  1.50.4.1  +0 -1      xml-axis/java/src/org/apache/axis/message/RPCParam.java
  
  Index: RPCParam.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCParam.java,v
  retrieving revision 1.50
  retrieving revision 1.50.4.1
  diff -u -r1.50 -r1.50.4.1
  --- RPCParam.java	18 Sep 2002 16:10:28 -0000	1.50
  +++ RPCParam.java	30 Sep 2002 13:19:26 -0000	1.50.4.1
  @@ -55,7 +55,6 @@
   package org.apache.axis.message;
   
   import org.apache.axis.encoding.SerializationContext;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.description.ParameterDesc;
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.80.4.1  +31 -29    xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java
  
  Index: JavaProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java,v
  retrieving revision 1.80
  retrieving revision 1.80.4.1
  diff -u -r1.80 -r1.80.4.1
  --- JavaProvider.java	18 Sep 2002 16:10:33 -0000	1.80
  +++ JavaProvider.java	30 Sep 2002 13:19:27 -0000	1.80.4.1
  @@ -70,7 +70,6 @@
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.providers.BasicProvider;
   import org.apache.axis.utils.ClassUtils;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.utils.cache.ClassCache;
   import org.apache.axis.utils.cache.JavaClass;
  @@ -252,44 +251,42 @@
                   null, null);
           }
   
  -        try {
  -            IntHolder scope   = new IntHolder();
  -            Object obj        = getServiceObject(msgContext,
  -                                                 service,
  -                                                 clsName,
  -                                                 scope);
  +        IntHolder scope   = new IntHolder();
  +        Object serviceObject = null;
   
  -            Message        reqMsg  = msgContext.getRequestMessage();
  -            SOAPEnvelope   reqEnv  = (SOAPEnvelope)reqMsg.getSOAPEnvelope();
  +        try {
  +            serviceObject = getServiceObject(msgContext, service, clsName, scope);
  +    
               Message        resMsg  = msgContext.getResponseMessage();
  -            SOAPEnvelope   resEnv  = (resMsg == null) ?
  -                                     new SOAPEnvelope(msgContext.
  -                                                        getSOAPConstants()) :
  -                                     (SOAPEnvelope)resMsg.getSOAPEnvelope();
  +            SOAPEnvelope   resEnv;
   
               // If we didn't have a response message, make sure we set one up
               if (resMsg == null) {
  +                resEnv  = new SOAPEnvelope(msgContext.getSOAPConstants());
  +
                   resMsg = new Message(resEnv);
                   msgContext.setResponseMessage( resMsg );
  +            } else {
  +                resEnv  = (SOAPEnvelope)resMsg.getSOAPEnvelope();
               }
   
  -            try {
  -                processMessage(msgContext, reqEnv,
  -                               resEnv, obj);
  -            } catch (Exception exp) {
  -                throw exp;
  -            } finally {
  -                // If this is a request scoped service object which implements
  -                // ServiceLifecycle, let it know that it's being destroyed now.
  -                if (scope.value == Scope.REQUEST.getValue() &&
  -                        obj instanceof ServiceLifecycle) {
  -                    ((ServiceLifecycle)obj).destroy();
  -                }
  -            }
  +            Message        reqMsg  = msgContext.getRequestMessage();
  +            SOAPEnvelope   reqEnv  = (SOAPEnvelope)reqMsg.getSOAPEnvelope();
  +
  +            processMessage(msgContext, reqEnv, resEnv, serviceObject);
           }
           catch( Exception exp ) {
               entLog.debug( Messages.getMessage("toAxisFault00"), exp);
               throw AxisFault.makeFault(exp);
  +        } finally {
  +            // If this is a request scoped service object which implements
  +            // ServiceLifecycle, let it know that it's being destroyed now.
  +            if (serviceObject != null  &&
  +                scope.value == Scope.REQUEST.getValue() &&
  +                serviceObject instanceof ServiceLifecycle)
  +            {
  +                ((ServiceLifecycle)serviceObject).destroy();
  +            }
           }
   
           if (log.isDebugEnabled())
  @@ -377,9 +374,14 @@
               String alias = (String)service.getOption("alias");
               if(alias != null) emitter.setServiceElementName(alias);
   
  -            emitter.setMode( (service.getStyle() == Style.RPC)
  -                             ? Emitter.MODE_RPC
  -                             : Emitter.MODE_DOCUMENT);
  +            Style style = serviceDesc.getStyle();
  +            if (style == Style.RPC) {
  +                emitter.setMode(Emitter.MODE_RPC);
  +            } else if (style == Style.DOCUMENT) {
  +                emitter.setMode(Emitter.MODE_DOCUMENT);
  +            } else if (style == Style.WRAPPED) {
  +                emitter.setMode(Emitter.MODE_DOC_WRAPPED);
  +            }
   
               emitter.setClsSmart(serviceDesc.getImplClass(), locationUrl);
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.9.4.1   +31 -9     xml-axis/java/src/org/apache/axis/server/JNDIAxisServerFactory.java
  
  Index: JNDIAxisServerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/JNDIAxisServerFactory.java,v
  retrieving revision 1.9
  retrieving revision 1.9.4.1
  diff -u -r1.9 -r1.9.4.1
  --- JNDIAxisServerFactory.java	18 Sep 2002 16:10:39 -0000	1.9
  +++ JNDIAxisServerFactory.java	30 Sep 2002 13:19:27 -0000	1.9.4.1
  @@ -130,21 +130,43 @@
                   
               // THIS IS NOT ACCEPTABLE JNDI NAMING...
               String name = servletContext.getRealPath("/WEB-INF/Server");
  +
  +// The following was submitted as a patch, but I don't believe this
  +// is going to produce a valid JNDI name of ANY sort... yuck.
  +// This would produce a URL, not a path name.
  +//
  +// Since it appears, from comments above, that this entire scheme is
  +// broken, then for now I'll simply check for a null-name to prevent
  +// possible NPE on WebLogic.
  +//
  +// What ARE we doing here?!?!
  +//            
  +//            if (name == null) {
  +//                try {
  +//                    name = servletContext.getResource("/WEB-INF/Server").toString();
  +//                } catch (Exception e) {
  +//                    // ignore
  +//                }
  +//            }
                   
               // We've got JNDI, so try to find an AxisServer at the
               // specified name.
  -            try {
  -                server = (AxisServer)context.lookup(name);
  -            } catch (NamingException e) {
  -                // Didn't find it.
  -                server = super.getServer(environment);
  +            if (name != null) {
                   try {
  -                    context.bind(name, server);
  -                } catch (NamingException e1) {
  -                    // !!! Couldn't do it, what should we do here?
  +                    server = (AxisServer)context.lookup(name);
  +                } catch (NamingException e) {
  +                    // Didn't find it.
  +                    server = super.getServer(environment);
  +                    try {
  +                        context.bind(name, server);
  +                    } catch (NamingException e1) {
  +                        // !!! Couldn't do it, what should we do here?
  +                    }
                   }
               }
  -        } else {
  +        }
  +        
  +        if (server == null) {
               server = super.getServer(environment);
           }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.143.4.2 +28 -14    xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java
  
  Index: AxisServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java,v
  retrieving revision 1.143.4.1
  retrieving revision 1.143.4.2
  diff -u -r1.143.4.1 -r1.143.4.2
  --- AxisServlet.java	25 Sep 2002 20:03:08 -0000	1.143.4.1
  +++ AxisServlet.java	30 Sep 2002 13:19:27 -0000	1.143.4.2
  @@ -175,8 +175,18 @@
               JavaUtils.isTrueExplicitly(getOption(context, INIT_PROPERTY_ENABLE_LIST, null));
   
           jwsClassDir = getOption(context, INIT_PROPERTY_JWS_CLASS_DIR, null);
  +
  +        /**
  +         * There are DEFINITATE problems here if
  +         * getHomeDir and/or getDefaultJWSClassDir return null
  +         * (as they could with WebLogic).
  +         * This needs to be reexamined in the future, but this
  +         * should fix any NPE's in the mean time.
  +         */
           if (jwsClassDir != null) {
  -            jwsClassDir = getHomeDir()+ jwsClassDir;
  +            if (getHomeDir() != null) {
  +                jwsClassDir = getHomeDir() + jwsClassDir;
  +            }
           } else {
               jwsClassDir = getDefaultJWSClassDir();
           }
  @@ -705,17 +715,23 @@
                     res.setHeader("WWW-Authenticate","Basic realm=\"AXIS\"");
                     // TODO: less generic realm choice?
                   res.setStatus(status);
  -                responseMsg = new Message(e);
  +                responseMsg = msgContext.getResponseMessage();
  +                if (responseMsg == null)
  +                    responseMsg = new Message(e);
                   contentType = responseMsg.getContentType(msgContext.getSOAPConstants()); 
               } catch (Exception e) {
                   log.error(Messages.getMessage("exception00"), e);
                   res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
  -                responseMsg = new Message(AxisFault.makeFault(e));
  +                responseMsg = msgContext.getResponseMessage();
  +                if (responseMsg == null)
  +                    responseMsg = new Message(AxisFault.makeFault(e));
                   contentType = responseMsg.getContentType(msgContext.getSOAPConstants()); 
               }
           } catch (AxisFault fault) {
               log.error(Messages.getMessage("axisFault00"), fault);
  -            responseMsg = new Message(fault);
  +            responseMsg = msgContext.getResponseMessage();
  +            if (responseMsg == null)
  +                responseMsg = new Message(fault);
               contentType = responseMsg.getContentType(msgContext.getSOAPConstants()); 
           }
           if( tlog.isDebugEnabled() ) {
  @@ -837,16 +853,16 @@
                         req.getHeader( HTTPConstants.HEADER_CONTENT_TYPE));
               log.debug("HEADER_CONTENT_LOCATION:" +
                         req.getHeader( HTTPConstants.HEADER_CONTENT_LOCATION));
  -            log.debug("Constants.MC_HOME_DIR:" +
  -                      getHomeDir());
  +            log.debug("Constants.MC_HOME_DIR:" + String.valueOf(getHomeDir()));
               log.debug("Constants.MC_RELATIVE_PATH:"+req.getServletPath());
  -            log.debug("HTTPConstants.MC_HTTP_SERVLETLOCATION:"+ getWebInfPath() );
  +            
  +            log.debug("HTTPConstants.MC_HTTP_SERVLETLOCATION:"+ String.valueOf(getWebInfPath()));
               log.debug("HTTPConstants.MC_HTTP_SERVLETPATHINFO:" +
                         req.getPathInfo() );
               log.debug("HTTPConstants.HEADER_AUTHORIZATION:" +
                         req.getHeader(HTTPConstants.HEADER_AUTHORIZATION));
               log.debug("Constants.MC_REMOTE_ADDR:"+req.getRemoteAddr());
  -            log.debug("configPath:" + getWebInfPath());
  +            log.debug("configPath:" + String.valueOf(getWebInfPath()));
           }
   
           /* Set the Transport */
  @@ -871,11 +887,7 @@
           msgContext.setProperty(Constants.MC_REMOTE_ADDR, req.getRemoteAddr());
   
           // Set up a javax.xml.rpc.server.ServletEndpointContext
  -        ServletEndpointContextImpl sec =
  -                new ServletEndpointContextImpl(new AxisHttpSession(req),
  -                                               msgContext,
  -                                               req.getUserPrincipal(),
  -                                               getServletConfig().getServletContext());
  +        ServletEndpointContextImpl sec = new ServletEndpointContextImpl();
   
           msgContext.setProperty(Constants.MC_SERVLET_ENDPOINT_CONTEXT, sec);
           /* Save the real path */
  @@ -936,7 +948,9 @@
        * @return directory for JWS files
        */
       protected String getDefaultJWSClassDir() {
  -        return getWebInfPath() + File.separator +  "jwsClasses";
  +        return (getWebInfPath() == null)
  +               ? null  // ??? what is a good FINAL default for WebLogic?
  +               : getWebInfPath() + File.separator +  "jwsClasses";
       }
   
       /**
  
  
  
  1.2.6.1   +17 -22    xml-axis/java/src/org/apache/axis/transport/http/ServletEndpointContextImpl.java
  
  Index: ServletEndpointContextImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/ServletEndpointContextImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.2.6.1
  diff -u -r1.2 -r1.2.6.1
  --- ServletEndpointContextImpl.java	13 Aug 2002 00:38:46 -0000	1.2
  +++ ServletEndpointContextImpl.java	30 Sep 2002 13:19:27 -0000	1.2.6.1
  @@ -54,42 +54,37 @@
    */
   package org.apache.axis.transport.http;
   
  -import javax.xml.rpc.server.ServletEndpointContext;
  -import javax.xml.rpc.handler.MessageContext;
  -import javax.servlet.http.HttpSession;
  -import javax.servlet.ServletContext;
   import java.security.Principal;
   
  +import javax.servlet.ServletContext;
  +import javax.servlet.http.HttpServlet;
  +import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpSession;
  +import javax.xml.rpc.handler.MessageContext;
  +import javax.xml.rpc.server.ServletEndpointContext;
  +
   public class ServletEndpointContextImpl implements ServletEndpointContext {
       
  -    private AxisHttpSession httpSession;
  -    private MessageContext msgContext ;
  -    private ServletContext servletContext;
  -    private Principal principal;
  -    
       public HttpSession getHttpSession() {
  -        return httpSession.getRep();
  +        HttpServletRequest srvreq = (HttpServletRequest) 
  +                getMessageContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
  +        return (srvreq == null)  ? null : srvreq.getSession();
       }
   
       public MessageContext getMessageContext() {
  -        return msgContext;
  +        return org.apache.axis.MessageContext.getCurrentContext();
       }
   
       public ServletContext getServletContext() {
  -        return servletContext;
  +        HttpServlet srv = (HttpServlet)
  +                getMessageContext().getProperty(HTTPConstants.MC_HTTP_SERVLET);
  +        return (srv == null) ? null : srv.getServletContext();
       }
   
       public Principal getUserPrincipal() {
  -        return principal;
  -    }
  +        HttpServletRequest srvreq = (HttpServletRequest)
  +                getMessageContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
   
  -    /**
  -     * Full constructor
  -     */ 
  -    public ServletEndpointContextImpl(AxisHttpSession httpSession, MessageContext msgContext, Principal principal, ServletContext servletContext) {
  -        this.httpSession = httpSession;
  -        this.msgContext = msgContext;
  -        this.principal = principal;
  -        this.servletContext = servletContext;
  +        return (srvreq == null) ? null : srvreq.getUserPrincipal();
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.26.4.1  +2 -1      xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java
  
  Index: Java2WSDL.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java,v
  retrieving revision 1.26
  retrieving revision 1.26.4.1
  diff -u -r1.26 -r1.26.4.1
  --- Java2WSDL.java	18 Sep 2002 16:10:40 -0000	1.26
  +++ Java2WSDL.java	30 Sep 2002 13:19:28 -0000	1.26.4.1
  @@ -58,7 +58,6 @@
   import org.apache.axis.utils.CLOption;
   import org.apache.axis.utils.CLOptionDescriptor;
   import org.apache.axis.utils.CLUtil;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   
   import org.apache.axis.wsdl.fromJava.Emitter;
  @@ -380,6 +379,8 @@
                       emitter.setMode(Emitter.MODE_DOCUMENT);
                   } else if (value.equalsIgnoreCase("RPC")) {
                       emitter.setMode(Emitter.MODE_RPC);
  +                } else if (value.equalsIgnoreCase("WRAPPED")) {
  +                    emitter.setMode(Emitter.MODE_DOC_WRAPPED);
                   } else {
                       System.out.println(Messages.getMessage("j2woptBadStyle00"));
                   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.61.4.1  +82 -21    xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
  
  Index: Emitter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java,v
  retrieving revision 1.61
  retrieving revision 1.61.4.1
  diff -u -r1.61 -r1.61.4.1
  --- Emitter.java	29 Aug 2002 20:05:51 -0000	1.61
  +++ Emitter.java	30 Sep 2002 13:19:28 -0000	1.61.4.1
  @@ -121,13 +121,15 @@
    * @author Rich Scheuerle (scheu@us.ibm.com)
    */
   public class Emitter {
  -
  +    // Generated WSDL Modes
       public static final int MODE_ALL = 0;
       public static final int MODE_INTERFACE = 1;
       public static final int MODE_IMPLEMENTATION = 2;
   
  +    // Style Modes
       public static final int MODE_RPC = 0;
       public static final int MODE_DOCUMENT = 1;
  +    public static final int MODE_DOC_WRAPPED = 2;
   
       private Class cls;
       private Class implCls;                 // Optional implementation class
  @@ -816,8 +818,12 @@
               names.add(param.getName());
           }
   
  -        if (names.size() > 0)
  +        if (names.size() > 0) {
  +            if (mode == MODE_DOC_WRAPPED) {
  +                names.clear();
  +            }
               oper.setParameterOrdering(names);
  +        }
       }
   
       /** Create a Operation
  @@ -1074,30 +1080,85 @@
               javaType = JavaUtils.getHolderValueType(javaType);
           }
   
  -        // Write the type representing the parameter type
  -        QName elemQName = null;
  -        if (mode != MODE_RPC)
  -            elemQName = param.getQName();
  -        if (mode == MODE_RPC) {
  -            QName typeQName = types.writePartType(javaType,
  -                                                  param.getTypeQName());
  +        switch(mode) {
  +        case MODE_RPC: {
  +            // Add the type representing the param
  +            // For convenience, add an element for the param
  +            // Write <part name=param_name type=param_type>
  +            QName typeQName = 
  +                types.writeTypeForPart(javaType,
  +                                       param.getTypeQName());
  +            types.writeElementForPart(javaType, param.getTypeQName());
               if (typeQName != null) {
  +                part.setName(param.getName());
                   part.setTypeName(typeQName);
  +                msg.addPart(part);
  +            }
  +            break;
  +        }
  +        case MODE_DOCUMENT: {
  +            // Write the type representing the param.
  +            // Write the element representing the param
  +            // If an element was written
  +            //   Write <part name=param_name element=param_element>
  +            // Else its a simple type, 
  +            //   Write <part name=param_name type=param_type>
  +            QName typeQName = 
  +                types.writeTypeForPart(javaType,
  +                                       param.getTypeQName());
  +            QName elemQName = 
  +                types.writeElementForPart(javaType,
  +                                          param.getTypeQName());
  +            if (elemQName != null) {
                   part.setName(param.getName());
  +                part.setElementName(elemQName);
  +                msg.addPart(part);
  +            } else if (typeQName != null) {
  +                part.setName(param.getName());
  +                part.setTypeName(typeQName);
                   msg.addPart(part);
               }
  -        } else if (elemQName != null) {
  -            String namespaceURI = elemQName.getNamespaceURI();
  -            if (namespaceURI != null && !namespaceURI.equals("")) {
  -                def.addNamespace(namespaces.getCreatePrefix(namespaceURI),
  -                        namespaceURI);
  -            }
  -            part.setElementName(elemQName);
  -            part.setName(param.getName());
  -            msg.addPart(part);
  -        } else {
  -            // ?? Throw an exception here?  Must have an element if not
  -            // RPC style?
  +            break;
  +        }
  +        case MODE_DOC_WRAPPED: {
  +            // Write type representing the param
  +            QName typeQName = 
  +                types.writeTypeForPart(javaType,
  +                                       param.getTypeQName());
  +
  +            // Get the QName of the wrapper element
  +            QName wrapperQName = null;
  +            if (request) {
  +                wrapperQName = 
  +                    new QName(
  +                        msg.getQName().getNamespaceURI(),
  +                        msg.getQName().getLocalPart().substring(0,
  +                           msg.getQName().getLocalPart().indexOf("Request"))); 
  +            } else {
  +                wrapperQName = msg.getQName();
  +            }
  +            
  +            if (typeQName != null) {
  +                // Write/Get the wrapper element
  +                // and append a child element repesenting
  +                // the parameter
  +                if (types.writeWrapperForPart(wrapperQName,
  +                                              param.getName(),
  +                                              typeQName)) {
  +                    // If wrapper element is written
  +                    // add <part name="parameters" element=wrapper_elem />
  +                    // Really shouldn't matter what name is used, but
  +                    // .NET could be using "parameters" as an indication
  +                    // that this is wrapped mode.
  +                    part.setName("parameters");
  +                    part.setElementName(wrapperQName);
  +                    msg.addPart(part);
  +                }
  +            }
  +            break;
  +        }
  +        default:
  +            // ?? Throw an exception here?
           }
           return param.getName();
       }
  
  
  
  1.58.4.2  +158 -41   xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
  
  Index: Types.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
  retrieving revision 1.58.4.1
  retrieving revision 1.58.4.2
  diff -u -r1.58.4.1 -r1.58.4.2
  --- Types.java	25 Sep 2002 20:03:08 -0000	1.58.4.1
  +++ Types.java	30 Sep 2002 13:19:28 -0000	1.58.4.2
  @@ -115,6 +115,7 @@
       HashMap schemaTypes = null;
       HashMap schemaElementNames = null;
       HashMap schemaUniqueElementNames = null;
  +    HashMap wrapperMap = new HashMap();
       List stopClasses = null;
       List beanCompatErrs = new ArrayList();
   
  @@ -146,6 +147,13 @@
       }
   
       /**
  +     * Return the namespaces object for the current context
  +     */ 
  +    public Namespaces getNamespaces() {
  +        return namespaces;
  +    }
  +
  +    /**
        * Load the types from the input wsdl file.
        * @param inputWSDL file or URL
        */
  @@ -209,26 +217,72 @@
               if (te instanceof org.apache.axis.wsdl.symbolTable.Element) { 
                   addToElementsList(te.getQName());
               } else if (te instanceof Type) {
  -                addToTypesList(te.getQName(), 
  -                               te.getQName().getLocalPart());
  +                addToTypesList(te.getQName()); 
               }
           }
   
       
       }
   
  +
       /**
  -     * Serialize the Class as XML schema to the document.
  -     * Create a types node for the WSDL if one doesn't exist
  -     * Create a schema node for the Class namespace, if one doesn't exist
  +     * Write out a type referenced by a part type attribute.
        *
  -     * In case of a primitive type, no need to stream out anything, just return
  -     * the QName of the primitive type
  +     * @param type <code>Class</code> to generate the XML Schema info for
  +     * @param qname <code>QName</code> of the type.  If null, qname is
  +     *             defaulted from the class.
  +     * @return the QName of the generated Schema type, null if void,
  +     *         if the Class type cannot be converted to a schema type
  +     *         then xsd:anytype is returned.
  +     */
  +    public QName writeTypeForPart(Class type, QName qname) throws AxisFault {
  +        //patch by costin to fix an NPE; commented out till we find out what the problem is
  +        //if you get NullPointerExceptions in this class, turn it on and submit some
  +        //replicable test data to the Axis team via bugzilla
  +        /*
  +        if( type==null ) {
  +            return null;
  +        }
  +        */
  +        if (type.getName().equals("void")) {
  +          return null;
  +        }
  +
  +        if (Holder.class.isAssignableFrom(type)) {
  +            type = JavaUtils.getHolderValueType(type);
  +        }
  +
  +        // Get the qname 
  +        if (qname == null || 
  +            (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
  +             "Array".equals(qname.getLocalPart()))) {
  +            qname = getTypeQName(type);
  +            if (qname == null) {
  +                throw new AxisFault("Class:" + type.getName()); 
  +            }
  +        }
  +
  +        // Make sure a types section is present
  +        if (wsdlTypesElem == null) {
  +            writeWsdlTypesElement();
  +        }
  +
  +        // Write the type, if problems occur use ANYTYPE
  +        if (writeType(type, qname) == null) {
  +            qname = Constants.XSD_ANYTYPE;
  +        }
  +        return qname;
  +    }
  +
  +    /**
  +     * Write out an element referenced by a part element attribute.
        *
        * @param type <code>Class</code> to generate the XML Schema info for
  -     * @return the QName of the generated Schema type, null if void
  +     * @param qname <code>QName</code> of the element.  If null, qname is
  +     *             defaulted from the class.
  +     * @return the QName of the generated Schema type, null if no element
        */
  -    public QName writePartType(Class type, QName qname) throws AxisFault {
  +    public QName writeElementForPart(Class type, QName qname) throws AxisFault {
           //patch by costin to fix an NPE; commented out till we find out what the problem is
           //if you get NullPointerExceptions in this class, turn it on and submit some
           //replicable test data to the Axis team via bugzilla
  @@ -245,41 +299,94 @@
               type = JavaUtils.getHolderValueType(type);
           }
   
  -        if (qname == null) {
  +        // Get the qname 
  +        if (qname == null || 
  +            (Constants.isSOAP_ENC(qname.getNamespaceURI()) &&
  +             "Array".equals(qname.getLocalPart()))) {
               qname = getTypeQName(type);
               if (qname == null) {
  -                throw new AxisFault("Type was " + type.getName()); // FIXME!
  +                throw new AxisFault("Class:" +type.getName()); 
               }
           }
   
  -        /**
  -         * No need to do anything if this is a simple type (i.e. in the
  -         * xsd or soap-enc schemas already)
  -         */
  +        // Return null it a simple type (not an element)
           String nsURI = qname.getNamespaceURI();
           if (Constants.isSchemaXSD(nsURI) ||
                   (Constants.isSOAP_ENC(nsURI) &&
                     !"Array".equals(qname.getLocalPart()))) {
  -            return qname;
  +            return null;
           }
   
  +        // Make sure a types section is present
           if (wsdlTypesElem == null) {
               writeWsdlTypesElement();
           }
  -        // If writeTypeAsElement returns null, then
  -        // then no element was written due to problems.
  -        // return an anytype in such situations.
  -        qname = writeTypeAsElement(type, qname);
  -        if (qname == null) {
  -            qname = Constants.XSD_ANYTYPE;
  +
  +        // Write Element, if problems occur return null.
  +        if (writeTypeAsElement(type, qname) == null) {
  +            qname = null;
           }
           return qname;
       }
   
       /**
  +     * Write wrapper for part.
  +     *
  +     * @param wrapper <code>QName</code> of the wrapper element
  +     * @param name is the name of an element to add to the wrapper element.
  +     * @param type is the QName of the type of the element.
  +     * @return true if the wrapperQName was created, false if it already exists.
  +     */
  +    public boolean writeWrapperForPart(QName wrapper, String name, QName type)
  +        throws AxisFault {
  +
  +        // Make sure a types section is present
  +        if (wsdlTypesElem == null) {
  +            writeWsdlTypesElement();
  +        }
  +
  +        // Write the namespace definition for the wrapper
  +        writeTypeNamespace(wrapper);
  +
  +        // See if the wrapper already exists.
  +        Element sequence = (Element) wrapperMap.get(wrapper);
  +        boolean isNew = (sequence == null);
  +
  +        // Create a type if this is a new wrapper
  +        if (isNew) {
  +            // Create an <element> for the wrapper
  +            Element wrapperElement = 
  +                docHolder.createElement("element");
  +            writeSchemaElement(wrapper, wrapperElement);
  +            wrapperElement.setAttribute("name", 
  +                                         wrapper.getLocalPart());
  +
  +            // Create an anonymous <complexType> for the wrapper
  +            Element complexType = docHolder.createElement("complexType");
  +            wrapperElement.appendChild(complexType);
  +
  +            // Create a <sequence> under the complexType and save it.
  +            sequence = docHolder.createElement("sequence");
  +            complexType.appendChild(sequence);
  +            wrapperMap.put(wrapper, sequence);
  +            
  +        }
  +        
  +        // Create the child <element> and add it to the wrapper <sequence>
  +        Element childElem = docHolder.createElement("element");
  +        childElem.setAttribute("name", name);
  +        String prefix = namespaces.getCreatePrefix(type.getNamespaceURI());
  +        String prefixedName = prefix+":"+type.getLocalPart();
  +        childElem.setAttribute("type", prefixedName);
  +        sequence.appendChild(childElem);
  +        
  +        return isNew;
  +    }
  +
  +    /**
        * Create a schema element for the given type
        * @param type the class type
  -     * @return the QName of the generated Element or null if no element written
  +     * @return the QName of the generated Element or problems occur
        */
       private QName writeTypeAsElement(Class type, QName qName) throws AxisFault {
           if (qName == null ||
  @@ -309,14 +416,26 @@
           if (qName == null) {
               qName = getTypeQName(type);
           }
  -        String pref = def.getPrefix(qName.getNamespaceURI());
  -        if (pref == null)
  -          def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
  -                           qName.getNamespaceURI());
  +        writeTypeNamespace(qName);
           return qName;
       }
   
       /**
  +     * write out the namespace declaration.
  +     *
  +     * @param qName qname of the type
  +     */
  +    private void writeTypeNamespace(QName qName) {
  +        if (qName != null) {
  +            String pref = def.getPrefix(qName.getNamespaceURI());
  +            if (pref == null)
  +                def.addNamespace(namespaces.getCreatePrefix(qName.getNamespaceURI()),
  +                                 qName.getNamespaceURI());
  +
  +        }
  +    }
  +
  +    /**
        * Return the QName of the specified javaType
        * @param javaType input javaType Class
        * @return QName
  @@ -485,7 +604,7 @@
        *
        * @param type Class for which to generate schema
        * @param qName of the type to write
  -     * @return a prefixed string for the schema type
  +     * @return a prefixed string for the schema type or null if problems occur
        */
       public String writeType(Class type, QName qName) throws AxisFault {
           // Get a corresponding QName if one is not provided
  @@ -519,7 +638,7 @@
               if (isBeanCompatible(type, true)) {
                   factory = new BeanSerializerFactory(type, qName);
               } else {
  -                return null; // Don't return an element name
  +                return null;  // Don't return an element name
               }
           }
   
  @@ -551,19 +670,17 @@
               componentTypeName = writeType(componentType, null) + dimString;
           }
   
  -        String soapTypeName = qName.getLocalPart();
           String prefix = namespaces.getCreatePrefix(qName.getNamespaceURI());
  -        String prefixedName = prefix+":"+soapTypeName;
  +        String prefixedName = prefix+":"+qName.getLocalPart();
   
           // If processed before, or this is a known namespace, return
  -        if (!addToTypesList(qName, soapTypeName))
  +        if (!addToTypesList(qName))
             return prefixedName;
  -
           if (type.isArray()) {
               // ComplexType representation of array
               Element complexType = docHolder.createElement("complexType");
               writeSchemaElement(qName, complexType);
  -            complexType.setAttribute("name", soapTypeName);
  +            complexType.setAttribute("name", qName.getLocalPart());
   
               Element complexContent = docHolder.createElement("complexContent");
               complexType.appendChild(complexContent);
  @@ -811,22 +928,22 @@
        * If the type already exists, just return false to indicate that the type is already
        * generated in a previous iteration
        *
  -     * @param qName the name space of the type
  -     * @param typeName the name of the type
  -     * @return if the type is added returns true, else if the type is already present returns false
  +     * @param qName of the type.
  +     * @return if the type is added returns true,
  +     * else if the type is already present returns false
        */
  -    private boolean addToTypesList (QName qName, String typeName) {
  +    private boolean addToTypesList (QName qName) {
           boolean added = false;
           ArrayList types = (ArrayList)schemaTypes.get(qName.getNamespaceURI());
           if (types == null) {
               types = new ArrayList();
  -            types.add(typeName);
  +            types.add(qName.getLocalPart());
               schemaTypes.put(qName.getNamespaceURI(), types);
               added = true;
           }
           else {
  -            if (!types.contains(typeName)) {
  -               types.add(typeName);
  +            if (!types.contains(qName.getLocalPart())) {
  +               types.add(qName.getLocalPart());
                  added = true;
               }
           }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.48.6.1  +0 -5      xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java
  
  Index: Emitter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v
  retrieving revision 1.48
  retrieving revision 1.48.6.1
  diff -u -r1.48 -r1.48.6.1
  --- Emitter.java	8 Aug 2002 15:17:11 -0000	1.48
  +++ Emitter.java	30 Sep 2002 13:19:28 -0000	1.48.6.1
  @@ -92,11 +92,6 @@
    * @author Steve Graham (sggraham@us.ibm.com)
    */
   public class Emitter extends Parser {
  -//    public static final byte SCOPE_NOT_EXPLICIT = (byte)0xFF;
  -//    public static final byte SCOPE_APPLICATION  = (byte)Scope.APPLICATION.getValue();
  -//    public static final byte SCOPE_REQUEST      = (byte)Scope.REQUEST.getValue();
  -//    public static final byte SCOPE_SESSION      = (byte)Scope.SESSION.getValue();
  -
       protected HashMap namespaceMap = new HashMap();
       protected String typeMappingVersion = "1.1";
       protected BaseTypeMapping baseTypeMapping = null;
  
  
  
  1.64.4.1  +2 -2      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
  
  Index: JavaDeployWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
  retrieving revision 1.64
  retrieving revision 1.64.4.1
  diff -u -r1.64 -r1.64.4.1
  --- JavaDeployWriter.java	22 Sep 2002 06:13:42 -0000	1.64
  +++ JavaDeployWriter.java	30 Sep 2002 13:19:28 -0000	1.64.4.1
  @@ -241,10 +241,10 @@
                       serializerFactory = "org.apache.axis.encoding.ser.EnumSerializerFactory";
                       deserializerFactory = "org.apache.axis.encoding.ser.EnumDeserializerFactory";
                   } else if (type.isSimpleType()) {
  -                    serializerFactory = "org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory";
  +                    serializerFactory = "org.apache.axis.encoding.ser.SimpleSerializerFactory";
                       deserializerFactory = "org.apache.axis.encoding.ser.SimpleDeserializerFactory";
                   } else if (type.getBaseType() != null) {
  -                    serializerFactory = "org.apache.axis.encoding.ser.SimplePrimitiveSerializerFactory";
  +                    serializerFactory = "org.apache.axis.encoding.ser.SimpleSerializerFactory";
                       deserializerFactory = "org.apache.axis.encoding.ser.SimpleDeserializerFactory";
                   } else {
                       serializerFactory = "org.apache.axis.encoding.ser.BeanSerializerFactory";
  
  
  
  1.96.4.1  +11 -2     xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
  
  Index: JavaStubWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
  retrieving revision 1.96
  retrieving revision 1.96.4.1
  diff -u -r1.96 -r1.96.4.1
  --- JavaStubWriter.java	18 Sep 2002 16:10:36 -0000	1.96
  +++ JavaStubWriter.java	30 Sep 2002 13:19:28 -0000	1.96.4.1
  @@ -409,7 +409,7 @@
           pw.println("            java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;");
           pw.println("            java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;");
           pw.println("            java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;");
  -        pw.println("            java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory.class;");
  +        pw.println("            java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;");
           pw.println("            java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;");
   
           if (hasMIME) {
  @@ -613,7 +613,16 @@
               Map partsMap = operation.getOperation().getInput().getMessage().getParts();
               Part p = (Part)partsMap.values().iterator().next();
               QName q = p.getElementName();
  -            pw.println("        _call.setOperationName(new javax.xml.namespace.QName(\"" + q.getNamespaceURI() + "\", \"" + q.getLocalPart() + "\"));" );
  +            pw.println("        _call.setOperationName(" + Utils.getNewQName(q) + ");" );
  +            
  +            // Special return info for wrapped - the QName of the element
  +            // which is the return type
  +            if (parms.returnParam != null) {
  +                QName returnQName = parms.returnParam.getQName();
  +                if (returnQName != null) {
  +                    pw.println("        _call.setReturnQName(" + Utils.getNewQName(returnQName) + ");" );
  +                }
  +            }
           } else {
               QName elementQName = Utils.getOperationQName(operation);
               if (elementQName != null) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +9 -0      xml-axis/java/test/MSGDispatch/TestService.java
  
  Index: TestService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/MSGDispatch/TestService.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- TestService.java	24 Sep 2002 20:45:20 -0000	1.1
  +++ TestService.java	30 Sep 2002 13:19:28 -0000	1.1.2.1
  @@ -75,6 +75,15 @@
    * @author Glen Daniels (gdaniels@apache.org)
    */
   public class TestService {
  +    // Adding these dummy methods to make sure that when we deploy this
  +    // service using "allowedMethods="*" that we don't barf on them.
  +    // This will ensure that people can take classes that have public
  +    // methods (some available thru Axis and some not) and still be able
  +    // to deploy them.  (We used to throw exceptions about it)
  +    public void testBody(int t) {}
  +    public void testElement(int t) {}
  +    public void testEnvelope(int t) {}
  +
       public SOAPBodyElement [] testBody(SOAPBodyElement [] bodies)
               throws Exception {
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.18.2.1  +2 -2      xml-axis/java/test/encoding/TestAttributes.java
  
  Index: TestAttributes.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestAttributes.java,v
  retrieving revision 1.18
  retrieving revision 1.18.2.1
  diff -u -r1.18 -r1.18.2.1
  --- TestAttributes.java	24 Sep 2002 14:40:20 -0000	1.18
  +++ TestAttributes.java	30 Sep 2002 13:19:28 -0000	1.18.2.1
  @@ -12,7 +12,7 @@
   import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.ser.BeanSerializerFactory;
   import org.apache.axis.encoding.ser.SimpleDeserializerFactory;
  -import org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory;
  +import org.apache.axis.encoding.ser.SimpleSerializerFactory;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -147,7 +147,7 @@
           QName beanQName = new QName("typeNS", "Bean");
           tm.register(SimpleBean.class,
                       beanQName,
  -                    new SimpleNonPrimitiveSerializerFactory(SimpleBean.class, beanQName),
  +                    new SimpleSerializerFactory(SimpleBean.class, beanQName),
                       new SimpleDeserializerFactory(SimpleBean.class, beanQName));
   
           // Serialize the bean in to XML
  
  
  
  1.6.10.1  +8 -2      xml-axis/java/test/encoding/TestDeser1999.java
  
  Index: TestDeser1999.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser1999.java,v
  retrieving revision 1.6
  retrieving revision 1.6.10.1
  diff -u -r1.6 -r1.6.10.1
  --- TestDeser1999.java	27 Jun 2002 23:10:36 -0000	1.6
  +++ TestDeser1999.java	30 Sep 2002 13:19:28 -0000	1.6.10.1
  @@ -18,13 +18,19 @@
           HashMap m = new HashMap();
           m.put(null, new Boolean("false"));
           m.put("hi", null);
  +        // Test map with nulls and
  +        // Test type references to the default namespace.
           deserialize("<result xsi:type=\"xmlsoap:Map\" " +
                       "xmlns:xmlsoap=\"http://xml.apache.org/xml-soap\"> " +
                         "<item>" +
                          "<key xsi:null=\"true\"/>" +
  -                       "<value xsi:type=\"xsd:boolean\">false</value>" + 
  +                       "<value xsi:type=\"boolean\" xmlns=\"" +
  +                         Constants.URI_1999_SCHEMA_XSD +
  +                         "\">false</value>" + 
                         "</item><item>" +
  -                       "<key xsi:type=\"string\">hi</key>" +
  +                       "<key xsi:type=\"string\" xmlns=\"" +
  +                         Constants.URI_1999_SCHEMA_XSD +
  +                         "\">hi</key>" +
                          "<value xsi:null=\"true\"/>" +
                         "</item>" +
                       "</result>",
  
  
  
  1.6.10.1  +1 -1      xml-axis/java/test/encoding/TestDeser2000.java
  
  Index: TestDeser2000.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser2000.java,v
  retrieving revision 1.6
  retrieving revision 1.6.10.1
  diff -u -r1.6 -r1.6.10.1
  --- TestDeser2000.java	27 Jun 2002 23:10:36 -0000	1.6
  +++ TestDeser2000.java	30 Sep 2002 13:19:28 -0000	1.6.10.1
  @@ -24,7 +24,7 @@
                          "<key xsi:null=\"true\"/>" +
                          "<value xsi:type=\"xsd:boolean\">false</value>" + 
                         "</item><item>" +
  -                       "<key xsi:type=\"string\">hi</key>" +
  +                       "<key xsi:type=\"xsd:string\">hi</key>" +
                          "<value xsi:null=\"true\"/>" +
                         "</item>" +
                       "</result>",
  
  
  
  1.24.4.1  +1 -1      xml-axis/java/test/encoding/TestDeser2001.java
  
  Index: TestDeser2001.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser2001.java,v
  retrieving revision 1.24
  retrieving revision 1.24.4.1
  diff -u -r1.24 -r1.24.4.1
  --- TestDeser2001.java	15 Sep 2002 19:16:17 -0000	1.24
  +++ TestDeser2001.java	30 Sep 2002 13:19:28 -0000	1.24.4.1
  @@ -250,7 +250,7 @@
                          "<key xsi:nil=\"true\"/>" +
                          "<value xsi:type=\"xsd:boolean\">false</value>" +
                         "</item><item>" +
  -                       "<key xsi:type=\"string\">hi</key>" +
  +                       "<key xsi:type=\"xsd:string\">hi</key>" +
                          "<value xsi:nil=\"true\"/>" +
                         "</item>" +
                       "</result>",
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.14.1  +55 -0     xml-axis/java/test/soap/PackageTests.java
  
  Index: PackageTests.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/PackageTests.java,v
  retrieving revision 1.2
  retrieving revision 1.2.14.1
  diff -u -r1.2 -r1.2.14.1
  --- PackageTests.java	2 Apr 2002 22:05:19 -0000	1.2
  +++ PackageTests.java	30 Sep 2002 13:19:29 -0000	1.2.14.1
  @@ -1,3 +1,57 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package test.soap;
   
   import junit.framework.Test;
  @@ -16,6 +70,7 @@
           TestSuite suite = new TestSuite("All axis.soap tests");
   
           suite.addTest(TestHeaderAttrs.suite());
  +        suite.addTestSuite(TestOnFaultHeaders.class);
   
           return suite;
       }
  
  
  
  1.1.20.1  +69 -6     xml-axis/java/test/soap/TestHandler.java
  
  Index: TestHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.1.20.1
  diff -u -r1.1 -r1.1.20.1
  --- TestHandler.java	14 Jan 2002 21:17:47 -0000	1.1
  +++ TestHandler.java	30 Sep 2002 13:19:29 -0000	1.1.20.1
  @@ -1,10 +1,56 @@
   /*
  - * Created by IntelliJ IDEA.
  - * User: gdaniels
  - * Date: Jan 14, 2002
  - * Time: 2:13:08 PM
  - * To change template for new class use 
  - * Code Style | Class Templates options (Tools | IDE Options).
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
    */
   package test.soap;
   
  @@ -12,6 +58,7 @@
   import org.apache.axis.MessageContext;
   import org.apache.axis.AxisFault;
   import org.apache.axis.message.SOAPEnvelope;
  +import org.apache.axis.message.SOAPHeaderElement;
   
   /**
    * This is a test Handler which interacts with the TestService below in
  @@ -28,6 +75,22 @@
               // Just the header's presence is enough - mark the property
               // so it can be picked up by the service (see below)
               msgContext.setProperty(TestHeaderAttrs.PROP_DOUBLEIT, Boolean.TRUE);
  +        }
  +        
  +        if (env.getHeaderByName(TestOnFaultHeaders.TRIGGER_NS,
  +                                TestOnFaultHeaders.TRIGGER_NAME) != null) {
  +            // Fault trigger header is there, so throw an Exception
  +            throw new AxisFault("triggered exception");
  +        }
  +    }
  +
  +    public void onFault(MessageContext msgContext) {
  +        try {
  +            SOAPEnvelope env = msgContext.getResponseMessage().getSOAPEnvelope();
  +            SOAPHeaderElement header = new SOAPHeaderElement("ns", "local", "val");
  +            env.addHeader(header);
  +        } catch (Exception e) {
  +            throw new RuntimeException("Exception during onFault processing");
           }
       }
   }
  
  
  
  1.6.6.1   +55 -0     xml-axis/java/test/soap/TestHeaderAttrs.java
  
  Index: TestHeaderAttrs.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestHeaderAttrs.java,v
  retrieving revision 1.6
  retrieving revision 1.6.6.1
  diff -u -r1.6 -r1.6.6.1
  --- TestHeaderAttrs.java	10 Jul 2002 19:32:13 -0000	1.6
  +++ TestHeaderAttrs.java	30 Sep 2002 13:19:29 -0000	1.6.6.1
  @@ -1,3 +1,58 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
  +
   package test.soap;
   
   import junit.framework.TestCase;
  
  
  
  1.1.20.1  +52 -6     xml-axis/java/test/soap/TestService.java
  
  Index: TestService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestService.java,v
  retrieving revision 1.1
  retrieving revision 1.1.20.1
  diff -u -r1.1 -r1.1.20.1
  --- TestService.java	14 Jan 2002 21:17:47 -0000	1.1
  +++ TestService.java	30 Sep 2002 13:19:29 -0000	1.1.20.1
  @@ -1,10 +1,56 @@
   /*
  - * Created by IntelliJ IDEA.
  - * User: gdaniels
  - * Date: Jan 14, 2002
  - * Time: 2:12:43 PM
  - * To change template for new class use 
  - * Code Style | Class Templates options (Tools | IDE Options).
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
    */
   package test.soap;
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/test/soap/TestFaultHandler.java
  
  Index: TestFaultHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestFaultHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/test/soap/TestOnFaultHeaders.java
  
  Index: TestOnFaultHeaders.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestOnFaultHeaders.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +0 -0      xml-axis/java/test/wsdl/esr/EsrTestBindingImpl.java
  
  Index: EsrTestBindingImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/esr/EsrTestBindingImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  
  
  
  1.2.2.1   +0 -0      xml-axis/java/test/wsdl/esr/EsrTestServiceTestCase.java
  
  Index: EsrTestServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/esr/EsrTestServiceTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/test/wsdl/esr/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/esr/build.xml,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.2.2.1   +0 -0      xml-axis/java/test/wsdl/esr/esr.wsdl
  
  Index: esr.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/esr/esr.wsdl,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.6.1   +1 -1      xml-axis/java/test/wsdl/inout/inout.wsdl
  
  Index: inout.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/inout/inout.wsdl,v
  retrieving revision 1.2
  retrieving revision 1.2.6.1
  diff -u -r1.2 -r1.2.6.1
  --- inout.wsdl	31 Jul 2002 20:47:01 -0000	1.2
  +++ inout.wsdl	30 Sep 2002 13:19:29 -0000	1.2.6.1
  @@ -34,7 +34,7 @@
     </types>
   
     <!-- message declns -->
  -  <message name="TestFailedMessage"/>
  +  <message name="TestFailed"/>
   
     <message name="Msg0"/>
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +18 -0     xml-axis/java/test/wsdl/wrapped_inout/WrappedInOutTestCase.java
  
  Index: WrappedInOutTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/wrapped_inout/WrappedInOutTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- WrappedInOutTestCase.java	24 Sep 2002 20:19:57 -0000	1.1
  +++ WrappedInOutTestCase.java	30 Sep 2002 13:19:29 -0000	1.1.2.1
  @@ -29,6 +29,24 @@
           assertEquals(value, expected);
       }
   
  +    public void test1WrappedInOutEchoEmptyString() throws Exception {
  +        test.wsdl.wrapped_inout.WrappedInOutInterface binding;
  +        try {
  +            binding = new test.wsdl.wrapped_inout.WrappedInOutLocator().getWrappedInOut();
  +        }
  +        catch (javax.xml.rpc.ServiceException jre) {
  +            if(jre.getLinkedCause()!=null)
  +                jre.getLinkedCause().printStackTrace();
  +            throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
  +        }
  +        assertTrue("binding is null", binding != null);
  +
  +        java.lang.String expected = new String("");
  +        java.lang.String value = null;
  +        value = binding.echoString(expected);
  +        assertEquals(value, expected);
  +    }
  +
       public void test2WrappedInOutEchoStringIO() throws Exception {
           test.wsdl.wrapped_inout.WrappedInOutInterface binding;
           try {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.4.1   +2 -0      xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/Java2WsdlAntTask.java
  
  Index: Java2WsdlAntTask.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/tools/org/apache/axis/tools/ant/wsdl/Java2WsdlAntTask.java,v
  retrieving revision 1.2
  retrieving revision 1.2.4.1
  diff -u -r1.2 -r1.2.4.1
  --- Java2WsdlAntTask.java	5 Sep 2002 21:06:10 -0000	1.2
  +++ Java2WsdlAntTask.java	30 Sep 2002 13:19:30 -0000	1.2.4.1
  @@ -152,6 +152,8 @@
                       emitter.setMode(Emitter.MODE_DOCUMENT);
                   } else if (style.equalsIgnoreCase("RPC")) {
                       emitter.setMode(Emitter.MODE_RPC);
  +                } else if (style.equalsIgnoreCase("WRAPPED")) {
  +                    emitter.setMode(Emitter.MODE_DOC_WRAPPED);
                   }
               }
               if (input != null) {
  
  
  

Mime
View raw message