axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Russell Butek <bu...@us.ibm.com>
Subject Re: cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsdl Java2WsdlAntTask.java
Date Mon, 30 Sep 2002 13:30:00 GMT




Ouch!  Thanks, Sam, for pointing out that we're no-where near ready for
1.0.  Dang.  We (IBM WebSphere) were really hoping to have 1.0 by this
Friday.  Now it doesn't look like that's going to happen.  Not unless folks
stop putting things in.  I guess I'm going to have to start vetoing (I hate
doing that).

Are we going to have an RC3 in the next day or two?

Russell Butek
butek@us.ibm.com



rubys@apache.org on 09/30/2002 08:19:30 AM

Please respond to axis-dev@xml.apache.org

To:    xml-axis-cvs@apache.org
cc:
Subject:    cvs commit: xml-axis/java/tools/org/apache/axis/tools/ant/wsdl
       Java2WsdlAntTask.java



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