axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gdani...@apache.org
Subject cvs commit: xml-axis/java/test/wsdl/types ComprehensiveTypes.wsdl VerifyTestCase.java
Date Mon, 28 Jan 2002 06:43:09 GMT
gdaniels    02/01/27 22:43:08

  Modified:    java     Tag: config-work TODO.txt build.xml
               java/samples/attachments Tag: config-work
                        EchoAttachment.java
               java/samples/bidbuy Tag: config-work TestClient.java v3.java
               java/samples/echo Tag: config-work TestClient.java
                        deploy.wsdd
               java/samples/encoding Tag: config-work DataSer.java
                        TestSer.java
               java/samples/proxy Tag: config-work ProxyService.java
               java/samples/security Tag: config-work LogHandler.java
                        SignedSOAPEnvelope.java
               java/samples/transport Tag: config-work FileTest.java
                        testit.cmd
               java/samples/transport/tcp Tag: config-work AdminClient.java
                        GetQuote.java TCPListener.java
               java/samples/userguide/example5 Tag: config-work Client.java
               java/samples/userguide/example6 Tag: config-work
                        WidgetPriceServiceTestCase.java
               java/src/javax/xml/rpc Tag: config-work Service.java
               java/src/javax/xml/rpc/encoding Tag: config-work
                        TypeMappingRegistry.java
               java/src/org/apache/axis Tag: config-work AxisEngine.java
                        Constants.java EngineConfiguration.java
                        SOAPPart.java
               java/src/org/apache/axis/client Tag: config-work
                        AdminClient.java Call.java Service.java
                        ServiceClient.java ServiceFactory.java
               java/src/org/apache/axis/configuration Tag: config-work
                        FileProvider.java NullProvider.java
                        XMLStringProvider.java
               java/src/org/apache/axis/deployment Tag: config-work
                        DeployableItem.java DeploymentRegistry.java
               java/src/org/apache/axis/deployment/v2dd Tag: config-work
                        V2DDDeployableItem.java
               java/src/org/apache/axis/deployment/wsdd Tag: config-work
                        WSDDBeanMapping.java WSDDChain.java
                        WSDDDeployableItem.java WSDDDeployment.java
                        WSDDDocument.java WSDDGlobalConfiguration.java
                        WSDDProvider.java WSDDService.java
                        WSDDTargetedChain.java WSDDTypeMapping.java
                        WSDDTypeMappingContainer.java WSDDUndeployment.java
               java/src/org/apache/axis/deployment/wsdd/providers Tag:
                        config-work WSDDBsfProvider.java
                        WSDDComProvider.java WSDDHandlerProvider.java
                        WSDDJavaEJBProvider.java WSDDJavaMsgProvider.java
                        WSDDJavaRPCProvider.java
               java/src/org/apache/axis/deployment/wsml Tag: config-work
                        WSMLDeployableItem.java
               java/src/org/apache/axis/encoding Tag: config-work
                        DeserializationContext.java Deserializer.java
                        DeserializerFactory.java SerializationContext.java
                        Serializer.java ServiceDescription.java
                        TypeMappingRegistry.java XMLType.java
               java/src/org/apache/axis/handlers Tag: config-work
                        DebugHandler.java SimpleSessionHandler.java
               java/src/org/apache/axis/handlers/soap Tag: config-work
                        SOAPService.java
               java/src/org/apache/axis/message Tag: config-work
                        BodyBuilder.java MessageElement.java
                        RPCElement.java RPCHandler.java RPCParam.java
                        SOAPEnvelope.java SOAPFaultBuilder.java
                        SOAPHandler.java SOAPHeader.java
               java/src/org/apache/axis/providers/java Tag: config-work
                        RPCProvider.java
               java/src/org/apache/axis/server Tag: config-work
                        server-config.wsdd
               java/src/org/apache/axis/utils Tag: config-work Admin.java
                        JavaUtils.java resources.properties
               java/src/org/apache/axis/wsdl/fromJava Tag: config-work
                        Emitter.java Types.java todo.txt
               java/src/org/apache/axis/wsdl/toJava Tag: config-work
                        BindingEntry.java Emitter.java
                        JavaBindingWriter.java JavaDeployWriter.java
                        JavaHolderWriter.java JavaImplWriter.java
                        JavaInterfaceWriter.java JavaServiceImplWriter.java
                        JavaSkelWriter.java JavaStubWriter.java
                        JavaTestCaseWriter.java JavaTypeWriter.java
                        JavaWriterFactory.java PortTypeEntry.java
                        SymbolTable.java TypeEntry.java Utils.java
               java/test/RPCDispatch Tag: config-work TestRPC.java
                        TestSerializedRPC.java
               java/test/encoding Tag: config-work DataSer.java
                        TestArrayListConversions.java TestBody.java
                        TestDeser.java TestSer.java TestString.java
                        TestXsiType.java
               java/test/functional Tag: config-work
                        TestTCPTransportSample.java
                        TestTransportSample.java
               java/test/outparams Tag: config-work TestOutParams.java
               java/test/session Tag: config-work TestSimpleSession.java
               java/test/soap Tag: config-work TestHeaderAttrs.java
               java/test/wsdd Tag: config-work TestUndeployment.java
               java/test/wsdl Tag: config-work Java2WsdlAntTask.java
                        Wsdl2javaAntTask.java Wsdl2javaTestSuite.xml
               java/test/wsdl/arrays Tag: config-work
                        PersonalInfoBookServiceTestCase.java
               java/test/wsdl/faults Tag: config-work
                        FaultServiceTestCase.java
               java/test/wsdl/inout Tag: config-work
                        DetailedInoutTestCase.java
               java/test/wsdl/marrays Tag: config-work
                        MArrayTestsServiceTestCase.java
               java/test/wsdl/multithread Tag: config-work AddressBook.wsdl
                        MultithreadTestCase.java
               java/test/wsdl/parameterOrder Tag: config-work
                        VerifyTestCase.java
               java/test/wsdl/refattr Tag: config-work
                        RefTestServiceTestCase.java refattr.wsdl
               java/test/wsdl/sequence Tag: config-work
                        SequenceTestServiceTestCase.java
               java/test/wsdl/types Tag: config-work
                        ComprehensiveTypes.wsdl VerifyTestCase.java
  Added:       java/samples/encoding Tag: config-work DataDeser.java
                        DataDeserFactory.java DataSerFactory.java
               java/samples/transport Tag: config-work client_deploy.wsdd
                        deploy.wsdd
               java/samples/transport/tcp Tag: config-work
                        client_deploy.wsdd deploy.wsdd
               java/src/javax/xml/messaging Tag: config-work Endpoint.java
                        URLEndpoint.java
               java/src/javax/xml/soap Tag: config-work AttachmentPart.java
                        Detail.java DetailEntry.java FactoryFinder.java
                        MessageFactory.java MimeHeader.java
                        MimeHeaders.java Name.java Node.java SOAPBody.java
                        SOAPBodyElement.java SOAPConnection.java
                        SOAPConnectionFactory.java SOAPConstants.java
                        SOAPElement.java SOAPElementFactory.java
                        SOAPEnvelope.java SOAPException.java SOAPFault.java
                        SOAPFaultElement.java SOAPHeader.java
                        SOAPHeaderElement.java SOAPMessage.java
                        SOAPPart.java Text.java
               java/src/javax/xml/transform Tag: config-work Source.java
               java/src/org/apache/axis/configuration Tag: config-work
                        SimpleProvider.java
               java/src/org/apache/axis/encoding Tag: config-work
                        Callback.java CallbackTarget.java
                        DefaultTypeMappingImpl.java
                        DeserializationContextImpl.java
                        DeserializerImpl.java DeserializerTarget.java
                        FieldTarget.java MethodTarget.java
                        SerializationContextImpl.java
                        SerializerFactory.java Target.java TypeMapping.java
                        TypeMappingImpl.java TypeMappingRegistryImpl.java
               java/src/org/apache/axis/encoding/ser Tag: config-work
                        ArrayDeserializer.java
                        ArrayDeserializerFactory.java ArraySerializer.java
                        ArraySerializerFactory.java Base64Deserializer.java
                        Base64DeserializerFactory.java
                        Base64Serializer.java Base64SerializerFactory.java
                        BaseDeserializerFactory.java
                        BaseSerializerFactory.java BeanDeserializer.java
                        BeanDeserializerFactory.java
                        BeanPropertyDescriptor.java BeanPropertyTarget.java
                        BeanSerializer.java BeanSerializerFactory.java
                        DateDeserializer.java DateDeserializerFactory.java
                        DateSerializer.java DateSerializerFactory.java
                        ElementDeserializer.java
                        ElementDeserializerFactory.java
                        ElementSerializer.java
                        ElementSerializerFactory.java EnumDeserializer.java
                        EnumDeserializerFactory.java EnumSerializer.java
                        EnumSerializerFactory.java HexDeserializer.java
                        HexDeserializerFactory.java HexSerializer.java
                        HexSerializerFactory.java
                        JAFDataHandlerDeserializer.java
                        JAFDataHandlerDeserializerFactory.java
                        JAFDataHandlerSerializer.java
                        JAFDataHandlerSerializerFactory.java
                        MapDeserializer.java MapDeserializerFactory.java
                        MapSerializer.java MapSerializerFactory.java
                        SimpleDeserializer.java
                        SimpleDeserializerFactory.java
                        SimpleNonPrimitiveSerializerFactory.java
                        SimplePrimitiveSerializerFactory.java
                        SimpleSerializer.java VectorDeserializer.java
                        VectorDeserializerFactory.java
               java/test/encoding Tag: config-work DataDeser.java
                        DataDeserFactory.java DataSerFactory.java
               java/test/wsdl/literal Tag: config-work SalesRankNPrice.wsdl
                        SalesRankNPrice_ServiceTestCase.java
  Removed:     java/src/org/apache/axis/deployment Tag: config-work
                        BasicEngineConfiguration.java
                        SimpleDeploymentManager.java
               java/src/org/apache/axis/deployment/wsdd Tag: config-work
                        SimpleWsddDeploymentManager.java
               java/src/org/apache/axis/encoding Tag: config-work
                        ArraySerializer.java Base64Serializer.java
                        BasicDeserializer.java BeanSerializer.java
                        BooleanDeserializerFactory.java DateSerializer.java
                        ElementSerializer.java EnumSerializer.java
                        FloatSerializer.java HexSerializer.java
                        JAFDataHandlerDeserializer.java
                        JAFDataHandlerSerializer.java MapSerializer.java
                        SOAPEncoding.java SOAPTypeMappingRegistry.java
                        ValueReceiver.java VectorDeserializer.java
               java/src/org/apache/axis/wsdl/toJava Tag: config-work
                        JavaPortTypeWriter.java
  Log:
  Next round of updates for config-work.  There are a lot of changes here
  because I merged in Rich's encoding stuff at the same time I was working
  on the engine configuration to avoid duplicating work.  Some cleanup
  still needs doing.
  
  The main substantive changes are as follows:
  
  1) a WSDDDeployment is now an EngineConfiguration, and FileProvider
     is a thin shim which now just delegates to the deployment.  The only
     bits of code which care about the WSDD specific aspects are now
     the admin service and people directly using the WSDD classes.
  
  2) the DeploymentRegistry is mostly gone, replaced with direct
     references to EngineConfigurations, which act as suppliers for
     components.
  
  3) introduced a "SimpleProvider" for programatically dropping Handlers/
     Services/Transports into an engine, and use this several times in the
     tests.
  
  4) removed a bunch of unused code, and as we continue we may end up
     pulling a bunch of the stuff at the org.apache.axis.deployment level
     (DeploymentItem, etc) if we maintain the abstraction boundary between
     the different kinds of EngineConfiguration.
  
  5) remove the direct config/deployment APIs from the AxisEngine, in favor
     of using the interface to your EngineConfiguration to do config and
     deployment.  We need to decide what the relationship is here - should
     we be able to modify the configuration of a running engine while it's
     in use, or do we provide a way to simply change out the entire
     EngineConfiguration wholesale?
  
  We also need to decide if we like this approach.  As it stands, we can't
  use WSDD to deploy into a non-WSDD EngineConfiguration.  The other
  alternative seems to be to introduce "generic" descriptors for handlers/
  chains/etc. and make the WSDD subsystem simply a serialization mechanism
  for those.  That way you could squirt components into the AdminService
  using WSDD, and still write out the configuration in some other format.
  
  All the tests run with this codebase.  Ideally, I'd like us to merge
  this stuff back onto the main branch as soon as we're feeling mostly
  comfortable with the direction, especially in light of the ongoing work
  on other parts of the package.  Glyn, let's try to talk about this on
  Monday?
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.1   +10 -5     xml-axis/java/TODO.txt
  
  Index: TODO.txt
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/TODO.txt,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- TODO.txt	16 Jan 2002 20:53:31 -0000	1.9
  +++ TODO.txt	28 Jan 2002 06:42:55 -0000	1.9.2.1
  @@ -10,23 +10,23 @@
   
   MESSAGE PARSING / ENCODING
   --------------------------
  -! <Glen> Finish support for different encodingStyles
  +* <Glen/Rich> Support different encodingStyles
   ! <> Support literalxml encodingStyle
  -! <> Multi-dimensional array support
  +X <Rich> Multi-dimensional array support
   
   CLIENT API
   ----------
   
   JAX-RPC COMPATIBILITY
   ---------------------
  -! <Doug?> Implement serializer/deserializer framework compliance
  +* <Rich> Implement serializer/deserializer framework compliance
   
   PERFORMANCE
   -----------
   
   DOCUMENTATION
   -------------
  -* <Glen> Architecture doc
  +* <Glyn/Glen> Architecture doc
   
   SOAP SPEC COMPLIANCE
   --------------------
  @@ -77,7 +77,8 @@
   
   Java2WSDL
   ---------
  -! <> Plug new framework into autogen mechanism
  +X <> Plug new framework into autogen mechanism
  +
   ! <Russell?/Rich?> Java2WSDL "void op(boolean b1, Boolean b2)" maps to
      <wsdl:message name="op1Request">
         <wsdl:part name="in0" type="xsd:boolean"/>
  @@ -89,7 +90,11 @@
         <wsdl:part name="in1" type="SOAP-ENC:boolean"/>
      </wsdl:message>
   
  +! <> Support generating schema for custom serializers
   
   
   GENERAL / UNCATEGORIZED
   -----------------------
  +! <> Reorganize resources.properties into packages
  +! <> Remove search-for-first-MessageContext-arg code
  +! <> Remove ServiceClient
  
  
  
  1.98.2.1  +2 -0      xml-axis/java/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/build.xml,v
  retrieving revision 1.98
  retrieving revision 1.98.2.1
  diff -u -r1.98 -r1.98.2.1
  --- build.xml	11 Jan 2002 18:44:06 -0000	1.98
  +++ build.xml	28 Jan 2002 06:42:55 -0000	1.98.2.1
  @@ -205,7 +205,9 @@
         <exclude name="org/apache/axis/transport/http/AdminServlet.java" unless="servlet.present"/>
         <exclude name="org/apache/axis/transport/http/AxisHttpSession.java" unless="servlet.present"/>
         <exclude name="org/apache/axis/transport/http/AxisServlet.java" unless="servlet.present"/>
  +      <exclude name="org/apache/axis/server/JNDIAxisServerFactory.java" unless="servlet.present"/>
         <exclude name="org/apache/axis/security/servlet/*" unless="servlet.present"/>
  +      <exclude name="javax/xml/soap/*.java" unless="attachments.present"/>
         <exclude name="**/*TestSuite.java" unless="junit.present"/>
       </javac>
       <copy file="${src.dir}/org/apache/axis/server/server-config.wsdd"
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.1   +11 -15    xml-axis/java/samples/attachments/EchoAttachment.java
  
  Index: EchoAttachment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/attachments/EchoAttachment.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- EchoAttachment.java	11 Jan 2002 21:42:10 -0000	1.5
  +++ EchoAttachment.java	28 Jan 2002 06:42:55 -0000	1.5.2.1
  @@ -61,8 +61,8 @@
   import org.apache.axis.client.Service;
   import org.apache.axis.client.Transport;
   import org.apache.axis.encoding.XMLType;
  -import org.apache.axis.encoding.JAFDataHandlerSerializer;
  -import org.apache.axis.encoding.JAFDataHandlerDeserializer;
  +import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;
  +import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
   import org.apache.axis.transport.http.HTTPConstants;
   import org.apache.axis.utils.Options;
   import javax.activation.DataHandler;
  @@ -120,13 +120,11 @@
   
           QName qnameAttachment = new QName("urn:EchoAttachmentsService", "DataHandler");
   
  -        call.addSerializer(dhSource.getClass(),//Add serializer for attachment. 
  -            qnameAttachment,
  -            new JAFDataHandlerSerializer());
  -
  -        call.addDeserializerFactory(qnameAttachment, dhSource.getClass(),
  -            JAFDataHandlerDeserializer.getFactory());
  -
  +        call.registerTypeMapping(dhSource.getClass(),//Add serializer for attachment. 
  +                                 qnameAttachment,
  +                                 JAFDataHandlerSerializerFactory.class,
  +                                 JAFDataHandlerDeserializerFactory.class);
  +                                 
           call.addParameter( "source", qnameAttachment,
                   ParameterMode.PARAM_MODE_IN ); //Add the file.
   
  @@ -210,12 +208,10 @@
   
           QName qnameAttachment = new QName("urn:EchoAttachmentsService", "DataHandler");
   
  -        call.addSerializer(attachments[0].getClass(),//Add serializer for attachment. 
  -            qnameAttachment,
  -            new JAFDataHandlerSerializer());
  -
  -        call.addDeserializerFactory(qnameAttachment, attachments[0].getClass(),
  -            JAFDataHandlerDeserializer.getFactory());
  +        call.registerTypeMapping(attachments[0].getClass(),//Add serializer for attachment. 
  +                                 qnameAttachment,
  +                                 JAFDataHandlerSerializerFactory.class,
  +                                 JAFDataHandlerDeserializerFactory.class);
   
           call.addParameter( "source",   XMLType.SOAP_ARRAY , // new XMLType(qnameAttachment),
               ParameterMode.PARAM_MODE_IN ); //Add the file.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.1  +5 -7      xml-axis/java/samples/bidbuy/TestClient.java
  
  Index: TestClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/bidbuy/TestClient.java,v
  retrieving revision 1.19
  retrieving revision 1.19.2.1
  diff -u -r1.19 -r1.19.2.1
  --- TestClient.java	11 Jan 2002 21:42:10 -0000	1.19
  +++ TestClient.java	28 Jan 2002 06:42:55 -0000	1.19.2.1
  @@ -57,7 +57,8 @@
   
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
  -import org.apache.axis.encoding.BeanSerializer;
  +import org.apache.axis.encoding.ser.BeanSerializerFactory;
  +import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.XMLType;
   import org.apache.axis.transport.http.HTTPTransport;
   import org.apache.axis.utils.Options;
  @@ -109,20 +110,17 @@
           QName poqn = new QName("http://www.soapinterop.org/Bid",
                                  "PurchaseOrder");
           Class cls = PurchaseOrder.class;
  -        call.addSerializer(cls, poqn, new BeanSerializer(cls));
  -        call.addDeserializerFactory(poqn, cls, BeanSerializer.getFactory());
  +        call.registerTypeMapping(cls, poqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
           // register the Address class
           QName aqn = new QName("http://www.soapinterop.org/Bid", "Address");
           cls = Address.class;
  -        call.addSerializer(cls, aqn, new BeanSerializer(cls));
  -        call.addDeserializerFactory(aqn, cls, BeanSerializer.getFactory());
  +        call.registerTypeMapping(cls, aqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
           // register the LineItem class
           QName liqn = new QName("http://www.soapinterop.org/Bid", "LineItem");
           cls = LineItem.class;
  -        call.addSerializer(cls, liqn, new BeanSerializer(cls));
  -        call.addDeserializerFactory(liqn, cls, BeanSerializer.getFactory());
  +        call.registerTypeMapping(cls, liqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
           try {
               // Default return type based on what we expect
  
  
  
  1.16.2.1  +5 -7      xml-axis/java/samples/bidbuy/v3.java
  
  Index: v3.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/bidbuy/v3.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- v3.java	11 Jan 2002 21:42:10 -0000	1.16
  +++ v3.java	28 Jan 2002 06:42:55 -0000	1.16.2.1
  @@ -2,7 +2,8 @@
   
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
  -import org.apache.axis.encoding.BeanSerializer;
  +import org.apache.axis.encoding.ser.BeanSerializerFactory;
  +import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.XMLType;
   import org.apache.axis.transport.http.HTTPConstants;
   
  @@ -211,20 +212,17 @@
         // register the PurchaseOrder class
         QName poqn = new QName("http://www.soapinterop.org/Bid", "PurchaseOrder");
         Class cls = PurchaseOrder.class;
  -      call.addSerializer(cls, poqn, new BeanSerializer(cls));
  -      call.addDeserializerFactory(poqn, cls, BeanSerializer.getFactory());
  +      call.registerTypeMapping(cls, poqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
         // register the Address class
         QName aqn = new QName("http://www.soapinterop.org/Bid", "Address");
         cls = Address.class;
  -      call.addSerializer(cls, aqn, new BeanSerializer(cls));
  -      call.addDeserializerFactory(aqn, cls, BeanSerializer.getFactory());
  +      call.registerTypeMapping(cls, aqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
         // register the LineItem class
         QName liqn = new QName("http://www.soapinterop.org/Bid", "LineItem");
         cls = LineItem.class;
  -      call.addSerializer(cls, liqn, new BeanSerializer(cls));
  -      call.addDeserializerFactory(liqn, cls, BeanSerializer.getFactory());
  +      call.registerTypeMapping(cls, liqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
         LineItem[]     lineItems = new LineItem[numItems];
         
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.44.2.1  +10 -7     xml-axis/java/samples/echo/TestClient.java
  
  Index: TestClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/echo/TestClient.java,v
  retrieving revision 1.44
  retrieving revision 1.44.2.1
  diff -u -r1.44 -r1.44.2.1
  --- TestClient.java	11 Jan 2002 21:42:10 -0000	1.44
  +++ TestClient.java	28 Jan 2002 06:42:55 -0000	1.44.2.1
  @@ -58,8 +58,11 @@
   import org.apache.axis.AxisFault;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
  -import org.apache.axis.encoding.BeanSerializer;
  +import org.apache.axis.encoding.ser.BeanSerializerFactory;
  +import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.Constants;
   import org.apache.axis.transport.http.HTTPTransport;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Options;
  @@ -88,7 +91,8 @@
       private static boolean addMethodToAction = false;
       private static String soapAction = "http://soapinterop.org/";
   
  -    private TypeMappingRegistry map;
  +    private TypeMappingRegistry tmr;
  +    private TypeMapping tm;
   
       /**
        * Determine if two objects are equal.  Handles nulls and recursively
  @@ -137,7 +141,6 @@
        * @param toSend object of the correct type to be sent
        */
       private void test(String type, Object toSend) {
  -
           String method = "echo" + type;
   
           type = type.trim();
  @@ -156,7 +159,7 @@
                   // args = new Object[] {new RPCParam(arg, toSend)};
   
                   // Default return type based on what we expect
  -                QName qn = map.getTypeQName(toSend.getClass());
  +                QName qn = tm.getTypeQName(toSend.getClass());
   
                   call.addParameter( arg, qn, ParameterMode.PARAM_MODE_IN);
                   call.setReturnType( qn );
  @@ -195,7 +198,8 @@
               service = new Service();
               call = (Call) service.createCall();
               call.setTargetEndpointAddress( new java.net.URL(url) );
  -            map = call.getMessageContext().getTypeMappingRegistry();
  +            tmr = call.getMessageContext().getTypeMappingRegistry();
  +            tm  = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC);
           }
           catch( Exception exp ) {
               throw AxisFault.makeFault(exp);
  @@ -209,8 +213,7 @@
           // register the SOAPStruct class
           QName ssqn = new QName("http://soapinterop.org/xsd", "SOAPStruct");
           Class cls = SOAPStruct.class;
  -        call.addSerializer(cls, ssqn, new BeanSerializer(cls));
  -        call.addDeserializerFactory(ssqn, cls, BeanSerializer.getFactory());
  +        call.registerTypeMapping(cls, ssqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
   
           // execute the tests
           test("String      ", "abcdefg");
  
  
  
  1.6.2.1   +1 -1      xml-axis/java/samples/echo/deploy.wsdd
  
  Index: deploy.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/echo/deploy.wsdd,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- deploy.wsdd	15 Jan 2002 17:57:02 -0000	1.6
  +++ deploy.wsdd	28 Jan 2002 06:42:55 -0000	1.6.2.1
  @@ -16,5 +16,5 @@
   
     <typeMapping xmlns:echo="http://soapinterop.org/xsd"
       qname="echo:SOAPStruct" languageSpecificType="java:samples.echo.SOAPStruct"
  -    serializer="org.apache.axis.encoding.BeanSerializer" deserializer="org.apache.axis.encoding.BeanSerializer$BeanDeserFactory"/>
  +    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
   </deployment>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.13.2.1  +15 -59    xml-axis/java/samples/encoding/DataSer.java
  
  Index: DataSer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/encoding/DataSer.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- DataSer.java	23 Dec 2001 12:33:31 -0000	1.13
  +++ DataSer.java	28 Jan 2002 06:42:56 -0000	1.13.2.1
  @@ -1,79 +1,34 @@
   package samples.encoding;
   
  -import org.apache.axis.encoding.DeserializationContext;
  -import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.message.SOAPHandler;
  +import org.apache.axis.Constants;
   import org.xml.sax.Attributes;
   import org.xml.sax.SAXException;
  +import org.apache.axis.Constants;
   
   import javax.xml.rpc.namespace.QName;
   import java.io.IOException;
   import java.util.Hashtable;
   
  -public class DataSer extends Deserializer implements Serializer
  +public class DataSer implements Serializer
   {
       public static final String STRINGMEMBER = "stringMember";
       public static final String FLOATMEMBER = "floatMember";
       public static final String DATAMEMBER = "dataMember";
       public static final QName myTypeQName = new QName("typeNS", "Data");
       
  -    public static class DataSerFactory implements DeserializerFactory {
  -        public void setJavaClass(Class cls) {}
  -        public Deserializer getDeserializer() {
  -            return new DataSer();
  -        }
  -    }
  -    public static DeserializerFactory getFactory()
  -    {
  -        return new DataSerFactory();
  -    }
  -    
  -    private Hashtable typesByMemberName = new Hashtable();  
  -    
  -    public DataSer()
  -    {
  -        typesByMemberName.put(STRINGMEMBER, SOAPTypeMappingRegistry.XSD_STRING);
  -        typesByMemberName.put(FLOATMEMBER, SOAPTypeMappingRegistry.XSD_FLOAT);
  -        typesByMemberName.put(DATAMEMBER, myTypeQName);
  -        value = new Data();
  -    }
  -    
  -    /** DESERIALIZER STUFF - event handlers
  -     */
  -    
  -    public SOAPHandler onStartChild(String namespace,
  -                                    String localName,
  -                                    String prefix,
  -                                    Attributes attributes,
  -                                    DeserializationContext context)
  -        throws SAXException
  -    {
  -        QName typeQName = (QName)typesByMemberName.get(localName);
  -        if (typeQName == null)
  -            throw new SAXException("Invalid element in Data struct - " + localName);
  -        
  -        // These can come in either order.
  -        Deserializer dSer = context.getTypeMappingRegistry().
  -                                                   getDeserializer(typeQName);
  -        try {
  -            dSer.registerValueTarget(value, localName);
  -        } catch (NoSuchFieldException e) {
  -            throw new SAXException(e);
  -        }
  -        
  -        if (dSer == null)
  -            throw new SAXException("No deserializer for a " + typeQName + "???");
  -        
  -        return dSer;
  -    }
  -    
       /** SERIALIZER STUFF
        */
  -    
  +    /**
  +     * Serialize an element named name, with the indicated attributes 
  +     * and value.  
  +     * @param name is the element name
  +     * @param attributes are the attributes...serialize is free to add more.
  +     * @param value is the value
  +     * @param context is the SerializationContext
  +     */
       public void serialize(QName name, Attributes attributes,
                             Object value, SerializationContext context)
           throws IOException
  @@ -83,9 +38,10 @@
           Data data = (Data)value;
           
           context.startElement(name, attributes);
  -        context.serialize(new QName("", STRINGMEMBER), null, data.stringMember);
  -        context.serialize(new QName("", FLOATMEMBER), null, data.floatMember);
  -        context.serialize(new QName("", DATAMEMBER), null, data.dataMember);
  +        context.serialize(new QName("", STRINGMEMBER), null, data.stringMember, String.class);
  +        context.serialize(new QName("", FLOATMEMBER), null, data.floatMember, float.class);
  +        context.serialize(new QName("", DATAMEMBER), null, data.dataMember, Data.class);
           context.endElement();
       }
  +    public String getMechanismType() { return Constants.AXIS_SAX; }
   }
  
  
  
  1.18.4.1  +12 -7     xml-axis/java/samples/encoding/TestSer.java
  
  Index: TestSer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/encoding/TestSer.java,v
  retrieving revision 1.18
  retrieving revision 1.18.4.1
  diff -u -r1.18 -r1.18.4.1
  --- TestSer.java	26 Oct 2001 18:18:57 -0000	1.18
  +++ TestSer.java	28 Jan 2002 06:42:56 -0000	1.18.4.1
  @@ -2,8 +2,12 @@
   
   import org.apache.axis.MessageContext;
   import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.Constants;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -48,11 +52,15 @@
               
               if (args.length == 0) {
                   Writer stringWriter = new StringWriter();
  -                SerializationContext context = new SerializationContext(stringWriter, msgContext);
  +                SerializationContext context = new SerializationContextImpl(stringWriter, msgContext);
                   
                   TypeMappingRegistry reg = context.getTypeMappingRegistry();
  -                
  -                reg.addSerializer(Data.class, dataQName, new DataSer());
  +                TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP_ENC);
  +                if (tm == null) {
  +                    tm = (TypeMapping) reg.createTypeMapping();
  +                    reg.register(tm, new String[] {Constants.URI_SOAP_ENC});
  +                }
  +                tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory());
   
                   msg.output(context);
                   
  @@ -68,10 +76,7 @@
                   reader = new FileReader(args[0]);
               }
               
  -            TypeMappingRegistry reg = msgContext.getTypeMappingRegistry();
  -            reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory());
  -            
  -            DeserializationContext dser = new DeserializationContext(
  +            DeserializationContext dser = new DeserializationContextImpl(
                   new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
               dser.parse();
               SOAPEnvelope env = dser.getEnvelope();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/samples/encoding/DataDeser.java
  
  Index: DataDeser.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/encoding/DataDeser.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/samples/encoding/DataDeserFactory.java
  
  Index: DataDeserFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/encoding/DataDeserFactory.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/samples/encoding/DataSerFactory.java
  
  Index: DataSerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/encoding/DataSerFactory.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.11.2.1  +2 -1      xml-axis/java/samples/proxy/ProxyService.java
  
  Index: ProxyService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/proxy/ProxyService.java,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- ProxyService.java	3 Jan 2002 18:08:28 -0000	1.11
  +++ ProxyService.java	28 Jan 2002 06:42:56 -0000	1.11.2.1
  @@ -95,7 +95,8 @@
               Call    call = (Call) service.createCall();
   
               SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -	    service.getEngine().deployTransport("tcp", c);
  +            // !!! FIXME
  +            //service.getEngine().deployTransport("tcp", c);
       
               // add TCP for proxy testing
               call.addTransportPackage("samples.transport");
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +20 -4     xml-axis/java/samples/security/LogHandler.java
  
  Index: LogHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/security/LogHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- LogHandler.java	14 Jan 2002 14:21:02 -0000	1.2
  +++ LogHandler.java	28 Jan 2002 06:42:56 -0000	1.2.2.1
  @@ -89,8 +89,10 @@
           /** Log an access each time we get invoked.
            */
           try {
  +System.out.println("Starting Server verification");            
               Handler serviceHandler = msgContext.getServiceHandler();
               String filename = (String)getOption("filename");
  +
               if ((filename == null) || (filename.equals("")))
                   throw new AxisFault("Server.NoLogFile",
                                    "No log file configured for the LogHandler!",
  @@ -99,13 +101,19 @@
               
   	    PrintWriter writer = new PrintWriter(fos);
               
  -            Integer numAccesses =
  -                             (Integer)serviceHandler.getOption("accesses");
  +            Integer numAccesses = null;
  +
  +            try {
  +                 numAccesses = (Integer)serviceHandler.getOption("accesses");
  +            } catch (ClassCastException cce) {
  +            } catch (Exception e) {
  +                e.printStackTrace();
  +            }
               if (numAccesses == null)
                   numAccesses = new Integer(0);
               
               numAccesses = new Integer(numAccesses.intValue() + 1);
  -            
  +
               Date date = new Date();
               String result = date + ": service " +
                               msgContext.getTargetService() +
  @@ -124,12 +132,20 @@
   
               Element nsctx = doc.createElement("nsctx");
               nsctx.setAttribute("xmlns:ds", Constants.SignatureSpecNS);
  -	    
  +
               Element signatureElem = (Element) xpathAPI.selectSingleNode(doc,
   									"//ds:Signature", nsctx);
  +
  +	    // check to make sure that the document claims to have been signed
  +	    if (signatureElem == null) {
  +		writer.println("The document is not signed"); writer.flush();
  +		return;
  +	    }
  +
               XMLSignature sig = new XMLSignature(signatureElem, BaseURI);
   	    
               boolean verify = sig.checkSignatureValue(sig.getKeyInfo().getPublicKey());
  +System.out.println("Server verification complete.");            
   
               writer.println("The signature is" + (verify
                                                  ? " "
  
  
  
  1.3.2.1   +15 -7     xml-axis/java/samples/security/SignedSOAPEnvelope.java
  
  Index: SignedSOAPEnvelope.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/security/SignedSOAPEnvelope.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- SignedSOAPEnvelope.java	22 Jan 2002 15:11:12 -0000	1.3
  +++ SignedSOAPEnvelope.java	28 Jan 2002 06:42:56 -0000	1.3.2.1
  @@ -66,7 +66,7 @@
   
   import org.apache.axis.*;
   import org.apache.axis.configuration.NullProvider;
  -import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPBodyElement;
   import org.apache.axis.message.MessageElement;
  @@ -76,6 +76,7 @@
   import org.apache.axis.transport.http.HTTPTransport ;
   import org.apache.axis.utils.*;
   import org.apache.xml.security.signature.XMLSignature;
  +import org.apache.xml.security.c14n.Canonicalizer;
   import org.w3c.dom.Element;
   import org.w3c.dom.Document;
   import org.xml.sax.InputSource;
  @@ -106,6 +107,7 @@
   
       private void init (SOAPEnvelope env, String baseURI, String keystoreFile) {
           try {
  +System.out.println("Beginning Client signing...");
               env.addMapping(new Mapping(SOAPSECNS,SOAPSECprefix));
               env.addAttribute(Constants.URI_SOAP_ENV,"actor","some-uri");
               env.addAttribute(Constants.URI_SOAP_ENV,"mustUnderstand","1");
  @@ -113,7 +115,7 @@
               SOAPHeader header = new SOAPHeader(XMLUtils.StringToElement(SOAPSECNS,"Signature", ""));
               env.addHeader(header);
   
  -            Document doc = env.getAsDocument();
  +	    Document doc = env.getAsDocument();
   
               KeyStore ks = KeyStore.getInstance(keystoreType);
               FileInputStream fis = new FileInputStream(keystoreFile);
  @@ -125,28 +127,34 @@
   
               Element soapHeaderElement = (Element)((Element)doc.getFirstChild()).getElementsByTagNameNS("*","Header").item(0);
               Element soapSignatureElement = (Element)soapHeaderElement.getElementsByTagNameNS("*","Signature").item(0);
  +
               XMLSignature sig = new XMLSignature(doc, baseURI,
                                                   XMLSignature.ALGO_ID_SIGNATURE_DSA);
  +
               soapSignatureElement.appendChild(sig.getElement());
               sig.addDocument("#Body");
   
  +
               X509Certificate cert =
                     (X509Certificate) ks.getCertificate(certificateAlias);
   
  +
               sig.addKeyInfo(cert);
               sig.addKeyInfo(cert.getPublicKey());
               sig.sign(privateKey);
   
  -            ByteArrayOutputStream baos = new ByteArrayOutputStream();
  -            org.apache.xml.security.utils.XMLUtils.outputDOMc14nWithComments(doc, baos);
  +            Canonicalizer c14n = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
  +            byte[] canonicalMessage = c14n.canonicalizeDocument(doc);
   
  -            InputSource is = new InputSource(new java.io.ByteArrayInputStream(baos.toByteArray()));
  -            DeserializationContext dser = null ;
  +            InputSource is = new InputSource(new java.io.ByteArrayInputStream(canonicalMessage));
  +            DeserializationContextImpl dser = null ;
               AxisClient     tmpEngine = new AxisClient(new NullProvider());
               MessageContext msgContext = new MessageContext(tmpEngine);
  -            dser = new DeserializationContext(is, msgContext,
  +            dser = new DeserializationContextImpl(is, msgContext,
                                                 Message.REQUEST, this );
  +
               dser.parse();
  +System.out.println("Client signing complete.");
           }
           catch( Exception e ) {
               e.printStackTrace();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.23.2.1  +13 -7     xml-axis/java/samples/transport/FileTest.java
  
  Index: FileTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/FileTest.java,v
  retrieving revision 1.23
  retrieving revision 1.23.2.1
  diff -u -r1.23 -r1.23.2.1
  --- FileTest.java	11 Jan 2002 21:42:10 -0000	1.23
  +++ FileTest.java	28 Jan 2002 06:42:56 -0000	1.23.2.1
  @@ -2,6 +2,8 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.configuration.XMLStringProvider;
  +import org.apache.axis.deployment.wsdd.WSDDConstants;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.client.Transport;
  @@ -19,6 +21,16 @@
    */
   
   public class FileTest {
  +    static final String wsdd =
  +            "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" " +
  +                  "xmlns:java=\"" + WSDDConstants.WSDD_JAVA + "\">\n" +
  +            " <transport name=\"FileTransport\" pivot=\"java:samples.transport.FileSender\"/>\n" +
  +            " <service name=\"" + WSDDConstants.WSDD_NS + "\" provider=\"java:MSG\">\n" +
  +            "  <parameter name=\"allowedMethods\" value=\"AdminService\"/>\n" +
  +            "  <parameter name=\"className\" value=\"org.apache.axis.utils.Admin\"/>\n" +
  +            " </service>\n" +
  +            "</deployment>";
  +
       public static void main(String args[]) throws Exception {
           FileReader  reader = new FileReader();
           reader.setDaemon(true);
  @@ -34,14 +46,8 @@
           }
   
           String   symbol = args[0] ;
  -        Service  service = new Service();
  +        Service  service = new Service(new XMLStringProvider(wsdd));
           Call     call    = (Call) service.createCall();
  -
  -        AxisEngine engine = service.getEngine();
  -
  -        // Manually deploy file sender and file transport for this example
  -        SimpleTargetedChain c = new SimpleTargetedChain(new FileSender());
  -        engine.deployTransport("FileTransport", c);
   
           call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") );
           call.addParameter( "symbol", XMLType.XSD_STRING, ParameterMode.PARAM_MODE_IN );
  
  
  
  1.2.4.1   +1 -1      xml-axis/java/samples/transport/testit.cmd
  
  Index: testit.cmd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/testit.cmd,v
  retrieving revision 1.2
  retrieving revision 1.2.4.1
  diff -u -r1.2 -r1.2.4.1
  --- testit.cmd	17 Oct 2001 21:12:58 -0000	1.2
  +++ testit.cmd	28 Jan 2002 06:42:56 -0000	1.2.4.1
  @@ -1,2 +1,2 @@
  -java org.apache.axis.utils.Admin server deploy.xml
  +java org.apache.axis.utils.Admin server deploy.wsdd
   java samples.transport.FileTest XXX
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +11 -0     xml-axis/java/samples/transport/Attic/client_deploy.wsdd
  
  
  
  
  1.1.2.1   +14 -0     xml-axis/java/samples/transport/Attic/deploy.wsdd
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.12.2.1  +11 -4     xml-axis/java/samples/transport/tcp/AdminClient.java
  
  Index: AdminClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/AdminClient.java,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- AdminClient.java	3 Jan 2002 18:08:28 -0000	1.12
  +++ AdminClient.java	28 Jan 2002 06:42:56 -0000	1.12.2.1
  @@ -57,6 +57,9 @@
   
   import org.apache.axis.client.Call;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   
   /**
    * An admin client object, which will work with the TCP transport.
  @@ -67,18 +70,22 @@
    */
   
   public class AdminClient extends org.apache.axis.client.AdminClient {
  -
       public static void main(String args[]) {
   
           Call.addTransportPackage("samples.transport");
           Call.setTransportForProtocol("tcp", TCPTransport.class);
   
  +        SimpleProvider provider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.CLIENT_CONFIG_FILE));
  +        SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  +        provider.deployTransport("tcp", c);
  +
  +        AdminClient.setDefaultConfiguration(provider);
  +
           try {
               org.apache.axis.client.AdminClient client =
                   new org.apache.axis.client.AdminClient(System.err);
  -
  -            SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -            client.getCall().getService().getEngine().deployTransport("tcp", c);
   
               System.out.println(client.process(args));
           }
  
  
  
  1.16.2.1  +11 -5     xml-axis/java/samples/transport/tcp/GetQuote.java
  
  Index: GetQuote.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/GetQuote.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- GetQuote.java	11 Jan 2002 21:42:11 -0000	1.16
  +++ GetQuote.java	28 Jan 2002 06:42:56 -0000	1.16.2.1
  @@ -57,6 +57,9 @@
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.client.Transport;
  @@ -92,12 +95,15 @@
           
           String namespace = "urn:xmltoday-delayed-quotes";
           symbol = args[0] ;
  -        
  -        Service service = new Service();
  -        Call call = (Call)service.createCall();
  -        
  +
  +        SimpleProvider provider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.CLIENT_CONFIG_FILE));
           SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -        service.getEngine().deployTransport("tcp", c);
  +        provider.deployTransport("tcp", c);
  +
  +        Service service = new Service(provider);
  +        Call call = (Call)service.createCall();
           
           call.setTransport(new TCPTransport());
           
  
  
  
  1.14.2.2  +18 -10    xml-axis/java/samples/transport/tcp/TCPListener.java
  
  Index: TCPListener.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/TCPListener.java,v
  retrieving revision 1.14.2.1
  retrieving revision 1.14.2.2
  diff -u -r1.14.2.1 -r1.14.2.2
  --- TCPListener.java	25 Jan 2002 14:55:47 -0000	1.14.2.1
  +++ TCPListener.java	28 Jan 2002 06:42:56 -0000	1.14.2.2
  @@ -61,10 +61,16 @@
   import org.apache.axis.MessageContext;
   import org.apache.axis.SimpleTargetedChain;
   import org.apache.axis.ConfigurationException;
  +import org.apache.axis.deployment.wsdd.WSDDConstants;
  +import org.apache.axis.providers.java.MsgProvider;
  +import org.apache.axis.handlers.soap.SOAPService;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.XMLStringProvider;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.utils.Options;
   import org.apache.log4j.Category;
   
  +import javax.xml.rpc.namespace.QName;
   import java.io.BufferedOutputStream;
   import java.io.ByteArrayInputStream;
   import java.io.IOException;
  @@ -99,6 +105,16 @@
       // becomes true when we want to quit
       private boolean done = false;
   
  +    static final String wsdd =
  +            "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" " +
  +                  "xmlns:java=\"" + WSDDConstants.WSDD_JAVA + "\">\n" +
  +            " <transport name=\"tcp\" pivot=\"java:samples.transport.tcp.TCPSender\"/>\n" +
  +            " <service name=\"" + WSDDConstants.WSDD_NS + "\" provider=\"java:MSG\">\n" +
  +            "  <parameter name=\"allowedMethods\" value=\"AdminService\"/>\n" +
  +            "  <parameter name=\"className\" value=\"org.apache.axis.utils.Admin\"/>\n" +
  +            " </service>\n" +
  +            "</deployment>";
  +
       public static void main (String args[]) {
           new TCPListener(args).run();
       }
  @@ -152,17 +168,9 @@
           public void run () {
               // get the input stream
               if ( engine == null ) {
  -                engine = new AxisServer();
  +                XMLStringProvider provider = new XMLStringProvider(wsdd);
  +                engine = new AxisServer(provider);
                   engine.init();
  -
  -                SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -
  -                try {
  -                    engine.deployTransport(transportName, c);
  -                } catch (ConfigurationException e) {
  -                    // !!! We're toast.  What to do about it?
  -                    System.exit(-1);
  -                }
               }
   
               /* Place the Request message in the MessagContext object - notice */
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +11 -0     xml-axis/java/samples/transport/tcp/Attic/client_deploy.wsdd
  
  
  
  
  1.1.2.1   +5 -0      xml-axis/java/samples/transport/tcp/Attic/deploy.wsdd
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.12.2.1  +3 -3      xml-axis/java/samples/userguide/example5/Client.java
  
  Index: Client.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/userguide/example5/Client.java,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- Client.java	11 Jan 2002 21:42:11 -0000	1.12
  +++ Client.java	28 Jan 2002 06:42:57 -0000	1.12.2.1
  @@ -83,9 +83,9 @@
           Call     call    = (Call) service.createCall();
           QName    qn      = new QName( "urn:BeanService", "Order" );
   
  -        call.addSerializer(Order.class, qn,
  -                    new org.apache.axis.encoding.BeanSerializer(Order.class));
  -        
  +        call.registerTypeMapping(Order.class, qn,
  +                      new org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, qn),        
  +                      new org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, qn));        
           String result;
           try {
               call.setTargetEndpointAddress( new java.net.URL(options.getURL()) );
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +6 -1      xml-axis/java/samples/userguide/example6/WidgetPriceServiceTestCase.java
  
  Index: WidgetPriceServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/userguide/example6/WidgetPriceServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- WidgetPriceServiceTestCase.java	10 Dec 2001 23:24:11 -0000	1.1
  +++ WidgetPriceServiceTestCase.java	28 Jan 2002 06:42:57 -0000	1.1.2.1
  @@ -66,7 +66,12 @@
       }
   
       public void testWidgetPrice() {
  -        samples.userguide.example6.WidgetPrice binding = new WidgetPriceService().getWidgetPrice();
  +        samples.userguide.example6.WidgetPrice binding;
  +        try {
  +            binding = new WidgetPriceService().getWidgetPrice();
  +        } catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC  Exception caught: " + jre );
  +        }
           ((WidgetPriceSoapBindingStub)binding).setMaintainSession(true);
           assertTrue("binding is null", binding != null);
           try {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/javax/xml/messaging/Endpoint.java
  
  Index: Endpoint.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/messaging/Endpoint.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/src/javax/xml/messaging/URLEndpoint.java
  
  Index: URLEndpoint.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/messaging/URLEndpoint.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.5.4.1   +27 -0     xml-axis/java/src/javax/xml/rpc/Service.java
  
  Index: Service.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/rpc/Service.java,v
  retrieving revision 1.5
  retrieving revision 1.5.4.1
  diff -u -r1.5 -r1.5.4.1
  --- Service.java	30 Oct 2001 16:46:33 -0000	1.5
  +++ Service.java	28 Jan 2002 06:42:57 -0000	1.5.4.1
  @@ -94,6 +94,20 @@
           throws JAXRPCException;
   
       /**
  +     * The getPort method returns a dynamic proxy for a default service port. A service client uses this dynamic 
  +     * proxy to invoke operations on the target service port. The serviceDefInterface specifies the service definition 
  +     * interface that is supported by the created dynamic proxy.
  +     *
  +     * @param serviceDefInterface - Service definition interface supported by the dynamic proxy
  +     *
  +     * @return Dynamic proxy object that supports the service definition interface that extends the java.rmi.Remote
  +     *
  +     * @throws JAXRPCException - If the service class fails to create a dynamic proxy
  +     */
  +    public java.rmi.Remote getPort(Class serviceDefInterface)
  +            throws JAXRPCException;
  +
  +    /**
        * Creates a Call instance.
        *
        * @param - The qualified name for the target service port
  @@ -115,6 +129,19 @@
        * @throws JAXRPCException - If the Service class fails to create a Call object
        */
       public Call createCall(QName portName, String operationName)
  +        throws JAXRPCException;
  +
  +    /**
  +     * Creates a Call instance.
  +     *
  +     * @param portName - The qualified name for the target service port
  +     * @param operationName - QName of the operation for which this Call object is created.
  +     *
  +     * @return Call object
  +     *
  +     * @throws JAXRPCException - If the Service class fails to create a Call object
  +     */
  +    public Call createCall(QName portName, QName operationName)
           throws JAXRPCException;
   
       /**
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.1   +5 -5      xml-axis/java/src/javax/xml/rpc/encoding/TypeMappingRegistry.java
  
  Index: TypeMappingRegistry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/rpc/encoding/TypeMappingRegistry.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- TypeMappingRegistry.java	16 Jan 2002 16:41:36 -0000	1.7
  +++ TypeMappingRegistry.java	28 Jan 2002 06:42:57 -0000	1.7.2.1
  @@ -69,10 +69,10 @@
   
       /**
        * The method register adds a TypeMapping instance for a specific 
  -     * web service namespace.                        
  +     * namespace                        
        *
        * @param mapping - TypeMapping for specific type namespaces
  -     * @param namespaceURIs - Web service namespace
  +     * @param namespaceURIs
        *
        * @throws JAXRPCException - If there is any error in the registration
        * of the TypeMapping for the specified namespace URI
  @@ -95,10 +95,10 @@
           throws JAXRPCException;
   
       /**
  -     * Gets the TypeMapping for the Web Service namespace.  If not found, the default TypeMapping 
  +     * Gets the TypeMapping namespace.  If not found, the default TypeMapping 
        * is returned.
        *
  -     * @param namespaceURI - The namespace URI of a Web Service
  +     * @param namespaceURI - The namespace URI
        * @return The registered TypeMapping (which may be the default TypeMapping) or null.
        */
       public TypeMapping getTypeMapping(String namespaceURI);
  @@ -106,7 +106,7 @@
       /**
        * Removes the TypeMapping for the namespace.
        *
  -     * @param namespaceURI - The namespace URI of a type
  +     * @param namespaceURI - The namespace URI
        * @return The registered TypeMapping or null.
        */
       public TypeMapping removeTypeMapping(String namespaceURI);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/javax/xml/soap/AttachmentPart.java
  
  Index: AttachmentPart.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/AttachmentPart.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/src/javax/xml/soap/Detail.java
  
  Index: Detail.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Detail.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/src/javax/xml/soap/DetailEntry.java
  
  Index: DetailEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/DetailEntry.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/src/javax/xml/soap/FactoryFinder.java
  
  Index: FactoryFinder.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/FactoryFinder.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/src/javax/xml/soap/MessageFactory.java
  
  Index: MessageFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MessageFactory.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/src/javax/xml/soap/MimeHeader.java
  
  Index: MimeHeader.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MimeHeader.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/src/javax/xml/soap/MimeHeaders.java
  
  Index: MimeHeaders.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MimeHeaders.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/src/javax/xml/soap/Name.java
  
  Index: Name.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Name.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/src/javax/xml/soap/Node.java
  
  Index: Node.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Node.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/src/javax/xml/soap/SOAPBody.java
  
  Index: SOAPBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPBody.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/src/javax/xml/soap/SOAPBodyElement.java
  
  Index: SOAPBodyElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPBodyElement.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/src/javax/xml/soap/SOAPConnection.java
  
  Index: SOAPConnection.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConnection.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/src/javax/xml/soap/SOAPConnectionFactory.java
  
  Index: SOAPConnectionFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConnectionFactory.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/src/javax/xml/soap/SOAPConstants.java
  
  Index: SOAPConstants.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConstants.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/src/javax/xml/soap/SOAPElement.java
  
  Index: SOAPElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPElement.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/src/javax/xml/soap/SOAPElementFactory.java
  
  Index: SOAPElementFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPElementFactory.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/src/javax/xml/soap/SOAPEnvelope.java
  
  Index: SOAPEnvelope.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPEnvelope.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/src/javax/xml/soap/SOAPException.java
  
  Index: SOAPException.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPException.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/src/javax/xml/soap/SOAPFault.java
  
  Index: SOAPFault.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPFault.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/src/javax/xml/soap/SOAPFaultElement.java
  
  Index: SOAPFaultElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPFaultElement.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/src/javax/xml/soap/SOAPHeader.java
  
  Index: SOAPHeader.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPHeader.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/src/javax/xml/soap/SOAPHeaderElement.java
  
  Index: SOAPHeaderElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPHeaderElement.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/src/javax/xml/soap/SOAPMessage.java
  
  Index: SOAPMessage.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPMessage.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/src/javax/xml/soap/SOAPPart.java
  
  Index: SOAPPart.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPPart.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/src/javax/xml/soap/Text.java
  
  Index: Text.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Text.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.1.2.1   +0 -0      xml-axis/java/src/javax/xml/transform/Source.java
  
  Index: Source.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/javax/xml/transform/Source.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.63.2.4  +28 -106   xml-axis/java/src/org/apache/axis/AxisEngine.java
  
  Index: AxisEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisEngine.java,v
  retrieving revision 1.63.2.3
  retrieving revision 1.63.2.4
  diff -u -r1.63.2.3 -r1.63.2.4
  --- AxisEngine.java	25 Jan 2002 14:55:47 -0000	1.63.2.3
  +++ AxisEngine.java	28 Jan 2002 06:42:58 -0000	1.63.2.4
  @@ -59,9 +59,10 @@
   import org.apache.axis.deployment.DeploymentException;
   import org.apache.axis.deployment.wsdd.*;
   import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMappingRegistryImpl;
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.InternalException;
  @@ -119,10 +120,10 @@
        * scope", have it store things in this Session.
        */
       private Session session = new SimpleSession();
  -    
  +
       /**
        * What actor URIs hold for the entire engine?
  -     */ 
  +     */
       private ArrayList actorURIs = new ArrayList();
   
       /**
  @@ -132,7 +133,7 @@
       private static ThreadLocal currentMessageContext = new ThreadLocal();
   
       /**
  -     * Set the active message context. 
  +     * Set the active message context.
        *
        * @param mc - the new active message context.
        */
  @@ -141,7 +142,7 @@
       }
   
       /**
  -     * Get the active message context. 
  +     * Get the active message context.
        *
        * @return the current active message context
        */
  @@ -174,14 +175,15 @@
               category.debug(JavaUtils.getMessage("enter00", "AxisEngine::init"));
           }
   
  -        getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton());
  +        // The SOAP/XSD stuff is in the default TypeMapping of the TypeMappingRegistry.
  +        //getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton());
   
           try {
               config.configureEngine(this);
           } catch (Exception e) {
               throw new InternalException(e);
           }
  -        
  +
           if (category.isDebugEnabled()) {
               category.debug(JavaUtils.getMessage("exit00", "AxisEngine::init"));
           }
  @@ -202,6 +204,10 @@
           }
       }
   
  +    public EngineConfiguration getConfig() {
  +        return config;
  +    }
  +
       public boolean hasSafePassword()
       {
           return _hasSafePassword;
  @@ -218,7 +224,7 @@
       {
           this.shouldSaveConfig = shouldSaveConfig;
       }
  -    
  +
       public Handler getHandler(String name) throws AxisFault
       {
           try {
  @@ -227,7 +233,7 @@
               throw new AxisFault(e);
           }
       }
  -    
  +
       public Handler getService(String name) throws AxisFault
       {
           try {
  @@ -236,7 +242,7 @@
               throw new AxisFault(e);
           }
       }
  -    
  +
       public Handler getTransport(String name) throws AxisFault
       {
           try {
  @@ -246,49 +252,40 @@
           }
       }
   
  -    public DeploymentRegistry getDeploymentRegistry()
  -    {
  -        return config.getDeploymentRegistry();
  -    }
  -
       public TypeMappingRegistry getTypeMappingRegistry()
       {
           TypeMappingRegistry tmr = null;
           try {
  -            tmr = config.getTypeMappingRegistry("");
  -            if (tmr == null) {
  -                tmr = new TypeMappingRegistry();
  -                config.getDeploymentRegistry().addTypeMappingRegistry("", tmr);
  -            }
  +            tmr = config.getTypeMappingRegistry();
           } catch (ConfigurationException e) {
               category.error(e);
           }
  -        
  +
           return tmr;
       }
  -    
  +
       public Handler getGlobalRequest()
           throws ConfigurationException
       {
           return config.getGlobalRequest();
       }
  -    
  +
       public Handler getGlobalResponse()
           throws ConfigurationException
       {
           return config.getGlobalResponse();
       }
  -    
  +
       public ArrayList getActorURIs()
       {
           return actorURIs;
       }
  -    
  +
       public void addActorURI(String uri)
       {
           actorURIs.add(uri);
       }
  -    
  +
       public void removeActorURI(String uri)
       {
           actorURIs.remove(uri);
  @@ -300,7 +297,7 @@
        * An AxisEngine may define another specific AxisEngine to be used
        * by newly created Clients.  For instance, a server may
        * create an AxisClient and allow deployment to it.  Then
  -     * the server's services may access the AxisClient's deployed 
  +     * the server's services may access the AxisClient's deployed
        * handlers and transports.
        *********************************************************************
        */
  @@ -317,38 +314,10 @@
       */
   
       /**
  -     * Register a new global type mapping
  -     */
  -    public void registerTypeMapping(QName qName,
  -                                    Class cls,
  -                                    DeserializerFactory deserFactory,
  -                                    Serializer serializer)
  -        throws IntrospectionException
  -    {
  -        category.info(JavaUtils.getMessage("registerTypeMap00",
  -                qName.toString(), cls.getName()));
  -        if (deserFactory != null)
  -            getTypeMappingRegistry().addDeserializerFactory(qName,
  -                                                        cls,
  -                                                        deserFactory);
  -        if (serializer != null)
  -            getTypeMappingRegistry().addSerializer(cls, qName, serializer);
  -    }
  -
  -    /**
  -     * Unregister a global type mapping
  -     */
  -    public void unregisterTypeMapping(QName qName, Class cls)
  -    {
  -        getTypeMappingRegistry().removeDeserializer(qName);
  -        getTypeMappingRegistry().removeSerializer(cls);
  -    }
  -
  -    /**
        * List of options which should be converted from Strings to Booleans
        * automatically. Note that these options are common to all XML
        * web services.
  -     */ 
  +     */
       private static final String [] BOOLEAN_OPTIONS = new String [] {
           PROP_DOMULTIREFS, PROP_SEND_XSI, PROP_XML_DECL
       };
  @@ -363,7 +332,7 @@
       private void normaliseOptions() {
           // Convert boolean options to Booleans so we don't need to use
           // string comparisons.  Default is "true".
  -        
  +
           for (int i = 0; i < BOOLEAN_OPTIONS.length; i++) {
               Object val = getOption(BOOLEAN_OPTIONS[i]);
               if (val != null) {
  @@ -378,7 +347,7 @@
               // If it was null or not "false"...
               setOption(BOOLEAN_OPTIONS[i], Boolean.TRUE);
           }
  -        
  +
           // Deal with admin password's default value.
           if (getOption(PROP_PASSWORD) == null) {
               setOption(PROP_PASSWORD, DEFAULT_ADMIN_PASSWORD);
  @@ -404,53 +373,7 @@
       public void deployHandler(String key, Handler handler)
           throws ConfigurationException
       {
  -        config.getDeploymentRegistry().deployHandler(key, handler);
  -    }
  -
  -    /**
  -     * Undeploy (remove) a Handler from our handler registry.
  -     */
  -    public void undeployHandler(String key)
  -        throws ConfigurationException
  -    {
  -        config.getDeploymentRegistry().undeployHandler(key);
  -    }
  -
  -    /**
  -     * Deploy a Service into our service registry
  -     */
  -    public void deployService(String key, SOAPService service)
  -        throws ConfigurationException
  -    {
  -        service.setEngine(this);
  -        config.getDeploymentRegistry().deployService(key, service);
  -    }
  -
  -    /**
  -     * Undeploy (remove) a Service from the handler registry
  -     */
  -    public void undeployService(String key)
  -        throws ConfigurationException
  -    {
  -        config.getDeploymentRegistry().undeployService(key);
  -    }
  -
  -    /**
  -     * Deploy a Transport
  -     */
  -    public void deployTransport(String key, SimpleTargetedChain transport)
  -        throws ConfigurationException
  -    {
  -        config.getDeploymentRegistry().deployTransport(key, transport);
  -    }
  -
  -    /**
  -     * Undeploy (remove) a client Transport
  -     */
  -    public void undeployTransport(String key)
  -        throws ConfigurationException
  -    {
  -        config.getDeploymentRegistry().undeployTransport(key);
  +//        config.getDeploymentRegistry().deployHandler(key, handler);
       }
   
       /**
  @@ -461,5 +384,4 @@
       public Session getApplicationSession () {
           return session;
       }
  -
   };
  
  
  
  1.45.2.1  +75 -1     xml-axis/java/src/org/apache/axis/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v
  retrieving revision 1.45
  retrieving revision 1.45.2.1
  diff -u -r1.45 -r1.45.2.1
  --- Constants.java	3 Jan 2002 17:12:36 -0000	1.45
  +++ Constants.java	28 Jan 2002 06:42:58 -0000	1.45.2.1
  @@ -56,7 +56,7 @@
   package org.apache.axis;
   
   import org.apache.axis.utils.QFault;
  -
  +import org.xml.sax.Attributes;
   import javax.xml.rpc.namespace.QName;
   
   public class Constants {
  @@ -138,6 +138,40 @@
           return false;
       }
   
  +    /**
  +     * getValue
  +     * This utility routine returns the value of the attribute represented by the qname
  +     * namespaceURI:localPart.  If the namespaceURI is one of the current known namespaces
  +     * (like URI_CURRENT_SCHEMA_XSD), then all of the known qnames for this item are 
  +     * searched.
  +     * @param attributes are the attributes to search
  +     * @param namespaceURI is the current known namespace for the attribute name
  +     * @param localPart is the local part of the attribute name
  +     * @return the value of the attribute or null
  +     */
  +    public static String getValue(Attributes attributes, String namespaceURI, String localPart) {
  +        if (attributes == null || namespaceURI == null || localPart == null)
  +            return null;
  +        String[] search = null;
  +        if (namespaceURI.equals(URI_CURRENT_SOAP_ENC)) 
  +            search = URIS_SOAP_ENC;
  +        else if (namespaceURI.equals(URI_CURRENT_SOAP_ENV))
  +            search = URIS_SOAP_ENV;
  +        else if (namespaceURI.equals(URI_CURRENT_SCHEMA_XSD))
  +            search = URIS_SCHEMA_XSD;
  +        else if (namespaceURI.equals(URI_CURRENT_SCHEMA_XSI))
  +            search = URIS_SCHEMA_XSI;
  +        else
  +            search = new String[] {namespaceURI};
  +        // Now look for an attribute value
  +        for (int i=0; i < search.length; i++) {
  +            String value = attributes.getValue(search[i], localPart);
  +            if (value != null) {
  +                return value;
  +            }
  +        }
  +        return null;
  +    }
   
       // Misc SOAP Namespaces
       public static final String URI_NEXT_ACTOR = 
  @@ -278,6 +312,8 @@
           return false;
       }
   
  +    // Axis Mechanism Type
  +    public static final String AXIS_SAX = "Axis SAX Mechanism";
   
       public static final String ELEM_ENVELOPE = "Envelope" ;
       public static final String ELEM_HEADER   = "Header" ;
  @@ -327,6 +363,44 @@
                                           new QName(URI_SOAP_ENV, ELEM_FAULT_ACTOR);
       public static final QName QNAME_FAULTDETAILS =
                                            new QName(URI_SOAP_ENV, ELEM_FAULT_DETAIL);
  +
  +
  +    // Define qnames for the all of the XSD and SOAP-ENC encodings
  +    public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string");
  +    public static final QName XSD_BOOLEAN = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "boolean");
  +    public static final QName XSD_DOUBLE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "double");
  +    public static final QName XSD_FLOAT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "float");
  +    public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int");
  +    public static final QName XSD_INTEGER = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "integer");
  +    public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long");
  +    public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short");
  +    public static final QName XSD_BYTE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "byte");
  +    public static final QName XSD_DECIMAL = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "decimal");
  +    public static final QName XSD_BASE64 = new QName(Constants.URI_2001_SCHEMA_XSD, "base64Binary");
  +    public static final QName XSD_HEXBIN = new QName(Constants.URI_2001_SCHEMA_XSD, "hexBinary");
  +    public static final QName XSD_ANYTYPE = new QName(Constants.URI_2001_SCHEMA_XSD, "anyType");
  +    public static final QName XSD_QNAME = new QName(Constants.URI_2001_SCHEMA_XSD, "QName");
  +    public static final QName SOAP_BASE64 = new QName(Constants.URI_CURRENT_SOAP_ENC, "base64");
  +
  +    public static final QName SOAP_STRING = new QName(Constants.URI_CURRENT_SOAP_ENC, "string");
  +    public static final QName SOAP_BOOLEAN = new QName(Constants.URI_CURRENT_SOAP_ENC, "boolean");
  +    public static final QName SOAP_DOUBLE = new QName(Constants.URI_CURRENT_SOAP_ENC, "double");
  +    public static final QName SOAP_FLOAT = new QName(Constants.URI_CURRENT_SOAP_ENC, "float");
  +    public static final QName SOAP_INT = new QName(Constants.URI_CURRENT_SOAP_ENC, "int");
  +    public static final QName SOAP_LONG = new QName(Constants.URI_CURRENT_SOAP_ENC, "long");
  +    public static final QName SOAP_SHORT = new QName(Constants.URI_CURRENT_SOAP_ENC, "short");
  +    public static final QName SOAP_BYTE = new QName(Constants.URI_CURRENT_SOAP_ENC, "byte");
  +    public static final QName SOAP_INTEGER = new QName(Constants.URI_CURRENT_SOAP_ENC, "integer");
  +    public static final QName SOAP_DECIMAL = new QName(Constants.URI_CURRENT_SOAP_ENC, "decimal");
  +    public static final QName SOAP_ARRAY = new QName(Constants.URI_CURRENT_SOAP_ENC, "Array");
  +
  +    public static final QName SOAP_MAP = new QName("http://xml.apache.org/xml-soap", "Map");
  +    public static final QName SOAP_ELEMENT = new QName("http://xml.apache.org/xml-soap", "Element");
  +    public static final QName SOAP_VECTOR = new QName("http://xml.apache.org/xml-soap", "Vector");
  +
  +    public static       QName XSD_DATE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "dateTime");
  +    public static       QName XSD_DATE2= new QName(Constants.URI_1999_SCHEMA_XSD,    "timeInstant");
  +    public static       QName XSD_DATE3= new QName(Constants.URI_2000_SCHEMA_XSD,    "timeInstant");
       
       // Misc Strings
       //////////////////////////////////////////////////////////////////////////
  
  
  
  1.1.2.2   +4 -12     xml-axis/java/src/org/apache/axis/Attic/EngineConfiguration.java
  
  Index: EngineConfiguration.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Attic/EngineConfiguration.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- EngineConfiguration.java	25 Jan 2002 14:55:47 -0000	1.1.2.1
  +++ EngineConfiguration.java	28 Jan 2002 06:42:58 -0000	1.1.2.2
  @@ -57,6 +57,8 @@
   
   import javax.xml.rpc.namespace.QName;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
  +
   import java.util.Hashtable;
   
   // temporary...
  @@ -77,13 +79,6 @@
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
   public interface EngineConfiguration {
  -
  -    /*
  -     * @deprecated This is a temporary method for use only during the WSDD refactoring
  -     * Remember to delete the DeploymentRegistry import when removing this method.
  -     */
  -    public DeploymentRegistry getDeploymentRegistry();
  -
        /**
        * Configure this AxisEngine using whatever data source we have.
        *
  @@ -125,12 +120,9 @@
       public Handler getTransport(QName qname) throws ConfigurationException;
   
       /**
  -     * retrieve an instance of the named mapping registry
  -     * @param encodingStyle XXX
  -     * @return XXX
  -     * @throws ConfigurationException XXX
  +     * Retrieve the TypeMappingRegistry for this engine
        */
  -    public TypeMappingRegistry getTypeMappingRegistry(String encodingStyle)
  +    public TypeMappingRegistry getTypeMappingRegistry()
           throws ConfigurationException;
   
       /**
  
  
  
  1.5.2.1   +5 -3      xml-axis/java/src/org/apache/axis/SOAPPart.java
  
  Index: SOAPPart.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/SOAPPart.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- SOAPPart.java	10 Dec 2001 17:28:03 -0000	1.5
  +++ SOAPPart.java	28 Jan 2002 06:42:58 -0000	1.5.2.1
  @@ -56,7 +56,9 @@
   package org.apache.axis ;
   
   import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.message.InputStreamBody;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.log4j.Category;
  @@ -313,7 +315,7 @@
               StringWriter writer = new StringWriter();
               AxisFault env = (AxisFault)currentMessage;
               try {
  -                env.output(new SerializationContext(writer, getMessage().getMessageContext()));
  +                env.output(new SerializationContextImpl(writer, getMessage().getMessageContext()));
               } catch (Exception e) {
                   e.printStackTrace();
                   return null;
  @@ -326,7 +328,7 @@
               StringWriter writer = new StringWriter();
               SOAPEnvelope env = (SOAPEnvelope)currentMessage;
               try {
  -                env.output(new SerializationContext(writer, getMessage().getMessageContext()));
  +                env.output(new SerializationContextImpl(writer, getMessage().getMessageContext()));
               } catch (Exception e) {
                   e.printStackTrace();
                   return null;
  @@ -371,7 +373,7 @@
               is = new InputSource(new StringReader(getAsString()));
           }
           DeserializationContext dser =
  -            new DeserializationContext(is, getMessage().getMessageContext(), getMessage().getMessageType());
  +            new DeserializationContextImpl(is, getMessage().getMessageContext(), getMessage().getMessageType());
   
           // This may throw a SAXException
           try {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.49.4.1  +27 -1     xml-axis/java/src/org/apache/axis/client/AdminClient.java
  
  Index: AdminClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/AdminClient.java,v
  retrieving revision 1.49
  retrieving revision 1.49.4.1
  diff -u -r1.49 -r1.49.4.1
  --- AdminClient.java	3 Dec 2001 23:53:12 -0000	1.49
  +++ AdminClient.java	28 Jan 2002 06:42:58 -0000	1.49.4.1
  @@ -56,6 +56,7 @@
   package org.apache.axis.client ;
   
   import org.apache.axis.AxisFault;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.message.SOAPBodyElement;
   import org.apache.axis.transport.http.HTTPConstants;
   import org.apache.axis.utils.JavaUtils;
  @@ -89,6 +90,21 @@
       static Category category =
               Category.getInstance(AdminClient.class.getName());
   
  +    private static ThreadLocal defaultConfiguration = new ThreadLocal();
  +
  +    /**
  +     * If the user calls this with an EngineConfiguration object, all
  +     * AdminClients on this thread will use that EngineConfiguration
  +     * rather than the default one.  This is primarily to enable the
  +     * deployment of custom transports and handlers.
  +     *
  +     * @param config the EngineConfiguration which should be used
  +     */
  +    public static void setDefaultConfiguration(EngineConfiguration config)
  +    {
  +        defaultConfiguration.set(config);
  +    }
  +
       protected PrintWriter _log;
       protected Call call;
   
  @@ -98,7 +114,17 @@
       public AdminClient()
       {
           try {
  -            Service service = new Service();
  +            // Initialize our Service - allow the user to override the
  +            // default configuration with a thread-local version (see
  +            // setDefaultConfiguration() above)
  +            EngineConfiguration config =
  +                    (EngineConfiguration)defaultConfiguration.get();
  +            Service service;
  +            if (config != null) {
  +                service = new Service(config);
  +            } else {
  +                service = new Service();
  +            }
               call = (Call) service.createCall();
           } catch (JAXRPCException e) {
               category.fatal(JavaUtils.getMessage("couldntCall00"), e);
  
  
  
  1.62.2.1  +53 -17    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.62
  retrieving revision 1.62.2.1
  diff -u -r1.62 -r1.62.2.1
  --- Call.java	17 Jan 2002 20:19:52 -0000	1.62
  +++ Call.java	28 Jan 2002 06:42:58 -0000	1.62.2.1
  @@ -62,9 +62,14 @@
   import org.apache.axis.SOAPPart;
   import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.encoding.DeserializerFactory;
  +import org.apache.axis.encoding.SerializerFactory;
  +import org.apache.axis.encoding.ser.BaseSerializerFactory;
  +import org.apache.axis.encoding.ser.BaseDeserializerFactory;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPBodyElement;
  @@ -138,7 +143,7 @@
       private Vector             paramNames      = null ;
       private Vector             paramTypes      = null ;
       private Vector             paramModes      = null ;
  -    private String             encodingStyle   = Constants.URI_SOAP_ENC ;
  +    private String             encodingStyle   = Constants.URI_CURRENT_SOAP_ENC ;
       private QName              returnType      = null ;
   
       private MessageContext     msgContext      = null ;
  @@ -449,6 +454,9 @@
                       list = sBody.getEncodingStyles();
                       if ( list != null && list.size() > 0 )
                           this.setEncodingStyle( (String) list.get(0) );
  +                    String ns = sBody.getNamespaceURI();
  +                    if (ns != null && !ns.equals(""))
  +                      setOperationName( new QName( ns, opName ) );
                       break ;
                   }
               }
  @@ -1060,18 +1068,53 @@
       }
   
       /**
  -     * Map a type for serialization.
  +     * Register type mapping information for serialization/deserialization
        *
        * Note: Not part of JAX-RPC specification.
        *
  -     * @param _class the Java class of the data type.
  -     * @param qName the xsi:type QName of the associated XML type.
  -     * @param serializer a Serializer which will be used to write the XML.
  +     * @param javaType is  the Java class of the data type.
  +     * @param xmlType the xsi:type QName of the associated XML type.
  +     * @param sf/df are the factories (or the Class objects of the factory).
  +     * @param force Indicates whether to add the information if already registered.
        */
  -    public void addSerializer(Class _class, QName qName,
  -                              Serializer serializer){
  -        TypeMappingRegistry typeMap = msgContext.getTypeMappingRegistry();
  -        typeMap.addSerializer(_class, qName, serializer);
  +    public void registerTypeMapping(Class javaType, QName xmlType,
  +                                    SerializerFactory sf,
  +                                    DeserializerFactory df) {
  +        registerTypeMapping(javaType, xmlType, sf, df, true);
  +    }
  +    public void registerTypeMapping(Class javaType, QName xmlType,
  +                                    SerializerFactory sf,
  +                                    DeserializerFactory df,
  +                                    boolean force) {
  +        // Get the TypeMappingRegistry
  +        TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry();
  +
  +        // If a TypeMapping is not available, add one.
  +        TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC); 
  +        try {
  +            if (tm == null) {
  +                tm = (TypeMapping) tmr.createTypeMapping();
  +                tmr.register(tm, new String[] {Constants.URI_CURRENT_SOAP_ENC});
  +            }
  +            if (!force && tm.getClassForQName(xmlType) != null) 
  +                return;
  +
  +            // Register the information
  +            tm.register(javaType, xmlType, sf, df);
  +        } catch (Exception e) {}
  +    }
  +    public void registerTypeMapping(Class javaType, QName xmlType,
  +                                    Class sfClass, Class dfClass) {
  +        registerTypeMapping(javaType, xmlType, sfClass, dfClass, true);
  +    }
  +    public void registerTypeMapping(Class javaType, QName xmlType,
  +                                    Class sfClass, Class dfClass, boolean force){
  +        // Instantiate the factory using introspection.
  +        SerializerFactory   sf = BaseSerializerFactory.createFactory  (sfClass, javaType, xmlType);
  +        DeserializerFactory df = BaseDeserializerFactory.createFactory(dfClass, javaType, xmlType);
  +        if (sf != null || df != null) {
  +            registerTypeMapping(javaType, xmlType, sf, df, force);
  +        }
       }
   
       /**
  @@ -1086,13 +1129,6 @@
        * @throws IntrospectionException _class is not compatible with the
        *                            specified deserializer.
        */
  -    public void addDeserializerFactory(QName qName, Class _class,
  -                                       DeserializerFactory deserFactory)
  -        throws IntrospectionException
  -    {
  -        TypeMappingRegistry typeMap = msgContext.getTypeMappingRegistry();
  -        typeMap.addDeserializerFactory(qName, _class, deserFactory);
  -    }
   
       /************************************************
        * Invocation
  @@ -1367,7 +1403,7 @@
           if (category.isDebugEnabled()) {
               StringWriter writer = new StringWriter();
               try {
  -                SerializationContext ctx = new SerializationContext(writer,
  +                SerializationContext ctx = new SerializationContextImpl(writer,
                                                                      msgContext);
                   reqEnv.output(ctx);
                   writer.close();
  
  
  
  1.34.2.2  +33 -1     xml-axis/java/src/org/apache/axis/client/Service.java
  
  Index: Service.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Service.java,v
  retrieving revision 1.34.2.1
  retrieving revision 1.34.2.2
  diff -u -r1.34.2.1 -r1.34.2.2
  --- Service.java	25 Jan 2002 14:55:47 -0000	1.34.2.1
  +++ Service.java	28 Jan 2002 06:42:58 -0000	1.34.2.2
  @@ -211,7 +211,8 @@
               // Start by reading in the WSDL using WSDL4J
               WSDLReader           reader = WSDLFactory.newInstance()
                                                        .newWSDLReader();
  -            reader.setFeature("verbose", false);
  +            // No longer supported
  +            //reader.setFeature("verbose", false);
               Definition           def    = reader.readWSDL( null, doc );
   
               this.wsdlLocation   = null ;
  @@ -247,6 +248,18 @@
       }
   
       /**
  +     * Not implemented yet
  +     *
  +     * @param  proxyInterface  ...
  +     * @return java.rmi.Remote ...
  +     * @throws JAXRPCException If there's an error
  +     */
  +    public java.rmi.Remote getPort(Class proxyInterface)
  +            throws JAXRPCException {
  +        return null;
  +    }
  +
  +    /**
        * Return an object which acts as a dynamic proxy for the passed
        * interface class.  This is a more "dynamic" version in that it
        * doesn't actually require WSDL, simply an endpoint address.
  @@ -345,6 +358,25 @@
   
           org.apache.axis.client.Call call=new org.apache.axis.client.Call(this);
           call.setOperation( portName, operationName );
  +        return( call );
  +    }
  +
  +    /**
  +     * Creates a new Call object - will prefill as much info from the WSDL
  +     * as it can.  Right now it's target URL, SOAPAction, Parameter types,
  +     * and return type of the Web Service.
  +     *
  +     * @param  portName        PortName in the WSDL doc to search for
  +     * @param  operationName   Operation(method) that's going to be invoked
  +     * @return Call            Used for invoking the Web Service
  +     * @throws JAXRPCException If there's an error
  +     */
  +    public javax.xml.rpc.Call createCall(QName portName,
  +                                         QName operationName)
  +                           throws JAXRPCException {
  +
  +        org.apache.axis.client.Call call=new org.apache.axis.client.Call(this);
  +        call.setOperation( portName, operationName.getLocalPart() );
           return( call );
       }
   
  
  
  
  1.72.2.1  +0 -31     xml-axis/java/src/org/apache/axis/client/ServiceClient.java
  
  Index: ServiceClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceClient.java,v
  retrieving revision 1.72
  retrieving revision 1.72.2.1
  diff -u -r1.72 -r1.72.2.1
  --- ServiceClient.java	10 Jan 2002 20:28:35 -0000	1.72
  +++ ServiceClient.java	28 Jan 2002 06:42:58 -0000	1.72.2.1
  @@ -380,37 +380,6 @@
           call.clearHeaders();
       }
   
  -    /**
  -     * Map a type for serialization.
  -     *
  -     * @param _class the Java class of the data type.
  -     * @param qName the xsi:type QName of the associated XML type.
  -     * @param serializer a Serializer which will be used to write the XML.
  -     */
  -    public void addSerializer(Class _class,
  -                              QName qName,
  -                              Serializer serializer) {
  -        call.addSerializer(_class, qName, serializer);
  -    }
  -
  -    /**
  -     * Map a type for deserialization.
  -     *
  -     * @param qName the xsi:type QName of an XML Schema type.
  -     * @param _class the class of the associated Java data type.
  -     * @param deserializerFactory a factory which can create deserializer
  -     *                            instances for this type.
  -     * @throws IntrospectionException _class is not compatible with the
  -     *                            specified deserializer.
  -     */
  -    public void addDeserializerFactory(QName qName,
  -                                       Class _class,
  -                                       DeserializerFactory deserializerFactory)
  -        throws IntrospectionException
  -    {
  -        call.addDeserializerFactory(qName, _class, deserializerFactory);
  -    }
  -
       /************************************************
        * Invocation
        */
  
  
  
  1.1.4.2   +9 -0      xml-axis/java/src/org/apache/axis/client/ServiceFactory.java
  
  Index: ServiceFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceFactory.java,v
  retrieving revision 1.1.4.1
  retrieving revision 1.1.4.2
  diff -u -r1.1.4.1 -r1.1.4.2
  --- ServiceFactory.java	25 Jan 2002 14:55:47 -0000	1.1.4.1
  +++ ServiceFactory.java	28 Jan 2002 06:42:58 -0000	1.1.4.2
  @@ -21,6 +21,12 @@
   public class ServiceFactory {
       private static FileProvider defaultEngineConfig =
                              new FileProvider(Constants.CLIENT_CONFIG_FILE);
  +    private static ThreadLocal threadDefaultConfig = new ThreadLocal();
  +
  +    public static void setThreadDefaultConfig(EngineConfiguration config)
  +    {
  +        threadDefaultConfig.set(config);
  +    }
   
       /**
        * Obtain an AxisClient reference, using JNDI if possible, otherwise
  @@ -41,6 +47,9 @@
   
           EngineConfiguration configProvider =
                   (EngineConfiguration)environment.get("engineConfig");
  +        if (configProvider == null)
  +            configProvider = (EngineConfiguration)threadDefaultConfig.get();
  +
           if (configProvider == null)
               configProvider = defaultEngineConfig;
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.14.2.4  +103 -38   xml-axis/java/src/org/apache/axis/configuration/FileProvider.java
  
  Index: FileProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/FileProvider.java,v
  retrieving revision 1.14.2.3
  retrieving revision 1.14.2.4
  diff -u -r1.14.2.3 -r1.14.2.4
  --- FileProvider.java	25 Jan 2002 14:55:47 -0000	1.14.2.3
  +++ FileProvider.java	28 Jan 2002 06:42:59 -0000	1.14.2.4
  @@ -53,23 +53,26 @@
    * <http://www.apache.org/>.
    */
   
  - package org.apache.axis.configuration;
  +package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.deployment.BasicEngineConfiguration;
   import org.apache.axis.ConfigurationException;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.Handler;
  +import org.apache.axis.deployment.wsdd.WSDDDeployment;
   import org.apache.axis.deployment.wsdd.WSDDDocument;
  -import org.apache.axis.deployment.DeploymentRegistry;
  +import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration;
  +import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.utils.Admin;
   import org.apache.axis.utils.XMLUtils;
   import org.w3c.dom.Document;
   
  -import java.io.File;
  +import javax.xml.rpc.namespace.QName;
   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   import java.io.InputStream;
   import java.io.StringWriter;
  -import java.util.Properties;
  +import java.util.Hashtable;
   
   /**
    * A simple ConfigurationProvider that uses the Admin class to read +
  @@ -77,27 +80,25 @@
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class FileProvider extends BasicEngineConfiguration
  -{
  +public class FileProvider implements EngineConfiguration {
       protected String sep = System.getProperty("file.separator");
   
  +    protected WSDDDeployment deployment = null;
  +
       String basepath = ".";
       String filename;
  -    
  +
       InputStream myInputStream = null;
  -    
  +
       // Should we search the classpath for the file if we don't find it in
       // the specified location?
       boolean searchClasspath = true;
   
  -    private DeploymentRegistry deploymentRegistry;
  -
       /**
        * Constructor which accesses a file in the current directory of the
        * engine.
        */
  -    public FileProvider(String filename)
  -    {
  +    public FileProvider(String filename) {
           this.filename = filename;
       }
   
  @@ -105,54 +106,59 @@
        * Constructor which accesses a file relative to a specific base
        * path.
        */
  -    public FileProvider(String basepath, String filename)
  -    {
  +    public FileProvider(String basepath, String filename) {
           this.basepath = basepath;
           this.filename = filename;
       }
  -    
  +
       /**
        * Constructor which takes an input stream directly.
        * Note: The configuration will be read-only in this case!
  -     */ 
  -    public FileProvider(InputStream is)
  -    {
  +     */
  +    public FileProvider(InputStream is) {
           myInputStream = is;
       }
  -    
  +
  +    public WSDDDeployment getDeployment() {
  +        return deployment;
  +    }
  +
  +    public void setDeployment(WSDDDeployment deployment) {
  +        this.deployment = deployment;
  +    }
  +
       /**
  -     * Determine whether or not we will look for a "server-config.wsdd" file
  +     * Determine whether or not we will look for a "*-config.wsdd" file
        * on the classpath if we don't find it in the specified location.
  -     * 
  +     *
        * @param searchClasspath true if we should search the classpath
  -     */ 
  -    public void setSearchClasspath(boolean searchClasspath)
  -    {
  +     */
  +    public void setSearchClasspath(boolean searchClasspath) {
           this.searchClasspath = searchClasspath;
       }
   
  -     public void configureEngine(AxisEngine engine) throws ConfigurationException
  -    {
  +    public void configureEngine(AxisEngine engine) throws ConfigurationException {
           try {
               if (myInputStream == null) {
                   try {
                       myInputStream = new FileInputStream(basepath + sep + filename);
                   } catch (Exception e) {
                       if (searchClasspath) {
  -                        myInputStream = engine.
  -                            getClass().getResourceAsStream(filename);
  +                        myInputStream = engine.getClass().getResourceAsStream(filename);
                       }
                   }
               }
  -            
  +
               if (myInputStream == null) {
                   throw new ConfigurationException("No engine configuration file - aborting!");
               }
  -            
  +
               WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(myInputStream));
  -            engine.getDeploymentRegistry().deploy(doc);
  +            deployment = doc.getDeployment();
  +
  +            deployment.configureEngine(engine);
               engine.refreshGlobalOptions();
  -            
  +
               myInputStream = null;
           } catch (Exception e) {
               throw new ConfigurationException(e);
  @@ -163,14 +169,13 @@
        * Save the engine configuration.  In case there's a problem, we
        * write it to a string before saving it out to the actual file so
        * we don't screw up the file.
  -     */ 
  -    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException
  -    {
  +     */
  +    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException {
           try {
               // If there's no filename then we must have created this with just
               // an InputStream - in which case the config stuff is read-only
  -            if ( filename == null ) return ;
  -            
  +            if (filename == null) return;
  +
               Document doc = Admin.listConfig(engine);
               StringWriter writer = new StringWriter();
               XMLUtils.DocumentToWriter(doc, writer);
  @@ -182,4 +187,64 @@
               throw new ConfigurationException(e);
           }
       }
  +
  +    /**
  +     * retrieve an instance of the named handler
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getHandler(QName qname) throws ConfigurationException {
  +        return deployment.getHandler(qname);
  +    }
  +
  +    /**
  +     * retrieve an instance of the named service
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getService(QName qname) throws ConfigurationException {
  +        return deployment.getService(qname);
  +    }
  +
  +    /**
  +     * retrieve an instance of the named transport
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getTransport(QName qname) throws ConfigurationException {
  +        return deployment.getTransport(qname);
  +    }
  +
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return deployment.getTypeMappingRegistry();
  +    }
  +
  +    /**
  +     * Returns a global request handler.
  +     */
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        return deployment.getGlobalRequest();
  +    }
  +
  +    /**
  +     * Returns a global response handler.
  +     */
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        return deployment.getGlobalResponse();
  +    }
  +
  +    /**
  +     * Returns the global configuration options.
  +     */
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        WSDDGlobalConfiguration globalConfig = deployment.getGlobalConfiguration();
  +        if (globalConfig != null)
  +            return globalConfig.getParametersTable();
  +
  +        return null;
  +    }
  +
   }
  
  
  
  1.1.4.4   +40 -2     xml-axis/java/src/org/apache/axis/configuration/NullProvider.java
  
  Index: NullProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/NullProvider.java,v
  retrieving revision 1.1.4.3
  retrieving revision 1.1.4.4
  diff -u -r1.1.4.3 -r1.1.4.4
  --- NullProvider.java	25 Jan 2002 14:55:47 -0000	1.1.4.3
  +++ NullProvider.java	28 Jan 2002 06:42:59 -0000	1.1.4.4
  @@ -56,15 +56,21 @@
   package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.deployment.BasicEngineConfiguration;
   import org.apache.axis.ConfigurationException;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.Handler;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.encoding.TypeMappingRegistry;
  +
  +import javax.xml.rpc.namespace.QName;
  +import java.util.Hashtable;
   
   /**
    * A do-nothing ConfigurationProvider
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class NullProvider extends BasicEngineConfiguration
  +public class NullProvider implements EngineConfiguration
   {
       public void configureEngine(AxisEngine engine) throws ConfigurationException
       {
  @@ -72,5 +78,37 @@
   
       public void writeEngineConfig(AxisEngine engine) throws ConfigurationException
       {
  +    }
  +
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getTransport(QName qname) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getService(QName qname) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getHandler(QName qname) throws ConfigurationException {
  +        return null;
       }
   }
  
  
  
  1.4.4.4   +9 -16     xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java
  
  Index: XMLStringProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java,v
  retrieving revision 1.4.4.3
  retrieving revision 1.4.4.4
  diff -u -r1.4.4.3 -r1.4.4.4
  --- XMLStringProvider.java	25 Jan 2002 14:55:47 -0000	1.4.4.3
  +++ XMLStringProvider.java	28 Jan 2002 06:42:59 -0000	1.4.4.4
  @@ -56,7 +56,6 @@
    package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.deployment.BasicEngineConfiguration;
   import org.apache.axis.ConfigurationException;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.utils.Admin;
  @@ -65,6 +64,7 @@
   import org.xml.sax.InputSource;
   
   import java.io.StringReader;
  +import java.io.ByteArrayInputStream;
   
   /**
    * A simple ConfigurationProvider that uses the Admin class to
  @@ -74,7 +74,7 @@
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class XMLStringProvider extends BasicEngineConfiguration
  +public class XMLStringProvider extends FileProvider
   {
       String xmlConfiguration;
   
  @@ -86,24 +86,17 @@
        */
       public XMLStringProvider(String xmlConfiguration)
       {
  +        super(new ByteArrayInputStream(xmlConfiguration.getBytes()));
           this.xmlConfiguration = xmlConfiguration;
       }
   
  -    public void configureEngine(AxisEngine engine) throws ConfigurationException
  -    {
  -        try {
  -            InputSource is = new InputSource(new StringReader(xmlConfiguration));
  -            
  -            Document doc = XMLUtils.newDocument(is);
  -            
  -            Admin.processEngineConfig(doc, engine);
  -        } catch (Exception e) {
  -            throw new ConfigurationException(e);
  -        }
  +    public void writeEngineConfig(AxisEngine engine)
  +            throws ConfigurationException {
  +        // NOOP
       }
   
  -    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException
  -    {
  -        // NOOP
  +    public void configureEngine(AxisEngine engine) throws ConfigurationException {
  +        myInputStream = new ByteArrayInputStream(xmlConfiguration.getBytes());
  +        super.configureEngine(engine);
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +238 -0    xml-axis/java/src/org/apache/axis/configuration/Attic/SimpleProvider.java
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.13.4.1  +2 -4      xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java
  
  Index: DeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java,v
  retrieving revision 1.13
  retrieving revision 1.13.4.1
  diff -u -r1.13 -r1.13.4.1
  --- DeployableItem.java	14 Nov 2001 17:26:18 -0000	1.13
  +++ DeployableItem.java	28 Jan 2002 06:42:59 -0000	1.13.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   
   import javax.xml.rpc.namespace.QName;
   
  @@ -80,9 +81,6 @@
        * @return a Handler which is assumedly the correct type
        * @throws Exception (!!! probably should be more specific)
        */
  -    public Handler getInstance(DeploymentRegistry registry)
  +    public Handler getInstance(EngineConfiguration registry)
           throws Exception;
  -    
  -    public void deployToRegistry(DeploymentRegistry registry)
  -        throws DeploymentException;
   }
  
  
  
  1.19.2.4  +14 -8     xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java
  
  Index: DeploymentRegistry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java,v
  retrieving revision 1.19.2.3
  retrieving revision 1.19.2.4
  diff -u -r1.19.2.3 -r1.19.2.4
  --- DeploymentRegistry.java	25 Jan 2002 14:55:48 -0000	1.19.2.3
  +++ DeploymentRegistry.java	28 Jan 2002 06:42:59 -0000	1.19.2.4
  @@ -59,6 +59,7 @@
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration;
   import org.apache.axis.deployment.wsdd.WSDDDocument;
  +import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.encoding.SerializationContext;
   import org.w3c.dom.Document;
  @@ -85,9 +86,6 @@
   public abstract class DeploymentRegistry
       implements Serializable
   {
  -    public abstract DeploymentDocument getConfigDocument()
  -        throws DeploymentException;
  -    
       /**
        * retrieve an instance of the named handler
        * @param qname XXX
  @@ -143,12 +141,20 @@
           throws DeploymentException;
   
       /**
  -     * retrieve an instance of the named mapping registry
  +     * retrieve an instance of the named type mapping registry
  +     * @return TypeMappingRegistery
  +     */
  +    public abstract TypeMappingRegistry getTypeMappingRegistry();
  +
  +
  +
  +    /**
  +     * retrieve an instance of the named type mapping    
        * @param encodingStyle XXX
        * @return XXX
        * @throws DeploymentException XXX
        */
  -    public abstract TypeMappingRegistry getTypeMappingRegistry(
  +    public abstract TypeMapping getTypeMapping(
           String encodingStyle)
           throws DeploymentException;
   
  @@ -158,8 +164,8 @@
        * @param tmr XXX
        * @throws DeploymentException XXX
        */
  -    public abstract void addTypeMappingRegistry(String encodingStyle,
  -                                                TypeMappingRegistry tmr)
  +    public abstract void addTypeMapping(String encodingStyle,
  +                                        TypeMapping tm)
           throws DeploymentException;
   
       /**
  @@ -167,7 +173,7 @@
        * @param encodingStyle XXX
        * @throws DeploymentException XXX
        */
  -    public abstract void removeTypeMappingRegistry(String encodingStyle)
  +    public abstract void removeTypeMapping(String encodingStyle)
           throws DeploymentException;
   
       /**
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.16.2.1  +2 -1      xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java
  
  Index: V2DDDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- V2DDDeployableItem.java	3 Jan 2002 18:08:28 -0000	1.16
  +++ V2DDDeployableItem.java	28 Jan 2002 06:42:59 -0000	1.16.2.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.v2dd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  @@ -91,7 +92,7 @@
           return qname;
       }
   
  -    public Handler getInstance(DeploymentRegistry registry) {
  +    public Handler getInstance(EngineConfiguration registry) {
           
           // we would create an instance of the SOAP v2.x
           // compatible handler here using the service
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +17 -2     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java
  
  Index: WSDDBeanMapping.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- WSDDBeanMapping.java	20 Dec 2001 19:51:31 -0000	1.2
  +++ WSDDBeanMapping.java	28 Jan 2002 06:42:59 -0000	1.2.2.1
  @@ -60,6 +60,7 @@
   import org.apache.axis.utils.XMLUtils;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.Constants;                      
   import org.xml.sax.helpers.AttributesImpl;
   
   import javax.xml.rpc.namespace.QName;
  @@ -93,14 +94,28 @@
       {
           super(e, true);
           
  -        serializer = "org.apache.axis.encoding.BeanSerializer";
  -        deserializer = "org.apache.axis.encoding.BeanSerializer$BeanDeserFactory";
  +        serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory";
  +        deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory";
  +        encodingStyle = Constants.URI_CURRENT_SOAP_ENC;
       }
   
       protected QName getElementName() {
           return WSDDConstants.BEANMAPPING_QNAME;
       }
   
  +    public void writeToContext(SerializationContext context) throws IOException {
  +        AttributesImpl attrs = new AttributesImpl();
  +
  +        String typeStr = context.qName2String(typeQName);
  +        attrs.addAttribute("", "languageSpecificType",
  +                           "languageSpecificType", "CDATA", typeStr);
  +
  +        String qnameStr = context.qName2String(qname);
  +        attrs.addAttribute("", "qname", "qname", "CDATA", qnameStr);
  +
  +        context.startElement(WSDDConstants.BEANMAPPING_QNAME, attrs);
  +        context.endElement();
  +    }
   }
   
   
  
  
  
  1.20.2.1  +4 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java
  
  Index: WSDDChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- WSDDChain.java	6 Dec 2001 16:55:43 -0000	1.20
  +++ WSDDChain.java	28 Jan 2002 06:42:59 -0000	1.20.2.1
  @@ -56,6 +56,8 @@
   
   import org.apache.axis.Chain;
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -160,8 +162,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           Chain         c        = new org.apache.axis.SimpleChain();
           
  
  
  
  1.23.2.1  +23 -12    xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java
  
  Index: WSDDDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java,v
  retrieving revision 1.23
  retrieving revision 1.23.2.1
  diff -u -r1.23 -r1.23.2.1
  --- WSDDDeployableItem.java	16 Dec 2001 18:07:43 -0000	1.23
  +++ WSDDDeployableItem.java	28 Jan 2002 06:42:59 -0000	1.23.2.1
  @@ -55,6 +55,8 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -127,8 +129,6 @@
               qname = new QName("", name);
           }
           
  -        //!!! default namespace?
  -        
           String typeStr = e.getAttribute("type");
           if (typeStr != null && !typeStr.equals("")) {
               type = XMLUtils.getQNameFromString(typeStr, e);
  @@ -276,7 +276,7 @@
        */
       public void removeParameter(String name)
       {
  -        // !!! FILL IN
  +        parameters.remove(name);
       }
   
       /**
  @@ -285,8 +285,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public final Handler getInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public final Handler getInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           if (scope == SCOPE_SINGLETON) {
               synchronized (this) {
  @@ -307,15 +307,26 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    protected Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    protected Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
  -        Class   c = getJavaClass();
  +        Class   c = null;
           Handler h = null;
  -        
  +
  +        try {
  +            c = getJavaClass();
  +        } catch (ClassNotFoundException e) {
  +            throw new ConfigurationException(e);
  +        }
  +
           if (c != null) {
  -            h = (Handler)createInstance(c);
  -            
  +
  +            try {
  +                h = (Handler)createInstance(c);
  +            } catch (Exception e) {
  +                throw new ConfigurationException(e);
  +            }
  +
               if (h != null) {
                   if ( qname != null )
                     h.setName(qname.getLocalPart()); 
  @@ -335,7 +346,7 @@
        * @throws Exception XXX
        */
       Object createInstance(Class _class)
  -        throws Exception
  +        throws InstantiationException, IllegalAccessException
       {
           return _class.newInstance();
       }
  
  
  
  1.16.4.1  +202 -134  xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java
  
  Index: WSDDDeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- WSDDDeployment.java	3 Dec 2001 22:49:23 -0000	1.16
  +++ WSDDDeployment.java	28 Jan 2002 06:42:59 -0000	1.16.4.1
  @@ -57,14 +57,18 @@
   import org.w3c.dom.Document;
   import org.w3c.dom.Element;
   import org.w3c.dom.NodeList;
  -import org.apache.axis.Constants;
  +import org.apache.axis.*;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  +import org.apache.axis.encoding.ser.BaseSerializerFactory;
  +import org.apache.axis.encoding.ser.BaseDeserializerFactory;
   import org.apache.axis.encoding.*;
   
   import javax.xml.rpc.namespace.QName;
  -import java.util.Vector;
  +import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.Hashtable;
  +import java.util.Vector;
   import java.io.IOException;
   
   
  @@ -72,45 +76,92 @@
    * WSDD deployment element
    *
    * @author James Snell
  + * @author Glen Daniels (gdaniels@apache.org)
    */
   public class WSDDDeployment
       extends WSDDElement
  -    implements WSDDTypeMappingContainer
  +    implements WSDDTypeMappingContainer, EngineConfiguration
   {
  -    private Vector handlers = new Vector();
  -    private Vector services = new Vector();
  -    private Vector transports = new Vector();
  +    private HashMap handlers = new HashMap();
  +    private HashMap services = new HashMap();
  +    private HashMap transports = new HashMap();
       private Vector typeMappings = new Vector();
  -    private WSDDGlobalConfiguration globalConfig = null; 
  -    
  -    public void addHandler(WSDDHandler handler)
  +    private WSDDGlobalConfiguration globalConfig = null;
  +
  +    /**
  +     * Put a WSDDHandler into this deployment, replacing any other
  +     * WSDDHandler which might already be present with the same QName.
  +     *
  +     * @param handler a WSDDHandler to insert in this deployment
  +     */
  +    public void deployHandler(WSDDHandler handler)
       {
  -        handlers.add(handler);
  +        handlers.put(handler.getQName(), handler);
       }
  -    
  -    public void addTransport(WSDDTransport transport)
  +
  +    /**
  +     * Put a WSDDTransport into this deployment, replacing any other
  +     * WSDDTransport which might already be present with the same QName.
  +     *
  +     * @param transport a WSDDTransport to insert in this deployment
  +     */
  +    public void deployTransport(WSDDTransport transport)
  +    {
  +        transports.put(transport.getQName(), transport);
  +    }
  +
  +    /**
  +     * Put a WSDDHandler into this deployment, replacing any other
  +     * WSDDHandler which might already be present with the same QName.
  +     *
  +     * @param handler a WSDDHandler to insert in this deployment
  +     */
  +    public void deployService(WSDDService service)
  +    {
  +        services.put(service.getQName(), service);
  +    }
  +
  +    /**
  +     * Remove a named handler
  +     * @param qname the QName of the handler to remove
  +     */
  +    public void undeployHandler(QName qname)
  +    {
  +        handlers.remove(qname);
  +    }
  +
  +    /**
  +     * Remove a named service
  +     * @param qname the QName of the service to remove
  +     */
  +    public void undeployService(QName qname)
       {
  -        transports.add(transport);
  +        services.remove(qname);
       }
  -    
  -    public void addService(WSDDService service)
  +
  +    /**
  +     * Remove a named transport
  +     * @param qname the QName of the transport to remove
  +     */
  +    public void undeployTransport(QName qname)
       {
  -        services.add(service);
  +        transports.remove(qname);
       }
  -    
  -    public void addTypeMapping(WSDDTypeMapping typeMapping)
  +
  +    public void deployTypeMapping(WSDDTypeMapping typeMapping)
           throws WSDDException
       {
           typeMappings.add(typeMapping);
  +        deployMapping(typeMapping);
       }
   
       /**
        * Default constructor
  -     */ 
  +     */
       public WSDDDeployment()
       {
       }
  -    
  +
       /**
        * Create an element in WSDD that wraps an extant DOM element
        * @param e (Element) XXX
  @@ -120,43 +171,43 @@
           throws WSDDException
       {
           super(e);
  -        
  +
           Element [] elements = getChildElements(e, "handler");
           int i;
   
           for (i = 0; i < elements.length; i++) {
               WSDDHandler handler = new WSDDHandler(elements[i]);
  -            addHandler(handler);
  +            deployHandler(handler);
           }
   
           elements = getChildElements(e, "chain");
           for (i = 0; i < elements.length; i++) {
               WSDDChain chain = new WSDDChain(elements[i]);
  -            addHandler(chain);
  +            deployHandler(chain);
           }
  -        
  +
           elements = getChildElements(e, "transport");
           for (i = 0; i < elements.length; i++) {
               WSDDTransport transport = new WSDDTransport(elements[i]);
  -            addTransport(transport);
  +            deployTransport(transport);
           }
  -        
  +
           elements = getChildElements(e, "service");
           for (i = 0; i < elements.length; i++) {
               WSDDService service = new WSDDService(elements[i]);
  -            addService(service);
  +            deployService(service);
           }
  -        
  +
           elements = getChildElements(e, "typeMapping");
           for (i = 0; i < elements.length; i++) {
               WSDDTypeMapping mapping = new WSDDTypeMapping(elements[i]);
  -            addTypeMapping(mapping);
  +            deployTypeMapping(mapping);
           }
   
           elements = getChildElements(e, "beanMapping");
           for (i = 0; i < elements.length; i++) {
               WSDDBeanMapping mapping = new WSDDBeanMapping(elements[i]);
  -            addTypeMapping(mapping);
  +            deployTypeMapping(mapping);
           }
   
           Element el = getChildElement(e, "globalConfiguration");
  @@ -169,74 +220,91 @@
           return WSDDConstants.DEPLOY_QNAME;
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  +    public void deployToRegistry(WSDDDeployment target)
           throws DeploymentException
       {
  +
           WSDDGlobalConfiguration global = getGlobalConfiguration();
   
           if (global != null) {
  -            registry.setGlobalConfiguration(global);
  +            target.setGlobalConfiguration(global);
           }
   
  -        WSDDHandler[]     handlers   = getHandlers();
  -        WSDDTransport[]   transports = getTransports();
  -        WSDDService[]     services   = getServices();
  -        WSDDTypeMapping[] mappings   = getTypeMappings();
  -
  -        for (int n = 0; n < handlers.length; n++) {
  -            handlers[n].deployToRegistry(registry);
  +        Iterator i = handlers.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDHandler handler = (WSDDHandler) i.next();
  +            target.deployHandler(handler);
           }
   
  -        for (int n = 0; n < transports.length; n++) {
  -            transports[n].deployToRegistry(registry);
  +        i = transports.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDTransport transport = (WSDDTransport) i.next();
  +            target.deployTransport(transport);
           }
   
  -        for (int n = 0; n < services.length; n++) {
  -            services[n].deployToRegistry(registry);
  +        i = services.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDService service = (WSDDService) i.next();
  +            target.deployService(service);
           }
   
  -        for (int n = 0; n < mappings.length; n++) {
  -            WSDDTypeMapping     mapping = mappings[n];
  -            deployMappingToRegistry(mapping, registry);
  +        i = typeMappings.iterator();
  +        while (i.hasNext()) {
  +            WSDDTypeMapping mapping = (WSDDTypeMapping) i.next();
  +            target.deployTypeMapping(mapping);
           }
       }
   
  -    public static void deployMappingToRegistry(WSDDTypeMapping mapping,
  -                                               DeploymentRegistry registry)
  -            throws DeploymentException
  +    public void deployMapping(WSDDTypeMapping mapping)
  +            throws WSDDException
       {
  -        TypeMappingRegistry tmr     =
  -                registry.getTypeMappingRegistry(mapping.getEncodingStyle());
  -
  -        if (tmr == null) {
  -            tmr = new TypeMappingRegistry();
  -            tmr.setParent(SOAPTypeMappingRegistry.getSingleton());
  +        try {
  +            TypeMappingRegistry tmr = getTypeMappingRegistry();
   
  -            registry.addTypeMappingRegistry(mapping.getEncodingStyle(),
  -                                            tmr);
  -        }
  +            TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle());
  +            TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping();
  +            if (tm == null || tm == df) {
  +                tm = (TypeMapping) tmr.createTypeMapping();
  +                String namespace = mapping.getEncodingStyle();
  +                if (mapping.getEncodingStyle() == null) {
  +                    namespace = Constants.URI_CURRENT_SOAP_ENC;
  +                }
  +                tm.setSupportedEncodings(new String[] {namespace});
  +                tmr.register(tm, new String[] {namespace});
  +            }
   
  -        Serializer          ser   = null;
  -        DeserializerFactory deser = null;
  +            SerializerFactory   ser   = null;
  +            DeserializerFactory deser = null;
   
  -        try {
  -            ser   = (Serializer) mapping.getSerializer().newInstance();
  -            deser =
  -                (DeserializerFactory) mapping.getDeserializer()
  -                    .newInstance();
  -
  -            if (ser != null) {
  -                tmr.addSerializer(mapping.getLanguageSpecificType(),
  -                                  mapping.getQName(), ser);
  +            // Try to construct a serializerFactory by introspecting for the
  +            // following:
  +            // public static create(Class javaType, QName xmlType)
  +            // public <constructor>(Class javaType, QName xmlType)
  +            // public <constructor>()
  +            //
  +            // The BaseSerializerFactory createFactory() method is a utility
  +            // that does this for us.
  +            //System.out.println("start creating sf and df");
  +            if (mapping.getSerializerName() != null &&
  +                !mapping.getSerializerName().equals("")) {
  +                ser = BaseSerializerFactory.createFactory(mapping.getSerializer(),
  +                                                          mapping.getLanguageSpecificType(),
  +                                                          mapping.getQName());
               }
  +            //System.out.println("set ser factory");
   
  -            if (deser != null) {
  -                tmr.addDeserializerFactory(mapping.getQName(), mapping
  -                    .getLanguageSpecificType(), deser);
  +            if (mapping.getDeserializerName() != null &&
  +                !mapping.getDeserializerName().equals("")) {
  +                deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(),
  +                                                          mapping.getLanguageSpecificType(),
  +                                                          mapping.getQName());
               }
  +            //System.out.println("set dser factory");
  +            tm.register( mapping.getLanguageSpecificType(), mapping.getQName(), ser, deser);
  +            //System.out.println("registered");
           }
           catch (Exception e) {
  -            throw new DeploymentException(e);
  +            throw new WSDDException(e);
           }
       }
   
  @@ -247,29 +315,29 @@
           context.registerPrefixForURI("java", WSDDConstants.WSDD_JAVA);
           context.startElement(new QName(WSDDConstants.WSDD_NS, "deployment"),
                                null);
  -        
  +
           if (globalConfig != null) {
               globalConfig.writeToContext(context);
           }
  -        
  -        Iterator i = handlers.iterator();
  +
  +        Iterator i = handlers.values().iterator();
           while (i.hasNext()) {
               WSDDHandler handler = (WSDDHandler)i.next();
               handler.writeToContext(context);
           }
  -        
  -        i = services.iterator();
  +
  +        i = services.values().iterator();
           while (i.hasNext()) {
               WSDDService service = (WSDDService)i.next();
               service.writeToContext(context);
           }
  -        
  -        i = transports.iterator();
  +
  +        i = transports.values().iterator();
           while (i.hasNext()) {
               WSDDTransport transport = (WSDDTransport)i.next();
               transport.writeToContext(context);
           }
  -        
  +
           i = typeMappings.iterator();
           while (i.hasNext()) {
               WSDDTypeMapping mapping = (WSDDTypeMapping)i.next();
  @@ -277,10 +345,10 @@
           }
           context.endElement();
       }
  -    
  +
       /**
   	 * Get our global configuration
  -     * 
  +     *
        * @return XXX
        */
       public WSDDGlobalConfiguration getGlobalConfiguration()
  @@ -288,6 +356,10 @@
           return globalConfig;
       }
   
  +    public void setGlobalConfiguration(WSDDGlobalConfiguration globalConfig) {
  +        this.globalConfig = globalConfig;
  +    }
  +
       /**
        *
        * @return XXX
  @@ -301,13 +373,17 @@
   
       /**
        *
  +     * @param name XXX
        * @return XXX
        */
  -    public WSDDHandler[] getHandlers()
  +    public Handler getHandler(QName name) throws ConfigurationException
       {
  -        WSDDHandler[] h = new WSDDHandler[handlers.size()];
  -        handlers.toArray(h);
  -        return h;
  +        WSDDHandler h = (WSDDHandler)handlers.get(name);
  +        if (h != null) {
  +            return h.getInstance(this);
  +        }
  +
  +        return null;
       }
   
       /**
  @@ -315,15 +391,11 @@
        * @param name XXX
        * @return XXX
        */
  -    public WSDDHandler getHandler(QName name)
  +    public Handler getTransport(QName name) throws ConfigurationException
       {
  -
  -        WSDDHandler[] h = getHandlers();
  -
  -        for (int n = 0; n < h.length; n++) {
  -            if (h[n].getQName().equals(name)) {
  -                return h[n];
  -            }
  +        WSDDTransport t = (WSDDTransport)transports.get(name);
  +        if (t != null) {
  +            return t.getInstance(this);
           }
   
           return null;
  @@ -331,61 +403,57 @@
   
       /**
        *
  +     * @param name XXX
        * @return XXX
        */
  -    public WSDDTransport[] getTransports()
  +    public Handler getService(QName name) throws ConfigurationException
       {
  -        WSDDTransport[] t = new WSDDTransport[transports.size()];
  -        transports.toArray(t);
  -        return t;
  +        WSDDService s = (WSDDService)services.get(name);
  +        if (s != null) {
  +            return s.getInstance(this);
  +        }
  +
  +        return null;
       }
   
  -    /**
  -     *
  -     * @param name XXX
  -     * @return XXX
  -     */
  -    public WSDDTransport getTransport(QName name)
  -    {
  +    public void configureEngine(AxisEngine engine)
  +            throws ConfigurationException {
   
  -        WSDDTransport[] t = getTransports();
  +    }
   
  -        for (int n = 0; n < t.length; n++) {
  -            if (t[n].getQName().equals(name)) {
  -                return t[n];
  -            }
  -        }
  +    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException {
  +    }
   
  -        return null;
  +    TypeMappingRegistry tmr = new TypeMappingRegistryImpl();
  +    public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException {
  +        return (TypeMapping)tmr.getTypeMapping(encodingStyle);
       }
   
  -    /**
  -     *
  -     * @return XXX
  -     */
  -    public WSDDService[] getServices()
  -    {
  -        WSDDService[] s = new WSDDService[services.size()];
  -        services.toArray(s);
  -        return s;
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return tmr;
       }
   
  -    /**
  -     *
  -     * @param name XXX
  -     * @return XXX
  -     */
  -    public WSDDService getService(QName name)
  -    {
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        if (globalConfig != null) {
  +            WSDDRequestFlow reqFlow = globalConfig.getRequestFlow();
  +            if (reqFlow != null)
  +                return reqFlow.getInstance(this);
  +        }
   
  -        WSDDService[] s = getServices();
  +        return null;
  +    }
   
  -        for (int n = 0; n < s.length; n++) {
  -            if (s[n].getQName().equals(name)) {
  -                return s[n];
  -            }
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        if (globalConfig != null) {
  +            WSDDResponseFlow respFlow = globalConfig.getResponseFlow();
  +            if (respFlow != null)
  +                return respFlow.getInstance(this);
           }
   
           return null;
  +    }
  +
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        return globalConfig.getParametersTable();
       }
   }
  
  
  
  1.14.4.2  +5 -39     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java
  
  Index: WSDDDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java,v
  retrieving revision 1.14.4.1
  retrieving revision 1.14.4.2
  diff -u -r1.14.4.1 -r1.14.4.2
  --- WSDDDocument.java	25 Jan 2002 14:55:48 -0000	1.14.4.1
  +++ WSDDDocument.java	28 Jan 2002 06:42:59 -0000	1.14.4.2
  @@ -74,7 +74,6 @@
    * represents a WSDD Document (this is the top level object in this object model)
    */
   public class WSDDDocument
  -    implements DeploymentDocument
   {
       private Document doc;
   
  @@ -130,7 +129,7 @@
   
       public Document getDOMDocument() throws DeploymentException {
           StringWriter writer = new StringWriter();
  -        SerializationContext context = new SerializationContext(writer, null);
  +        SerializationContext context = new SerializationContextImpl(writer, null);
           context.setPretty(true);
           try {
               deployment.writeToContext(context);
  @@ -162,48 +161,15 @@
           deployment = null;
       }
   
  -    /**
  -     *
  -     */
  -    public void deploy(DeploymentRegistry registry)
  -        throws DeploymentException
  -    {
  +    public void deploy(WSDDDeployment registry) throws DeploymentException {
           if (deployment != null) {
               deployment.deployToRegistry(registry);
  -        } else {
  +        }
  +        if (undeployment != null) {
               undeployment.undeployFromRegistry(registry);
           }
       }
   
  -    /**
  -     * Undeploy the contents of this document from the given registry.
  -     */
  -    public void undeploy(DeploymentRegistry registry)
  -            throws DeploymentException {
  -
  -        if (deployment == null)
  -            throw new DeploymentException("No deployment");
  -
  -        WSDDHandler[]     handlers   = deployment.getHandlers();
  -        WSDDTransport[]   transports = deployment.getTransports();
  -        WSDDService[]     services   = deployment.getServices();
  -        WSDDTypeMapping[] mappings   = deployment.getTypeMappings();
  -        QName qname = null;
  -
  -        for (int n = 0; n < handlers.length; n++) {
  -            qname = handlers[n].getQName();
  -            if (qname != null)
  -                registry.undeployHandler(qname);
  -        }
  -        for (int n = 0; n < transports.length; n++) {
  -            qname = transports[n].getQName();
  -            if (qname != null)
  -                registry.undeployTransport(qname);
  -        }
  -        for (int n = 0; n < services.length; n++) {
  -            qname = services[n].getQName();
  -            if (qname != null)
  -                registry.undeployService(qname);
  -        }
  +    public void undeploy(DeploymentRegistry registry) throws DeploymentException {
       }
   }
  
  
  
  1.19.4.1  +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java
  
  Index: WSDDGlobalConfiguration.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java,v
  retrieving revision 1.19
  retrieving revision 1.19.4.1
  diff -u -r1.19 -r1.19.4.1
  --- WSDDGlobalConfiguration.java	14 Nov 2001 18:03:13 -0000	1.19
  +++ WSDDGlobalConfiguration.java	28 Jan 2002 06:42:59 -0000	1.19.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -192,7 +193,7 @@
        * @param registry XXX
        * @return XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  +    public Handler makeNewInstance(EngineConfiguration registry)
       {
           return null;
       }
  
  
  
  1.15.2.1  +3 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java
  
  Index: WSDDProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java,v
  retrieving revision 1.15
  retrieving revision 1.15.2.1
  diff -u -r1.15 -r1.15.2.1
  --- WSDDProvider.java	12 Dec 2001 18:57:11 -0000	1.15
  +++ WSDDProvider.java	28 Jan 2002 06:42:59 -0000	1.15.2.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.providers.WSDDBsfProvider;
  @@ -136,7 +137,7 @@
        */
       public static Handler getInstance(QName providerType,
                                  WSDDService service,
  -                               DeploymentRegistry registry)
  +                               EngineConfiguration registry)
           throws Exception
       {
           if (providerType == null)
  @@ -158,6 +159,6 @@
        * @throws Exception XXX
        */
       public abstract Handler newProviderInstance(WSDDService service,
  -                                                DeploymentRegistry registry)
  +                                                EngineConfiguration registry)
           throws Exception;
   }
  
  
  
  1.30.2.1  +57 -39    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.30
  retrieving revision 1.30.2.1
  diff -u -r1.30 -r1.30.2.1
  --- WSDDService.java	3 Jan 2002 18:08:28 -0000	1.30
  +++ WSDDService.java	28 Jan 2002 06:42:59 -0000	1.30.2.1
  @@ -54,13 +54,13 @@
    */
   package org.apache.axis.deployment.wsdd;
   
  -import org.apache.axis.Handler;
  -import org.apache.axis.TargetedChain;
  -import org.apache.axis.FaultableHandler;
   import org.apache.axis.utils.XMLUtils;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.handlers.soap.SOAPService;
  +import org.apache.axis.encoding.ser.BaseSerializerFactory;
  +import org.apache.axis.encoding.ser.BaseDeserializerFactory;
   import org.apache.axis.encoding.*;
  +import org.apache.axis.*;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
   import org.w3c.dom.Document;
  @@ -115,13 +115,13 @@
           Element [] typeMappings = getChildElements(e, "typeMapping");
           for (int i = 0; i < typeMappings.length; i++) {
               WSDDTypeMapping typeMapping = new WSDDTypeMapping(typeMappings[i]);
  -            addTypeMapping(typeMapping);
  +            deployTypeMapping(typeMapping);
           }
   
           Element [] beanMappings = getChildElements(e, "beanMapping");
           for (int i = 0; i < beanMappings.length; i++) {
               WSDDBeanMapping beanMapping = new WSDDBeanMapping(beanMappings[i]);
  -            addTypeMapping(beanMapping);
  +            deployTypeMapping(beanMapping);
           }
   
           String typeStr = e.getAttribute("provider");
  @@ -198,8 +198,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           if (cachedService != null) {
               return cachedService;
  @@ -215,9 +215,13 @@
           Handler providerHandler = null;
   
           if (providerQName != null) {
  -            providerHandler = WSDDProvider.getInstance(providerQName,
  -                                                       this,
  -                                                       registry);
  +            try {
  +                providerHandler = WSDDProvider.getInstance(providerQName,
  +                                                           this,
  +                                                           registry);
  +            } catch (Exception e) {
  +                throw new ConfigurationException(e);
  +            }
               if (providerHandler == null)
                   throw new WSDDException(
                             JavaUtils.getMessage("couldntConstructProvider00"));
  @@ -237,12 +241,7 @@
               service.setName(getQName().getLocalPart());
           service.setOptions(getParametersTable());
   
  -        if (tmr == null) {
  -            tmr = new TypeMappingRegistry();
  -        }
  -
           service.setTypeMappingRegistry(tmr);
  -        tmr.setParent(registry.getTypeMappingRegistry(""));
   
           WSDDFaultFlow [] faultFlows = getFaultFlows();
           if (faultFlows != null && faultFlows.length > 0) {
  @@ -259,38 +258,55 @@
           return service;
       }
       
  -    public void addTypeMapping(WSDDTypeMapping mapping)
  +    public void deployTypeMapping(WSDDTypeMapping mapping)
           throws WSDDException
       {
  -        if (tmr == null)
  -            tmr = new TypeMappingRegistry();
  +        if (tmr == null) {
  +            tmr = new TypeMappingRegistryImpl();
  +        }
   
           try {
  -            Serializer          ser   = null;
  +            TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle());
  +            TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping();
  +            if (tm == null || tm == df) {
  +                tm = (TypeMapping) tmr.createTypeMapping();
  +                String namespace = mapping.getEncodingStyle();
  +                if (mapping.getEncodingStyle() == null) {
  +                    namespace = Constants.URI_CURRENT_SOAP_ENC;
  +                }
  +                tm.setSupportedEncodings(new String[] {namespace});
  +                tmr.register(tm, new String[] {namespace});
  +            }
  +            
  +            SerializerFactory   ser   = null;
               DeserializerFactory deser = null;
  -        
  -            ser   = (Serializer) mapping.getSerializer().newInstance();
  -            deser =
  -                    (DeserializerFactory) mapping.getDeserializer()
  -                    .newInstance();
  -        
  -            if (ser != null) {
  -                tmr.addSerializer(mapping.getLanguageSpecificType(),
  -                                  mapping.getQName(), ser);
  +            
  +            // Try to construct a serializerFactory by introspecting for the
  +            // following:
  +            // public static create(Class javaType, QName xmlType)
  +            // public <constructor>(Class javaType, QName xmlType)
  +            // public <constructor>()
  +            // 
  +            // The BaseSerializerFactory createFactory() method is a utility 
  +            // that does this for us.
  +            if (mapping.getSerializerName() != null &&
  +                !mapping.getSerializerName().equals("")) {
  +                ser = BaseSerializerFactory.createFactory(mapping.getSerializer(), 
  +                                                          mapping.getLanguageSpecificType(),
  +                                                          mapping.getQName());
               }
  -        
  -            if (deser != null) {
  -                tmr.addDeserializerFactory(mapping.getQName(), mapping
  -                                                               .getLanguageSpecificType(), deser);
  +            
  +            if (mapping.getDeserializerName() != null &&
  +                !mapping.getDeserializerName().equals("")) {
  +                deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(), 
  +                                                          mapping.getLanguageSpecificType(),
  +                                                          mapping.getQName());
               }
  -        } catch (IntrospectionException e) {
  -            throw new WSDDException(e);
  -        } catch (InstantiationException e) {
  -            throw new WSDDException(e);
  -        } catch (IllegalAccessException e) {
  -            throw new WSDDException(e);
  +            tm.register( mapping.getLanguageSpecificType(), mapping.getQName(), ser, deser);
           } catch (ClassNotFoundException e) {
               throw new WSDDException(e);
  +        } catch (Exception e) {
  +            throw new WSDDException(e);
           }
       }
   
  @@ -315,7 +331,9 @@
           writeParamsToContext(context);
   
           if (tmr != null) {
  -            tmr.dumpToSerializationContext(context);
  +            // RJS_TEMP
  +            // Need to provide a writeTypeMappingsToContext
  +            //tmr.dumpToSerializationContext(context);
           }
   
           context.endElement();
  
  
  
  1.4.2.1   +13 -3     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java
  
  Index: WSDDTargetedChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- WSDDTargetedChain.java	3 Jan 2002 18:08:28 -0000	1.4
  +++ WSDDTargetedChain.java	28 Jan 2002 06:42:59 -0000	1.4.2.1
  @@ -56,6 +56,8 @@
   
   import org.apache.axis.Handler;
   import org.apache.axis.TargetedChain;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.utils.XMLUtils;
   import org.apache.axis.transport.http.HTTPSender;
  @@ -182,8 +184,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           Handler reqHandler = null;
   
  @@ -194,7 +196,15 @@
           Handler pivot = null;
           if (pivotQName != null) {
               if (WSDDConstants.WSDD_JAVA.equals(pivotQName.getNamespaceURI())) {
  -                pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance();
  +                try {
  +                    pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance();
  +                } catch (InstantiationException e) {
  +                    throw new ConfigurationException(e);
  +                } catch (IllegalAccessException e) {
  +                    throw new ConfigurationException(e);
  +                } catch (ClassNotFoundException e) {
  +                    throw new ConfigurationException(e);
  +                }
               } else {
                   pivot = registry.getHandler(pivotQName);
               }
  
  
  
  1.16.4.1  +17 -0     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java
  
  Index: WSDDTypeMapping.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- WSDDTypeMapping.java	25 Nov 2001 23:49:33 -0000	1.16
  +++ WSDDTypeMapping.java	28 Jan 2002 06:42:59 -0000	1.16.4.1
  @@ -242,6 +242,14 @@
   
       /**
        *
  +     * @return serializer factory name
  +     */
  +    public String getSerializerName()
  +    {
  +        return serializer;
  +    }
  +    /**
  +     *
        * @param ser XXX
        */
       public void setSerializer(Class ser)
  @@ -258,6 +266,15 @@
           throws ClassNotFoundException
       {
           return Class.forName(deserializer);
  +    }
  +
  +    /**
  +     *
  +     * @return deserializer factory name
  +     */
  +    public String getDeserializerName()
  +    {
  +        return deserializer;
       }
   
       /**
  
  
  
  1.2.4.1   +1 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java
  
  Index: WSDDTypeMappingContainer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java,v
  retrieving revision 1.2
  retrieving revision 1.2.4.1
  diff -u -r1.2 -r1.2.4.1
  --- WSDDTypeMappingContainer.java	7 Nov 2001 21:04:20 -0000	1.2
  +++ WSDDTypeMappingContainer.java	28 Jan 2002 06:42:59 -0000	1.2.4.1
  @@ -62,6 +62,6 @@
    * @author Glen Daniels (gdaniels@macromedia.com)
    */ 
   public interface WSDDTypeMappingContainer {
  -    public void addTypeMapping(WSDDTypeMapping mapping)
  +    public void deployTypeMapping(WSDDTypeMapping mapping)
              throws WSDDException;
   }
  
  
  
  1.1.4.1   +5 -3      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java
  
  Index: WSDDUndeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- WSDDUndeployment.java	3 Dec 2001 03:31:31 -0000	1.1
  +++ WSDDUndeployment.java	28 Jan 2002 06:42:59 -0000	1.1.4.1
  @@ -106,7 +106,7 @@
           services.add(service);
       }
       
  -    public void addTypeMapping(WSDDTypeMapping typeMapping)
  +    public void deployTypeMapping(WSDDTypeMapping typeMapping)
           throws WSDDException
       {
           typeMappings.add(typeMapping);
  @@ -182,7 +182,7 @@
           return WSDDConstants.UNDEPLOY_QNAME;
       }
   
  -    public void undeployFromRegistry(DeploymentRegistry registry)
  +    public void undeployFromRegistry(WSDDDeployment registry)
           throws DeploymentException
       {
           QName qname;
  @@ -215,7 +215,9 @@
           AttributesImpl attrs = new org.xml.sax.helpers.AttributesImpl();
           attrs.addAttribute("", "name", "name", "CDATA",
                              context.qName2String(qname));
  -        context.writeElement(elementQName, attrs);
  +         
  +        context.startElement(elementQName, attrs);
  +        context.endElement();
       }
   
       public void writeToContext(SerializationContext context)
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.16.4.1  +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java
  
  Index: WSDDBsfProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- WSDDBsfProvider.java	9 Nov 2001 23:13:01 -0000	1.16
  +++ WSDDBsfProvider.java	28 Jan 2002 06:43:00 -0000	1.16.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDConstants;
  @@ -80,7 +81,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           Handler provider = new org.apache.axis.providers.BSFProvider();
  
  
  
  1.16.4.1  +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java
  
  Index: WSDDComProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- WSDDComProvider.java	9 Nov 2001 23:13:01 -0000	1.16
  +++ WSDDComProvider.java	28 Jan 2002 06:43:00 -0000	1.16.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           Class _class = Class.forName("org.apache.axis.handlers.providers.ComProvider");
  
  
  
  1.3.4.1   +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java
  
  Index: WSDDHandlerProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java,v
  retrieving revision 1.3
  retrieving revision 1.3.4.1
  diff -u -r1.3 -r1.3.4.1
  --- WSDDHandlerProvider.java	13 Nov 2001 14:56:05 -0000	1.3
  +++ WSDDHandlerProvider.java	28 Jan 2002 06:43:00 -0000	1.3.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.deployment.DeploymentException;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -72,7 +73,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           String providerClass = service.getParameter("handlerClass");
  
  
  
  1.1.4.1   +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java
  
  Index: WSDDJavaEJBProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- WSDDJavaEJBProvider.java	13 Nov 2001 21:08:32 -0000	1.1
  +++ WSDDJavaEJBProvider.java	28 Jan 2002 06:43:00 -0000	1.1.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -72,7 +73,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.EJBProvider();
  
  
  
  1.1.4.1   +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java
  
  Index: WSDDJavaMsgProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- WSDDJavaMsgProvider.java	7 Nov 2001 21:04:21 -0000	1.1
  +++ WSDDJavaMsgProvider.java	28 Jan 2002 06:43:00 -0000	1.1.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.MsgProvider();
  
  
  
  1.1.4.1   +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java
  
  Index: WSDDJavaRPCProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- WSDDJavaRPCProvider.java	7 Nov 2001 21:04:21 -0000	1.1
  +++ WSDDJavaRPCProvider.java	28 Jan 2002 06:43:00 -0000	1.1.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.RPCProvider();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.4.1   +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java
  
  Index: WSMLDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java,v
  retrieving revision 1.8
  retrieving revision 1.8.4.1
  diff -u -r1.8 -r1.8.4.1
  --- WSMLDeployableItem.java	14 Nov 2001 17:26:18 -0000	1.8
  +++ WSMLDeployableItem.java	28 Jan 2002 06:43:00 -0000	1.8.4.1
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsml;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  @@ -67,7 +68,7 @@
           return null;
       }
   
  -    public Handler getInstance(org.apache.axis.deployment.DeploymentRegistry registry) {
  +    public Handler getInstance(EngineConfiguration registry) {
           return null;
       }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.43.2.1  +183 -599  xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java
  
  Index: DeserializationContext.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java,v
  retrieving revision 1.43
  retrieving revision 1.43.2.1
  diff -u -r1.43 -r1.43.2.1
  --- DeserializationContext.java	18 Dec 2001 21:28:21 -0000	1.43
  +++ DeserializationContext.java	28 Jan 2002 06:43:00 -0000	1.43.2.1
  @@ -1,10 +1,8 @@
  -package org.apache.axis.encoding;
  -
   /*
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2001 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -12,7 +10,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    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
  @@ -20,7 +18,7 @@
    *    distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  + *    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,
  @@ -28,7 +26,7 @@
    *
    * 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 
  + *    software without prior written permission. For written
    *    permission, please contact apache@apache.org.
    *
    * 5. Products derived from this software may not be called "Apache",
  @@ -55,28 +53,27 @@
    * <http://www.apache.org/>.
    */
   
  -import org.apache.axis.attachments.Attachments; 
  -import org.apache.axis.Constants;
  -import org.apache.axis.MessageContext;
  +
  +package org.apache.axis.encoding;
  +
  +import java.io.IOException;
  +import java.io.Writer;
  +
   import org.apache.axis.Message;
  -import org.apache.axis.message.EnvelopeBuilder;
  -import org.apache.axis.message.EnvelopeHandler;
  -import org.apache.axis.message.HandlerFactory;
  +import org.apache.axis.MessageContext;
  +
  +
   import org.apache.axis.message.IDResolver;
   import org.apache.axis.message.MessageElement;
   import org.apache.axis.message.SAX2EventRecorder;
  -import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHandler;
   import org.apache.axis.utils.NSStack;
  -import org.apache.axis.utils.JavaUtils;
  -import org.apache.axis.utils.XMLUtils;
  -import org.apache.log4j.Category;
  +import org.apache.axis.message.SOAPEnvelope;
  +
  +import org.w3c.dom.Element;
  +
   import org.xml.sax.Attributes;
  -import org.xml.sax.InputSource;
  -import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
  -import org.xml.sax.helpers.DefaultHandler;
  -import org.apache.axis.AxisFault;
   
   import javax.xml.parsers.SAXParser;
   import javax.xml.rpc.namespace.QName;
  @@ -85,605 +82,192 @@
   import java.util.HashMap;
   import java.util.Stack;
   
  -/** 
  - * @author Glen Daniels (gdaniels@macromedia.com)
  +/**
  + * This interface describes the AXIS DeserializationContext, note that
  + * an AXIS compliant DeserializationContext must extend the org.xml.sax.helpers.DefaultHandler.
    */
   
  -public class DeserializationContext extends DefaultHandler
  -{
  -    static Category category =
  -            Category.getInstance(DeserializationContext.class.getName());
  -    
  -    static class LocalIDResolver implements IDResolver
  -    {
  -        HashMap idMap = null;
  -
  -        /**
  -         * Add object associated with id
  -         */
  -        public void addReferencedObject(String id, Object referent)
  -        {
  -            if (idMap == null)
  -                idMap = new HashMap();
  -            
  -            idMap.put(id, referent);
  -        }
  -        
  -        /**
  -         * Get object regferenced by href
  -         */
  -        public Object getReferencedObject(String href)
  -        {
  -            if ((idMap == null) || (href == null))
  -                return null;
  -            return idMap.get(href);
  -        }
  -    }
  -    
  -    private NSStack namespaces = new NSStack();
  -    
  -    private Locator locator;
  -                                             
  -    Stack handlerStack = new Stack();
  -    
  -    SAX2EventRecorder recorder = new SAX2EventRecorder();
  -    public SOAPEnvelope envelope;
  -    
  -    /** A map of IDs -> IDResolvers
  +public interface DeserializationContext extends javax.xml.rpc.encoding.DeserializationContext {
  +
  +    /**
  +     * Create a parser and parse the inputSource
        */
  -    HashMap idMap;
  -    LocalIDResolver localIDs;
  -    
  -    HashMap fixups;
  -    
  -    static final SOAPHandler nullHandler = new SOAPHandler();
  -    
  -    protected MessageContext msgContext;
  -    
  -    protected HandlerFactory initialFactory;
  -    
  -    public boolean doneParsing = false;
  -    protected InputSource inputSource = null;
  -        
  -    public DeserializationContext(MessageContext ctx, EnvelopeBuilder initialHandler)
  -    {
  -        msgContext = ctx;
  -        
  -        envelope = initialHandler.getEnvelope();
  -        envelope.setRecorder(recorder);
  -        
  -        pushElementHandler(new EnvelopeHandler(initialHandler));
  -    }
  -    
  -    MessageElement curElement;
  +    public void parse() throws SAXException;
   
  -    public MessageElement getCurElement() {
  -        return curElement;
  -    }
  -
  -    public void setCurElement(MessageElement el)
  -    {
  -        curElement = el;
  -    }
  -    
  -    public DeserializationContext(InputSource is, MessageContext ctx, 
  -                                  String messageType)
  -    {
  -        EnvelopeBuilder builder = new EnvelopeBuilder(messageType);
  -        
  -        msgContext = ctx;
  -        
  -        envelope = builder.getEnvelope();
  -        envelope.setRecorder(recorder);
  -        
  -        pushElementHandler(new EnvelopeHandler(builder));
  +    /**
  +     * Get current MessageElement
  +     **/
  +    public MessageElement getCurElement();
   
  -        inputSource = is;
  -    }
  -    
  -    public DeserializationContext(InputSource is, MessageContext ctx, 
  -                                  String messageType, SOAPEnvelope env)
  -    {
  -        EnvelopeBuilder builder = new EnvelopeBuilder(env, messageType);
  -        
  -        msgContext = ctx;
  -        
  -        envelope = builder.getEnvelope();
  -        envelope.setRecorder(recorder);
  -        
  -        pushElementHandler(new EnvelopeHandler(builder));
  +    /**
  +     * Set current MessageElement
  +     **/
  +    public void setCurElement(MessageElement el);
   
  -        inputSource = is;
  -    }
  -    
  -    public void parse() throws SAXException
  -    {
  -        if (inputSource != null) {
  -            SAXParser parser = XMLUtils.getSAXParser();
  -            try {
  -                parser.parse(inputSource, this);
  -
  -                // only release the parser for reuse if there wasn't an
  -                // error.  While parsers should be reusable, don't trust
  -                // parsers that died to clean up appropriately.
  -                XMLUtils.releaseSAXParser(parser);
  -            } catch (IOException e) {
  -                throw new SAXException(e);
  -            }
  -            inputSource = null;
  -        }
  -    }
  -    
  -    public MessageContext getMessageContext()
  -    {
  -        return msgContext;
  -    }
  -    
  -    public SOAPEnvelope getEnvelope()
  -    {
  -        return envelope;
  -    }
  -    
  -    public SAX2EventRecorder getRecorder()
  -    {
  -        return recorder;
  -    }
  +    /**
  +     * Get MessageContext         
  +     */
  +    public MessageContext getMessageContext();
       
  -    public ArrayList getCurrentNSMappings()
  -    {
  -        return (ArrayList)namespaces.peek().clone();
  -    }
  +    /**
  +     * Get Envelope               
  +     */
  +    public SOAPEnvelope getEnvelope();
       
  -    /** Grab a namespace prefix
  +    /**
  +     * Get Event Recorder         
        */
  -    public String getNamespaceURI(String prefix)
  -    {
  -        if (curElement != null)
  -            return curElement.getNamespaceURI(prefix);
  +    public SAX2EventRecorder getRecorder();
   
  -        return namespaces.getNamespaceURI(prefix);
  -    }
  -    
  -    public QName getQNameFromString(String qNameStr)
  -    {
  -        if (qNameStr == null)
  -            return null;
  -        
  -        // 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));
  -        
  -        //System.out.println("namespace = " + nsURI);
  -        
  -        if (nsURI == null)
  -            return null;
  -        
  -        return new QName(nsURI, qNameStr.substring(i + 1));
  -    }
  +    /**
  +     * Set Event Recorder         
  +     */
  +    public void setRecorder(SAX2EventRecorder recorder);
  +
  +   /**
  +     * Get the Namespace Mappings
  +     **/
  +    public ArrayList getCurrentNSMappings();
       
  +    /** 
  +     * Get the Namespace for a particular prefix
  +     */
  +    public String getNamespaceURI(String prefix);
  +
  +    /**
  +     * Construct a QName from a string of the form <prefix>:<localName>
  +     * @param qNameStr is the prefixed name from the xml text
  +     * @return QName
  +     */
  +    public QName getQNameFromString(String qNameStr);
  +
  +    /** 
  +     * Create a QName for the type of the element defined by localName and
  +     * namespace with the specified attributes.
  +     * @param namespace of the element
  +     * @param localName is the local name of the element
  +     * @param attrs are the attributes on the element
  +     */
       public QName getTypeFromAttributes(String namespace, String localName,
  -                                       Attributes attrs)
  -    {
  -        QName typeQName = null;
  -        
  -        if (typeQName == null) {
  -            QName myQName = new QName(namespace, localName);
  -            if (myQName.equals(SOAPTypeMappingRegistry.SOAP_ARRAY)) {
  -                typeQName = SOAPTypeMappingRegistry.SOAP_ARRAY;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_STRING)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_STRING;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_BOOLEAN)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_BOOLEAN;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_DOUBLE)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_DOUBLE;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_FLOAT)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_FLOAT;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_INT)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_INT;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_LONG)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_LONG;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_SHORT)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_SHORT;
  -            } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_BYTE)) {
  -                typeQName = SOAPTypeMappingRegistry.XSD_BYTE;
  -            }
  -        }
  -
  -        if (typeQName != null)
  -            return typeQName;
  -        
  -        if (attrs == null)
  -            return null;
  -        
  -        // Check for type
  -        String type = null;
  -        for (int i=0; i<Constants.URIS_SCHEMA_XSI.length && type==null; i++)
  -            type = attrs.getValue(Constants.URIS_SCHEMA_XSI[i], "type");
  -        
  -        if (type == null)
  -            return null;
  +                                       Attributes attrs);
   
  -        return getQNameFromString(type);
  -    }
  -    
  -    public TypeMappingRegistry getTypeMappingRegistry()
  -    {
  -        return msgContext.getTypeMappingRegistry();
  -    }
  -    
       /**
  -     * Get the MessageElement with a particular ID
  +     * Convenenience method that returns true if the value is nil 
  +     * (due to the xsi:nil) attribute.
  +     * @param attributes are the element attributes.
  +     * @return true if xsi:nil is true
  +     */
  +    public boolean isNil(Attributes attrs);
  +
  +    /**
  +     * Convenience method to get the Deserializer for a specific
  +     * xmlType.
  +     * @param xmlType is QName for a type to deserialize
  +     * @return Deserializer
  +     */
  +    public Deserializer getDeserializerForType(QName xmlType);
  +
  +    /** 
  +     * Get the TypeMapping for this DeserializationContext
  +     */
  +    public TypeMapping getTypeMapping();
  +
  +    /**
  +     * Get the TypeMappingRegistry we're using.
  +     * @return TypeMapping or null
        */ 
  -    public MessageElement getElementByID(String id)
  -    {
  -        if((idMap !=  null)) {
  -            IDResolver resolver = (IDResolver)idMap.get(id);
  -            if(resolver != null) {
  -                Object ret = resolver.getReferencedObject(id);
  -                if (ret instanceof MessageElement)
  -                    return (MessageElement)ret;
  -            }
  -        }
  -        
  -        return null;
  -    }
  -    
  +    public TypeMappingRegistry getTypeMappingRegistry();
  +
       /**
  -     * Get the object referenced by the href.
  -     * The object returned may be a MessageElement requiring deserialization or it 
  -     * may be a deserialized java object.
  -     */
  -    public Object getObjectByRef(String href) {
  -        Object ret= null;
  -        if(href != null){
  -            if((idMap !=  null)){
  -                IDResolver resolver = (IDResolver)idMap.get(href);
  -                if(resolver != null)
  -                   ret = resolver.getReferencedObject(href);
  -            }
  -            if( null == ret && !href.startsWith("#")){
  -                //Could this be an attachment?
  -                Message msg= null;
  -                if(null != (msg=msgContext.getCurrentMessage())){
  -                    Attachments attch= null;
  -                    if( null != (attch= msg.getAttachments())){ 
  -                        try{
  -                        ret= attch.getAttachmentByReference(href);
  -                        }catch(AxisFault e){};
  -                    }
  -                }
  -            }
  -        }
  +     * Get the MessageElement for the indicated id (where id is the #value of an href)
  +     * If the MessageElement has not been processed, the MessageElement will 
  +     * be returned.  If the MessageElement has been processed, the actual object
  +     * value is stored with the id and this routine will return null.
  +     * @param id is the value of an href attribute
  +     * @return MessageElement or null
  +     */ 
  +    public MessageElement getElementByID(String id);
   
  -        return ret; 
  -    }
  -    
       /**
  -     * Add the object associated with this id.
  +     * Gets the MessageElement or actual Object value associated with the href value.  
  +     * The return of a MessageElement indicates that the referenced element has 
  +     * not been processed.  If it is not a MessageElement, the Object is the
  +     * actual deserialized value.  
  +     * In addition, this method is invoked to get Object values via Attachments.
  +     * @param id is the value of an href attribute (or an Attachment id)
  +     * @return MessageElement other Object or null
  +     */ 
  +    public Object getObjectByRef(String href);
  +
  +    /**
  +     * Add the object associated with this id (where id is the value of an id= attribute,
  +     * i.e. it does not start with #).  
        * This routine is called to associate the deserialized object
  -     * with the id specified on the XML element. 
  -    */
  -    public void addObjectById(String _id, Object obj)
  -    {
  -        // The resolver uses the href syntax as the key.
  -        String id = "#" + _id;
  -        if ((idMap == null) || (id == null))
  -            return ;
  -        
  -        IDResolver resolver = (IDResolver)idMap.get(id);
  -        if (resolver == null)
  -            return ;
  -        
  -        resolver.addReferencedObject(id, obj);
  -        return;
  -    }
  -
  -    public void registerFixup(String id, Deserializer dser)
  -    {
  -        if (fixups == null)
  -            fixups = new HashMap();
  -
  -        Deserializer prev = (Deserializer) fixups.put(id, dser);
  -
  -        // If previously registered deserializer, move the targets
  -        if (prev != null && prev != dser)
  -            dser.copyValueTargets(prev);
  -    }
  -    
  -    public void registerElementByID(String id, MessageElement elem)
  -    {
  -        if (localIDs == null)
  -            localIDs = new LocalIDResolver();
  -        
  -        String absID = "#" + id;
  -        
  -        localIDs.addReferencedObject(absID, elem);
  -        
  -        registerResolverForID(absID, localIDs);
  -        
  -        if (fixups != null) {
  -            Deserializer dser = (Deserializer)fixups.get(absID);
  -            if (dser != null) {
  -                elem.setFixupDeserializer(dser);
  -            }
  -        }
  -    }
  -    
  -    public void registerResolverForID(String id, IDResolver resolver)
  -    {
  -        if ((id == null) || (resolver == null)) {
  -            // ??? Throw nullPointerException?
  -            return;
  -        }
  -        
  -        if (idMap == null)
  -            idMap = new HashMap();
  -        
  -        idMap.put(id, resolver);
  -    }
  -    
  -    public int getCurrentRecordPos()
  -    {
  -        if (recorder == null) return -1;
  -        return recorder.getLength() - 1;
  -    }
  -    
  -    protected int startOfMappingsPos = -1;
  -    
  -    public int getStartOfMappingsPos()
  -    {
  -        if (startOfMappingsPos == -1) {
  -            return getCurrentRecordPos() + 1;
  -        }
  -        
  -        return startOfMappingsPos;
  -    }
  -    
  -    public void pushNewElement(MessageElement elem)
  -    {
  -        if (recorder != null) {
  -            recorder.newElement(elem);
  -        }
  -        
  -        elem.setParent(curElement);
  -        curElement = elem;
  -    }
  -    
  -    /****************************************************************
  -     * Management of sub-handlers (deserializers)
  +     * with the id specified on the XML element.
  +     * @param id (id name without the #)
  +     * @param obj is the deserialized object for this id.
        */
  -    
  -    public SOAPHandler getTopHandler()
  -    {
  -        try {
  -            return (SOAPHandler)handlerStack.peek();
  -        } catch (Exception e) {
  -            return null;
  -        }
  -    }
  -    
  -    public void pushElementHandler(SOAPHandler handler)
  -    {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("pushHandler00", "" + handler));
  -        }
  -        
  -        handlerStack.push(handler);
  -    }
  -    
  -    /** Replace the handler at the top of the stack.
  -     * 
  -     * This is only used when we have a placeholder Deserializer
  -     * for a referenced object which doesn't know its type until we
  -     * hit the referent.
  -     */
  -    void replaceElementHandler(SOAPHandler handler)
  -    {
  -        handlerStack.pop();
  -        handlerStack.push(handler);
  -    }
  -    
  -    public SOAPHandler popElementHandler()
  -    {
  -        if (!handlerStack.empty()) {
  -            SOAPHandler handler = getTopHandler();
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage("popHandler00", "" + handler));
  -            }
  -            handlerStack.pop();
  -            return handler;
  -        } else {
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage("popHandler00", "(null)"));
  -            }
  -            return null;
  -        }
  -    }
  -    
  -    /****************************************************************
  -     * SAX event handlers
  +    public void addObjectById(String _id, Object obj);
  +
  +   /**
  +     * During deserialization, an element with an href=#id<int>
  +     * may be encountered before the element defining id=id<int> is
  +     * read.  In these cases, the getObjectByRef method above will
  +     * return null.  The deserializer is placed in a table keyed
  +     * by href (a fixup table). After the element id is processed,
  +     * the deserializer is informed of the value so that it can
  +     * update its target(s) with the value.
  +     * @param href (#id syntax)
  +     * @param dser is the deserializer of the element
        */
  -    public void startDocument() throws SAXException {
  -        // Should never receive this in the midst of a parse.
  -        if (recorder != null)
  -            recorder.startDocument();
  -    }
  -    
  -    public void endDocument() throws SAXException {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("endDoc00"));
  -        }
  -        if (recorder != null)
  -            recorder.endDocument();
  -        
  -        doneParsing = true;
  -    }
  -    
  -    /** Record the current set of prefix mappings in the nsMappings table.
  -     *
  -     * !!! We probably want to have this mapping be associated with the
  -     *     MessageElements, since they may potentially need access to them
  -     *     long after the end of the prefix mapping here.  (example:
  -     *     when we need to record a long string of events scanning forward
  -     *     in the document to find an element with a particular ID.)
  -     */
  -    public void startPrefixMapping(String prefix, String uri)
  -        throws SAXException
  -    {
  -        if (recorder != null)
  -            recorder.startPrefixMapping(prefix, uri);
  -        
  -        if (startOfMappingsPos == -1)
  -            startOfMappingsPos = getCurrentRecordPos();
  -        
  -        if (prefix != null) {
  -            namespaces.add(uri, prefix);
  -        } else {
  -            namespaces.add(uri, "");
  -        }
  -       
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("startPrefix00", prefix, uri));
  -        }
  -        
  -        SOAPHandler handler = getTopHandler();
  -        if (handler != null)
  -            handler.startPrefixMapping(prefix, uri);
  -    }
  -    
  -    public void endPrefixMapping(String prefix)
  -        throws SAXException
  -    {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("endPrefix00", prefix));
  -        }
  -        
  -        if (recorder != null)
  -            recorder.endPrefixMapping(prefix);
  -        
  -        SOAPHandler handler = getTopHandler();
  -        if (handler != null)
  -            handler.endPrefixMapping(prefix);
  -    }
  -    
  -    public void setDocumentLocator(Locator locator) 
  -    {
  -        if (recorder != null)
  -            recorder.setDocumentLocator(locator);
  -        this.locator = locator;
  -    }
  -
  -    public void characters(char[] p1, int p2, int p3) throws SAXException {
  -        if (recorder != null)
  -            recorder.characters(p1, p2, p3);
  -        if (getTopHandler() != null)
  -            getTopHandler().characters(p1, p2, p3);
  -    }
  -    
  -    public void ignorableWhitespace(char[] p1, int p2, int p3) throws SAXException {
  -        if (recorder != null)
  -            recorder.ignorableWhitespace(p1, p2, p3);
  -        if (getTopHandler() != null)
  -            getTopHandler().ignorableWhitespace(p1, p2, p3);
  -    }
  - 
  -    public void processingInstruction(String p1, String p2) throws SAXException {
  -        // must throw an error since SOAP 1.1 doesn't allow
  -        // processing instructions anywhere in the message
  -        throw new SAXException(JavaUtils.getMessage("noInstructions00"));
  -    }
  -
  -    public void skippedEntity(String p1) throws SAXException {
  -        if (recorder != null)
  -            recorder.skippedEntity(p1);
  -        getTopHandler().skippedEntity(p1);
  -    }
  -
  -    /** This is a big workhorse.  Manage the state of the parser, check for
  -     * basic SOAP compliance (envelope, then optional header, then body, etc).
  -     * 
  -     * This guy also handles monitoring the recording depth if we're recording
  -     * (so we know when to stop), and might eventually do things to help with
  -     * ID/HREF management as well.
  -     * 
  -     */
  -    public void startElement(String namespace, String localName,
  -                             String qName, Attributes attributes)
  -        throws SAXException
  -    {
  -        SOAPHandler nextHandler = null;
  -
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("startElem00",
  -                    "['" + namespace + "' " + localName + "]"));
  -        }
  -        
  -        String prefix = "";
  -        int idx = qName.indexOf(":");
  -        if (idx > 0)
  -            prefix = qName.substring(0, idx);
  -
  -        if (!handlerStack.isEmpty()) {
  -            nextHandler = getTopHandler().onStartChild(namespace,
  -                                                       localName,
  -                                                       prefix,
  -                                                       attributes,
  -                                                       this);
  -        }
  -        
  -        if (nextHandler == null) {
  -            nextHandler = new SOAPHandler();
  -        }
  -        
  -        pushElementHandler(nextHandler);
  -
  -        nextHandler.startElement(namespace, localName, qName,
  -                                 attributes, this);
  -        
  -        if (recorder != null) {
  -            recorder.startElement(namespace, localName, qName,
  -                                  attributes);
  -            if (!doneParsing)
  -                curElement.setContentsIndex(recorder.getLength());
  -        }
  -        
  -        namespaces.push();
  -        
  -        startOfMappingsPos = -1;
  -    }
  -    
  -    public void endElement(String namespace, String localName, String qName)
  -        throws SAXException
  -    {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("endElem00",
  -                    "['" + namespace + "' " + localName + "]"));
  -        }
  -        
  -        if (recorder != null)
  -            recorder.endElement(namespace, localName, qName);
  -        
  -        try {
  -            SOAPHandler handler = popElementHandler();
  -            handler.endElement(namespace, localName, this);
  -            
  -            if (!handlerStack.isEmpty()) {
  -                getTopHandler().onEndChild(namespace, localName, this);
  -            } else {
  -                // We should be done!
  -                if (category.isDebugEnabled()) {
  -                    category.debug(JavaUtils.getMessage("endDoc01"));
  -                }
  -            }
  -            
  -        } finally {
  -            if (curElement != null)
  -                curElement = curElement.getParent();
  -        }
  -    }
  +    public void registerFixup(String href, Deserializer dser);
  +
  +   
  +    /**
  +     * Register the MessageElement with this id (where id is id= form without the #)     
  +     * This routine is called when the MessageElement with an id is read.
  +     * If there is a Deserializer in our fixup list (described above),
  +     * the 'fixup' deserializer is given to the MessageElement.  When the
  +     * MessageElement is completed, the 'fixup' deserializer is informed and
  +     * it can set its targets.
  +     * @param id (id name without the #)
  +     * @param elem is the MessageElement                   
  +     */
  +    public void registerElementByID(String id, MessageElement elem);
  +
  +    /**
  +     * Each id can have its own kind of resolver.  This registers a 
  +     * resolver for the id.
  +     */
  +    public void registerResolverForID(String id, IDResolver resolver);
  +
  +    /**
  +     * Get the current position in the record.
  +     */
  +    public int getCurrentRecordPos();
  +
  +    /**
  +     * Get the start of the mapping position  
  +     */
  +    public int getStartOfMappingsPos();
  +
  +    /**
  +     * Push the MessageElement into the recorder
  +     */
  +    public void pushNewElement(MessageElement elem);
  +
  +    /**
  +     * Handler management methods
  +     */
  +    public SOAPHandler getTopHandler();
  +    public void pushElementHandler(SOAPHandler handler);
  +    public void replaceElementHandler(SOAPHandler handler);
  +    public SOAPHandler popElementHandler();
  +
  +    /**
  +     * Return if done parsing document.
  +     */
  +    public boolean isDoneParsing();
   }
  +
   
  
  
  
  1.27.2.1  +220 -359  xml-axis/java/src/org/apache/axis/encoding/Deserializer.java
  
  Index: Deserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Deserializer.java,v
  retrieving revision 1.27
  retrieving revision 1.27.2.1
  diff -u -r1.27 -r1.27.2.1
  --- Deserializer.java	31 Dec 2001 20:35:07 -0000	1.27
  +++ Deserializer.java	28 Jan 2002 06:43:00 -0000	1.27.2.1
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2001 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -10,7 +10,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    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
  @@ -18,7 +18,7 @@
    *    distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  + *    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,
  @@ -26,7 +26,7 @@
    *
    * 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 
  + *    software without prior written permission. For written
    *    permission, please contact apache@apache.org.
    *
    * 5. Products derived from this software may not be called "Apache",
  @@ -53,391 +53,252 @@
    * <http://www.apache.org/>.
    */
   
  +
   package org.apache.axis.encoding;
   
  -import org.apache.axis.Constants;
  +import java.io.IOException;
  +import java.io.Writer;
  +
  +import org.apache.axis.Message;
  +import org.apache.axis.MessageContext;
  +
  +import org.apache.axis.encoding.Target;
   
  -import org.apache.axis.message.EnvelopeHandler;
  +import org.apache.axis.message.IDResolver;
   import org.apache.axis.message.MessageElement;
   import org.apache.axis.message.SAX2EventRecorder;
  -import org.apache.axis.message.SAXOutputter;
   import org.apache.axis.message.SOAPHandler;
  -import org.apache.axis.utils.JavaUtils;
  -import org.apache.log4j.Category;
  +import org.apache.axis.utils.NSStack;
  +import org.apache.axis.message.SOAPEnvelope;
  +
  +import org.w3c.dom.Element;
  +
   import org.xml.sax.Attributes;
   import org.xml.sax.SAXException;
   
  +import javax.xml.parsers.SAXParser;
   import javax.xml.rpc.namespace.QName;
  -import java.io.StringWriter;
  -import java.lang.reflect.Field;
  -import java.lang.reflect.InvocationTargetException;
  -import java.lang.reflect.Method;
  -import java.util.Enumeration;
  +import java.io.IOException;
  +import java.util.ArrayList;
  +import java.util.HashMap;
  +import java.util.Stack;
   import java.util.Vector;
   
  -/** The Deserializer base class.
  +/**
  + * This interface describes the AXIS Deserializer. 
  + * A compliant implementiation must extend either
  + * the AXIS SoapHandler (org.apache.axis.message.SOAPHandler)
  + * or the AXIS DeserializerImpl (org.apache.axis.encoding.DeserializerImpl)
    * 
  - * Still needs some work.
  - * 
  - * @author Glen Daniels (gdaniels@allaire.com)
  - */
  + * The DeserializerImpl provides a lot of the default behavior including the
  + * support for id/href.  So you may want to try extending it as opposed to
  + * extending SoapHandler.
  + *
  + * An Axis compliant Deserializer must provide one or more 
  + * of the following methods:
  + *
  + * public <constructor>(Class javaType, QName xmlType)
  + * public <constructor>()
  + *
  + * This will allow for construction of generic factories that introspect the class 
  + * to determine how to construct a deserializer.
  + * The xmlType, javaType arguments are filled in with the values known by the factory. 
  +g */
  +public interface Deserializer extends javax.xml.rpc.encoding.Deserializer, Callback {
  +    
  +    /** 
  +     * Get the deserialized value.
  +     * @return Object representing deserialized value or null
  +     */
  +    public Object getValue();
  +
  +    /** 
  +     * Set the deserialized value.
  +     * @param Object representing deserialized value
  +     */
  +    public void setValue(Object value);
  +
  +    /** 
  +     * If the deserializer has component values (like ArrayDeserializer)
  +     * this method gets the specific component via the hint.
  +     * The default implementation returns null.
  +     * @return Object representing deserialized value or null
  +     */
  +    public Object getValue(Object hint);
   
  -public class Deserializer extends SOAPHandler
  -{
  -    static Category category =
  -            Category.getInstance(Deserializer.class.getName());
  +    /** 
  +     * If the deserializer has component values (like ArrayDeserializer)
  +     * this method sets the specific component via the hint.
  +     * The default implementation does nothing.
  +     * @param Object representing deserialized value or null
  +     */
  +    public void setValue(Object value, Object hint) throws SAXException;
   
  -    protected Object value = null;
  +    /**
  +     * For deserializers of non-primitives, the value may not be
  +     * known until later (due to multi-referencing).  In such
  +     * cases the deserializer registers Target object(s).  When
  +     * the value is known, the set(value) will be invoked for
  +     * each Target registered with the Deserializer.  The Target
  +     * object abstracts the function of setting a target with a
  +     * value.  See the Target interface for more info.
  +     * @param Target
  +     */
  +    public void registerValueTarget(Target target);
   
  -    // isEnded is set when the endElement is called
  -    protected boolean isEnded = false;
  +    /**
  +     * Get the Value Targets of the Deserializer.
  +     * @return Vector of Target objects or null
  +     */
  +    public Vector getValueTargets();
   
  -    protected Vector targets = null;
  -    
  -    public Object getValue()
  -    {
  -        return value;
  -    }
  -    public void setValue(Object value)
  -    {
  -        this.value = value;
  -    }
  -
  -    /////////////////////////////////////////////////////////////
  -    //  Reflection-based insertion of values into target objects
  -    //  once deserialization is complete.
  -    //
  -    public interface Target {
  -        public void set(Object value) throws SAXException;
  -
  -    }
  -
  -    public static class FieldTarget implements Target {
  -        private Object targetObject;
  -        private Field targetField;
  -
  -        public FieldTarget(Object targetObject, Field targetField)
  -        {
  -            this.targetObject = targetObject;
  -            this.targetField = targetField;
  -        }
  -        
  -        public FieldTarget(Object targetObject, String fieldName)
  -            throws NoSuchFieldException
  -        {
  -            Class cls = targetObject.getClass();
  -            targetField = cls.getField(fieldName);
  -            this.targetObject = targetObject;
  -        }
  -
  -        public void set(Object value) throws SAXException {
  -            try {
  -                targetField.set(targetObject, value);
  -            } catch (IllegalAccessException accEx) {
  -                accEx.printStackTrace();
  -                throw new SAXException(accEx);
  -            } catch (IllegalArgumentException argEx) {
  -                argEx.printStackTrace();
  -                throw new SAXException(argEx);
  -            }
  -        }
  -    }
  -    
  -    public static class MethodTarget implements Target {
  -        private Object targetObject;
  -        private Method targetMethod;
  -        private static final Class [] objArg = new Class [] { Object.class };
  -
  -        public MethodTarget(Object targetObject, String methodName)
  -            throws NoSuchMethodException
  -        {
  -            this.targetObject = targetObject;
  -            Class cls = targetObject.getClass();
  -            targetMethod = cls.getMethod(methodName, objArg);
  -        }
  -        
  -        public void set(Object value) throws SAXException {
  -            try {
  -                targetMethod.invoke(targetObject, new Object [] { value });
  -            } catch (IllegalAccessException accEx) {
  -                accEx.printStackTrace();
  -                throw new SAXException(accEx);
  -            } catch (IllegalArgumentException argEx) {
  -                argEx.printStackTrace();
  -                throw new SAXException(argEx);
  -            } catch (InvocationTargetException targetEx) {
  -                targetEx.printStackTrace();
  -                throw new SAXException(targetEx);
  -            }
  -        }
  -    }
  -
  -    class CallbackTarget implements Target {
  -        public ValueReceiver target;
  -        public Object hint;
  -        CallbackTarget(ValueReceiver target, Object hint)
  -        {
  -            this.target = target;
  -            this.hint = hint;
  -        }
  -        
  -        public void set(Object value) throws SAXException {
  -            target.valueReady(value, hint);
  -        }
  -    }
  -
  -    public void registerCallback(ValueReceiver target, Object hint)
  -    {
  -        if (target == null)
  -            return;
  -        
  -        registerValueTarget(new CallbackTarget(target, hint));
  -    }
  -    
  +   /**
  +     * Add someone else's targets to our own (see DeserializationContext)
  +     *
  +     * The DeserializationContext only allows one Deserializer to  
  +     * wait for a unknown multi-ref'ed value.  So to ensure
  +     * that all of the targets are updated, this method is invoked
  +     * to copy the Target objects to the waiting Deserializer.
  +     * @param other is the Deserializer to copy targets from.
  +     */
  +    public void copyValueTargets(Deserializer other);
   
  -    public void registerValueTarget(Target target)
  -    {
  -        if (targets == null)
  -            targets = new Vector();
  -        
  -        targets.addElement(target);
  -    }
  -    
  -    public void registerValueTarget(Object target, String fieldName)
  -        throws NoSuchFieldException
  -    {
  -        registerValueTarget(new FieldTarget(target, fieldName));
  -    }
  -    
  -    /** Add someone else's targets to our own (see DeserializationContext)
  -     * 
  +    /**
  +     * Some deserializers (ArrayDeserializer) require
  +     * all of the component values to be known before the
  +     * value is complete.
  +     * (For the ArrayDeserializer this is important because
  +     * the elements are stored in an ArrayList, and all values
  +     * must be known before the ArrayList is converted into the
  +     * expected array.
  +     *
  +     * This routine is used to indicate when the components are ready.
  +     * The default (true) is useful for most Deserializers.
        */
  -    public void copyValueTargets(Deserializer other)
  -    {
  -        if ((other == null) || (other.targets == null))
  -            return;
  -        
  -        if (targets == null)
  -            targets = new Vector();
  -        
  -        Enumeration e = other.targets.elements();
  -        while (e.hasMoreElements()) {
  -            targets.addElement(e.nextElement());
  -        }
  -    }
  -    
  +    public boolean componentsReady();
  +
       /** 
  -     * Store the value into the target
  +     * The valueComplete() method is invoked when the
  +     * end tag of the element is read.  This results
  +     * in the setting of all registered Targets (see
  +     * registerValueTarget).
  +     * Note that the valueComplete() only processes
  +     * the Targets if componentReady() returns true.
  +     * So if you override componentReady(), then your
  +     * specific Deserializer will need to call valueComplete()
  +     * when your components are ready (See ArrayDeserializer)
        */
  -    public void valueComplete() throws SAXException
  -    {
  -        if (componentsReady()) {            
  -            if (targets != null) {
  -                Enumeration e = targets.elements();
  -                while (e.hasMoreElements()) {
  -                    Target target = (Target)e.nextElement();
  -                    target.set(value);
  -                    if (category.isDebugEnabled()) {
  -                        category.debug(JavaUtils.getMessage("setValueInTarget00",
  -                                                            "" + value, "" + target));
  -                    }
  -                }
  -            }
  -        }
  -    }
  -    
  -    private int startIdx = 0;
  -    private int endIdx = -1;
  -    protected boolean isHref = false;
  -    protected boolean isNil  = false;  // xsd:nil attribute is set to true
  -    protected String id = null;  // Set to the id of the element
  -    
  -    /** Subclasses override this
  +    public void valueComplete() throws SAXException;
  +
  +
  +    /**
  +     * The following are the SAX specific methods.
  +     * DeserializationImpl provides default behaviour, which
  +     * in most cases is appropriate.
  +     */
  +
  +    /**
  +     * This method is invoked when an element start tag is encountered.
  +     * DeserializerImpl provides default behavior, which involves the following:
  +     *   - directly handling the deserialization of a nill value
  +     *   - handling the registration of the id value.
  +     *   - handling the registration of a fixup if this element is an href.
  +     *   - calling onStartElement to do the actual deserialization if not nill or href cases.
  +     * @param namespace is the namespace of the element
  +     * @param localName is the name of the element
  +     * @param qName is the prefixed qName of the element
  +     * @param attributes are the attributes on the element...used to get the type
  +     * @param context is the DeserializationContext
  +     *
  +     * Normally a specific Deserializer (FooDeserializer) should extend DeserializerImpl.
  +     * Here is the flow that will occur in such cases:
  +     *   1) DeserializerImpl.startElement(...) will be called and do the id/href/nill stuff.
  +     *   2) If real deserialization needs to take place DeserializerImpl.onStartElement will be
  +     *      invoked, which will attempt to install the specific Deserializer (FooDeserializer)
  +     *   3) The FooDeserializer.startElement(...) will be called to do the Foo specific stuff.
  +     *      This results in a call to FooDeserializer.onStartElement(...) if startElement was
  +     *      not overridden.
  +     *   4) The onChildElement(...) method is called for each child element.  Nothing occurs
  +     *      if not overridden.  The FooDeserializer.onStartChild(...) method should return 
  +     *      the deserializer for the child element.
  +     *   5) When the end tag is reached, the endElement(..) method is invoked.  The default 
  +     *      behavior is to handle hrefs/ids, call onEndElement and then call the Deserializer
  +     *      valueComplete method.
  +     * 
  +     * So the methods that you potentially want to override are:
  +     *   onStartElement, onStartChild, componentsReady, set(object, hint)
  +     *
  +     * You probably should not override startElement or endElement.
  +     * If you need specific behaviour at the end of the element consider overriding
  +     * onEndElement.
  +     *
  +     * See the pre-existing Deserializers for more information.
  +     */
  +    public void startElement(String namespace, String localName,
  +                             String qName, Attributes attributes,
  +                             DeserializationContext context)
  +        throws SAXException;
  +       
  +    /**
  +     * This method is invoked after startElement when the element requires
  +     * deserialization (i.e. the element is not an href and the value is not nil.)
  +     * DeserializerImpl provides default behavior, which simply
  +     * involves obtaining a correct Deserializer and plugging its handler.
  +     * @param namespace is the namespace of the element
  +     * @param localName is the name of the element
  +     * @param qName is the prefixed qname of the element
  +     * @param attributes are the attributes on the element...used to get the type
  +     * @param context is the DeserializationContext
        */
       public void onStartElement(String namespace, String localName,
                                String qName, Attributes attributes,
                                DeserializationContext context)
  -        throws SAXException
  -    {
  -        // If I'm the base class, try replacing myself with an
  -        // appropriate deserializer gleaned from type info.
  -        if (this.getClass().equals(Deserializer.class)) {
  -            QName type = context.getTypeFromAttributes(namespace,
  -                                                       localName,
  -                                                       attributes);
  -            
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage("gotType00", "Deser", "" + type));
  -            }
  -            
  -            // We know we're deserializing, and we can't seem to figure
  -            // out a type... so let's give them a string.
  -            // ??? Is this the right thing to do?
  -            if (type != null) {
  -                Deserializer dser = 
  -                                   context.getTypeMappingRegistry().getDeserializer(type);
  -                if (dser != null) {
  -                    dser.copyValueTargets(this);
  -                    context.replaceElementHandler(dser);
  -                    // And don't forget to give it the start event...
  -                    dser.startElement(namespace, localName, qName,
  -                                      attributes, context);
  -                }
  -            } else {
  -                startIdx = context.getCurrentRecordPos();
  -            }
  -        }
  -    }
  -    
  +        throws SAXException;
  +
  +    /**
  +     * onStartChild is called on each child element.
  +     * The default behavior supplied by DeserializationImpl is to do nothing.
  +     * A specific deserializer may perform other tasks.  For example a 
  +     * BeanDeserializer will construct a deserializer for the indicated 
  +     * property and return it.
  +     * @param namespace is the namespace of the child element
  +     * @param localName is the local name of the child element
  +     * @param prefix is the prefix used on the name of the child element
  +     * @param attributes are the attributes of the child element
  +     * @param context is the deserialization context.
  +     * @return is a Deserializer to use to deserialize a child (must be
  +     * a derived class of SOAPHandler) or null if no deserialization should
  +     * be performed.
  +     */
       public SOAPHandler onStartChild(String namespace, String localName,
                                String prefix, Attributes attributes,
                                DeserializationContext context)
  -        throws SAXException
  -    {
  -        return null;
  -    }
  -    
  -    public void startElement(String namespace, String localName,
  -                             String qName, Attributes attributes,
  -                             DeserializationContext context)
  -        throws SAXException
  -    {
  -        // If the xsi:nil attribute, set the value to null and return since
  -        // there is nothing to deserialize.
  -        String nil = null;
  -        for (int i = 0; i < Constants.URIS_SCHEMA_XSI.length && nil == null; i++)
  -            nil = attributes.getValue(Constants.URIS_SCHEMA_XSI[i], "nil");
  -        if (nil != null && nil.equals("true")) {
  -          value = null;
  -          isNil = true;
  -          return;
  -        }
  -
  -        // If this element has an id, then associate the value with the id.
  -        // (Prior to this association, the MessageElement of the element is
  -        // associated with the id. Failure to replace the MessageElement at this
  -        // point will cause an infinite loop during deserialization if the 
  -        // current element contains child elements that cause an href back to this id.)
  -        // Also note that that endElement() method is responsible for the final
  -        // assoication of this id with the completed value.
  -        id = attributes.getValue("id");
  -        if (id != null) {
  -            context.addObjectById(id, value);
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage("deserInitPutValueDebug00", "" + value, id));
  -            }     
  -        }
  -
  -        String href = attributes.getValue("href");
  -        if (href != null) {
  -            isHref = true;
  -
  -            Object ref = context.getObjectByRef(href);            
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage(
  -                        "gotForID00",
  -                        new String[] {"" + ref, href, "" + ref.getClass()}));
  -            }
  -            
  -            if (ref == null) {
  -                // Nothing yet... register for later interest.
  -                context.registerFixup(href, this);
  -            }
  -            
  -            if (ref instanceof MessageElement) {
  -                context.replaceElementHandler(new EnvelopeHandler(this));
  -
  -                SAX2EventRecorder r = context.recorder;
  -                context.recorder = null;
  -                ((MessageElement)ref).publishToHandler(context);
  -                context.recorder = r;
  -            } else {
  -                // If the ref is not a MessageElement, then it must be an
  -                // element that has already been deserialized.  Use it directly.
  -                value = ref;
  -                valueComplete();
  -            }
  -            
  -            // !!! INSERT DEALING WITH ATTACHMENTS STUFF HERE?
  -        } else {
  -            isHref = false;
  -            onStartElement(namespace, localName, qName, attributes,
  -                           context);
  -        }
  -    }
  -    
  -    /**
  -     * Subclasses override this to do custom functionality at the
  -     * end of their enclosing element.  This will NOT be called
  -     * for HREFs...
  -     * 
  +        throws SAXException;
  +
  +    /** 
  +     * endElement is called when the end element tag is reached.
  +     * It handles href/id information for multi-ref processing
  +     * and invokes the valueComplete() method of the deserializer
  +     * which sets the targets with the deserialized value.
  +     * @param namespace is the namespace of the child element
  +     * @param localName is the local name of the child element
  +     * @param context is the deserialization context
        */
  -    public void onEndElement(String namespace, String localName,
  +    public void endElement(String namespace, String localName,
                              DeserializationContext context)
  -        throws SAXException
  -    {
  -        // If we only have SAX events, but someone really wanted a
  -        // value, try sending them the contents of this element
  -        // as a String...
  -        // ??? Is this the right thing to do here?
  -        
  -        if (this.getClass().equals(Deserializer.class) &&
  -            targets != null &&
  -            !targets.isEmpty()) {
  -            endIdx = context.getCurrentRecordPos();
  -            
  -            StringWriter writer = new StringWriter();
  -            SerializationContext serContext = 
  -                        new SerializationContext(writer,
  -                                                 context.getMessageContext());
  -            serContext.setSendDecl(false);
  -            SAXOutputter so = new SAXOutputter(serContext);
  -            context.curElement.publishContents(so);
  -            
  -            value = writer.getBuffer().toString();
  -        }
  -    }
  -    
  -    public final void endElement(String namespace, String localName,
  -                           DeserializationContext context)
  -        throws SAXException
  -    {
  +        throws SAXException;
   
  -        isEnded = true;
  -        if (!isHref) {
  -            onEndElement(namespace, localName, context);
  -        }
  -        
  -        // Time to call valueComplete to copy the value to 
  -        // the targets.  First a call is made to componentsReady
  -        // to ensure that all components are ready.
  -
  -        if (componentsReady())
  -            valueComplete();
  -
  -        // If this element has an id, then associate the value with the id.
  -        // Subsequent hrefs to the id will obtain the value directly.
  -        // This is necessary for proper multi-reference deserialization.
  -        if (id != null) {
  -            context.addObjectById(id, value);
  -            if (category.isDebugEnabled()) {
  -                category.debug(JavaUtils.getMessage("deserPutValueDebug00", "" + value, id));
  -            }     
  -        }
  -    }
  +   /**
  +     * onEndElement is called by endElement.  It is not called
  +     * if the element has an href.
  +     * @param namespace is the namespace of the child element
  +     * @param localName is the local name of the child element
  +     * @param context is the deserialization context
  +     */
  +    public void onEndElement(String namespace, String localName,
  +                           DeserializationContext context)
  +        throws SAXException;
   
  -    /**
  -     * Return whether components are ready. 
  -     * Use the default componentsReady if the  
  -     * Deserializer value is used directly.  For arrays,
  -     * componentsReady is overridden (since the
  -     * ArraySerializer value is an ArrayList which will
  -     * be converted into an actual array).  
  -     * If componentsReady is overridden, the
  -     * actual Deserializer is responsible for calling valueComplete
  -     * when the value is ready.
  -     */
  -    protected boolean componentsReady() {
  -        return true; 
  -    }
   }
  +
  +
  
  
  
  1.6.2.1   +19 -22    xml-axis/java/src/org/apache/axis/encoding/DeserializerFactory.java
  
  Index: DeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- DeserializerFactory.java	23 Dec 2001 12:33:32 -0000	1.6
  +++ DeserializerFactory.java	28 Jan 2002 06:43:00 -0000	1.6.2.1
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2001 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -10,7 +10,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    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
  @@ -18,7 +18,7 @@
    *    distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  + *    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,
  @@ -26,7 +26,7 @@
    *
    * 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 
  + *    software without prior written permission. For written
    *    permission, please contact apache@apache.org.
    *
    * 5. Products derived from this software may not be called "Apache",
  @@ -53,27 +53,24 @@
    * <http://www.apache.org/>.
    */
   
  -package org.apache.axis.encoding;
   
  -import java.beans.IntrospectionException;
  +package org.apache.axis.encoding;
   
   /**
  - * DeserializerFactories produce preconfigured deserializers designed
  - * to convert an XML Element into the desired Java Class.
  + * This interface describes the AXIS DeserializerFactory.
  + *
  + * An Axis compliant Serializer Factory must provide one or more 
  + * of the following methods:
  + *
  + * public static create(Class javaType, QName xmlType)
  + * public <constructor>(Class javaType, QName xmlType)
  + * public <constructor>()
  + *
  + * The deployment code will attempt to invoke these methods in the above order.
  + * The xmlType, javaType arguments are filled in with the values supplied during the
  + * deployment registration of the factory.
    */
  -public interface DeserializerFactory extends java.io.Serializable {
  +public interface DeserializerFactory extends javax.xml.rpc.encoding.DeserializerFactory { 
  +}
   
  -    /**
  -     * Specifify the class to be returned by the deserializer produced
  -     * by this factory.
  -     * @param cls the desired class
  -     * @exception IntrospectionException unable to introspect the desired
  -     * class or the class has the wrong type signature for its intended use.
  -     */
  -    public void setJavaClass(Class cls) throws IntrospectionException;
   
  -    /**
  -     * Obtain the desired deserializer. 
  -     */
  -    public Deserializer getDeserializer();
  -}
  
  
  
  1.71.2.1  +177 -593  xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java
  
  Index: SerializationContext.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java,v
  retrieving revision 1.71
  retrieving revision 1.71.2.1
  diff -u -r1.71 -r1.71.2.1
  --- SerializationContext.java	11 Jan 2002 18:15:19 -0000	1.71
  +++ SerializationContext.java	28 Jan 2002 06:43:01 -0000	1.71.2.1
  @@ -53,193 +53,112 @@
    * <http://www.apache.org/>.
    */
   
  +
   package org.apache.axis.encoding;
   
  -import org.apache.axis.AxisEngine;
  -import org.apache.axis.Constants;
  +import java.io.IOException;
  +import java.io.Writer;
  +
  +import javax.xml.rpc.namespace.QName;
  +
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.attachments.Attachments;
  -import org.apache.axis.client.Call;
  -import org.apache.axis.utils.JavaUtils;
  -import org.apache.axis.utils.Mapping;
  -import org.apache.axis.utils.NSStack;
  -import org.apache.axis.utils.XMLUtils;
  -import org.apache.log4j.Category;
  -import org.w3c.dom.Attr;
  +
   import org.w3c.dom.Element;
  -import org.w3c.dom.NamedNodeMap;
  -import org.w3c.dom.Node;
  -import org.w3c.dom.NodeList;
  -import org.w3c.dom.Text;
  +
   import org.xml.sax.Attributes;
  -import org.xml.sax.helpers.AttributesImpl;
   
  -import javax.xml.rpc.namespace.QName;
  -import java.io.IOException;
  -import java.io.Writer;
  -import java.util.ArrayList;
  -import java.util.Date;
  -import java.util.HashMap;
  -import java.util.HashSet;
  -import java.util.Iterator;
  -import java.util.Stack;
  -
  -/** Manage a serialization, including keeping track of namespace mappings
  - * and element stacks.
  - *
  - * @author Glen Daniels (gdaniels@macromedia.com)
  - * @author Rich Scheuerle <scheu@us.ibm.com>
  +/**
  + * This interface describes the AXIS SerializationContext.
    */
  -public class SerializationContext
  -{
  -    static Category category =
  -            Category.getInstance(SerializationContext.class.getName());
  -
  -    public NSStack nsStack = new NSStack();
  -
  -    boolean writingStartTag = false;
  -    boolean onlyXML = true;
  -    int indent=0;
  -    boolean startOfDocument = true;
  -
  -    Stack elementStack = new Stack();
  -    Writer writer;
  -
  -    int lastPrefixIndex = 1;
  -
  -    private MessageContext msgContext;
  -
  -    /**
  -     * Should the XML be "pretty" printed on serialization?  If false, the
  -     * XML will be sent out verbatim.  If true, ignorable white space may be
  -     * inserted or removed.
  -     */
  -    private boolean pretty = false;
  -
  -    public boolean getPretty() {
  -        return pretty;
  -    }
  -
  -    public void setPretty(boolean pretty) {
  -        this.pretty = pretty;
  -    }
  -
  -    /**
  -     * Should I write out objects as multi-refs?
  -     *
  -     * !!! For now, this is an all-or-nothing flag.  Either ALL objects will
  -     * be written in-place as hrefs with the full serialization at the end
  -     * of the body, or we'll write everything inline (potentially repeating
  -     * serializations of identical objects).
  -     */
  -    private boolean doMultiRefs = false;
  -
  -    /**
  -     * Should I send an XML declaration?
  -     */
  -    private boolean sendXMLDecl = true;
  -
  -    /**
  -     * Should I send xsi:type attributes?
  -     */
  -    private boolean sendXSIType = true;
  -
  -    /**
  -     * A place to hold objects we cache for multi-ref serialization, and
  -     * remember the IDs we assigned them.
  -     */
  -    private HashMap multiRefValues = null;
  -    private int multiRefIndex = -1;
  -
  -    /**
  -     * These three variables are necessary to process multi-level object graphs for multi-ref
  -     * serialization. 
  -     * While writing out nested multi-ref objects (via outputMultiRef), we 
  -     * will fill the secondLevelObjects vector with any new objects encountered.
  -     * The outputMultiRefsFlag indicates whether we are currently within the
  -     * outputMultiRef() method (so that serialization() knows to update the 
  -     * secondLevelObjects vector).
  -     * The forceSer variable is the trigger to force actual serialization of the indicated object.
  -     */
  -    private HashSet secondLevelObjects = null;
  -    private Object forceSer = null;
  -    private boolean outputMultiRefsFlag = false;
  -    
  -    public SerializationContext(Writer writer)
  -    {
  -        this.writer = writer;
  -    }
  -    
  -    public SerializationContext(Writer writer, MessageContext msgContext)
  -    {
  -        this.writer = writer;
  -        this.msgContext = msgContext;
  -
  -        AxisEngine engine = null ;
  -        if ( msgContext != null ) {
  -            engine = msgContext.getAxisEngine();
  -            Boolean shouldSendDecl = (Boolean)engine.getOption(
  -                                                  AxisEngine.PROP_XML_DECL);
  -            if (shouldSendDecl != null)
  -                sendXMLDecl = shouldSendDecl.booleanValue();
  -            
  -            Boolean shouldSendMultiRefs = 
  -                  (Boolean)msgContext.getProperty(AxisEngine.PROP_DOMULTIREFS);
  -            
  -            if (shouldSendMultiRefs == null)
  -                shouldSendMultiRefs =
  -                        (Boolean)engine.getOption(AxisEngine.PROP_DOMULTIREFS);
  -            
  -            if (shouldSendMultiRefs != null)
  -                doMultiRefs = shouldSendMultiRefs.booleanValue();
  -
  -            // The SEND_TYPE_ATTR and PROP_SEND_XSI options indicate
  -            // whether the elements should have xsi:type attributes.
  -            // Only turn this off is the user tells us to
  -            if ( !msgContext.isPropertyTrue(Call.SEND_TYPE_ATTR, true ))
  -                sendXSIType = false ;
  -            
  -            Boolean opt = (Boolean)engine.getOption(AxisEngine.PROP_SEND_XSI);
  -            if ((opt != null) && (opt.equals(Boolean.FALSE))) {
  -                sendXSIType = false;
  -            }
  -        }
  -    }
  -    
  +public interface SerializationContext extends javax.xml.rpc.encoding.SerializationContext {
  +
  +
  +    /**
  +     * Serialize the indicated value as an element named qName.  The attributes object are 
  +     * additional attributes that will be serialized with the qName.  The value
  +     * could be serialized directly or could be serialized as an href (with the
  +     * actual serialize taking place later)
  +     * @param qName is the QName of the element
  +     * @param attributes are additional attributes
  +     * @param value is the object to serialize
  +     * @param javaType is the "real" type of the value.  For primitives, the value is the
  +     * associated java.lang class.  So the javaType is needed to know that the value 
  +     * is really a wrapped primitive.
  +     */
  +    public void serialize(QName qName, Attributes attributes, Object value, Class javaType) 
  +        throws IOException;
  +
  +    /**
  +     * Invoked to do the actual serialization of the qName (called by serialize above).
  +     * additional attributes that will be serialized with the qName. 
  +     * @param qName is the QName of the element
  +     * @param attributes are additional attributes
  +     * @param value is the object to serialize
  +     * @param javaType is the "real" type of the value.  For primitives, the value is the
  +     * associated java.lang class.  So the javaType is needed to know that the value 
  +     * is really a wrapped primitive.
  +     */
  +    public void serializeActual(QName qName, Attributes attributes, Object value, Class javaType)
  +        throws IOException;
  +
  +    /**
  +     * Obtains the type attribute that should be serialized and returns the new list of Attributes
  +     * @param attributes of the qname
  +     * @param type is the qname of the type
  +     * @return new list of Attributes
  +     */
  +    public Attributes setTypeAttribute(Attributes attributes, QName type);
  +
  +    /**
  +     * Convenience method to get the Serializer for a specific
  +     * java type
  +     * @param javaType is Class for a type to serialize
  +     * @return Serializer
  +     */ 
  +    public Serializer getSerializerForJavaType(Class javaType) ; 
  +
  +    /**
  +     * Get whether the serialization should be pretty printed.
  +     * @return true/false
  +     */
  +    public boolean getPretty();
  +
  +    /**
  +     * Indicate whether the serialization should be pretty printed.
  +     * @param pretty true/false
  +     */
  +    public void setPretty(boolean pretty);
  +
  +    /**
  +     * Set whether we are doing multirefs.
  +     * @param shouldDo true/false
  +     */ 
  +    public void setDoMultiRefs (boolean shouldDo);
  +
       /**
  -     * Set whether we are doing multirefs
  +     * Set whether or not we should write XML declarations.
  +     * @param sendDecl true/false
        */ 
  -    public void setDoMultiRefs (boolean shouldDo)
  -    {
  -        doMultiRefs = shouldDo;
  -    }
  +    public void setSendDecl(boolean sendDecl);
   
       /**
  -     * Set whether or not we should write XML declarations
  +     * Get whether or not to write xsi:type attributes.
  +     * @return true/false
        */ 
  -    public void setSendDecl(boolean sendDecl)
  -    {
  -        sendXMLDecl = sendDecl;
  -    }
  +    public boolean shouldSendXSIType();
   
       /**
  -     * Set whether or not to write xsi:type attributes
  +     * Get the TypeMapping we're using.
  +     * @return TypeMapping or null
        */ 
  -    public boolean shouldSendXSIType() {
  -        return sendXSIType;
  -    }
  +    public TypeMapping getTypeMapping();
   
       /**
  -     * Obtain a copy of the TypeMappingRegistry we're using
  +     * Get the TypeMappingRegistry we're using.
  +     * @return TypeMapping or null
        */ 
  -    public TypeMappingRegistry getTypeMappingRegistry()
  -    {
  -        if (msgContext == null)
  -            return null;
  -        
  -        return msgContext.getTypeMappingRegistry();
  -    }
  +    public TypeMappingRegistry getTypeMappingRegistry();
   
       /**
        * Get a prefix for a namespace URI.  This method will ALWAYS
  @@ -247,435 +166,100 @@
        * serialization, we return the previous prefix.  If it is not mapped,
        * we will add a new mapping and return a generated prefix of the form
        * "ns<num>".
  +     * @param uri is the namespace uri
  +     * @param defaultPrefix optional parameter which is the default prefix
  +     * @return prefix
        */ 
  -    public String getPrefixForURI(String uri)
  -    {
  -        return getPrefixForURI(uri, null);
  -    }
  -    
  +    public String getPrefixForURI(String uri);
  +    public String getPrefixForURI(String uri, String defaultPrefix);
  +
       /**
  -     * Return the current message
  -     */ 
  -    public Message getCurrentMessage()
  -    {
  -        if (msgContext == null)
  -            return null;
  -        return msgContext.getCurrentMessage();
  -    }
  +     * Register prefix for the indicated uri
  +     * @param prefix
  +     * @param uri is the namespace uri
  +     */
  +    public void registerPrefixForURI(String prefix, String uri);
   
       /**
  -     * Get a prefix for the given namespace URI.  If one has already been
  -     * defined in this serialization, use that.  Otherwise, map the passed
  -     * default prefix to the URI, and return that.  If a null default prefix
  -     * is passed, use one of the form "ns<num>"
  -     */ 
  -    public String getPrefixForURI(String uri, String defaultPrefix)
  -    {
  -        if ((uri == null) || (uri.equals("")))
  -            return null;
  -
  -        String prefix = nsStack.getPrefix(uri);
  -
  -        if (prefix == null && uri.equals(Constants.URI_SOAP_ENC)) {
  -            prefix = Constants.NSPREFIX_SOAP_ENC;
  -            registerPrefixForURI(prefix, uri);
  -        }
  -
  -        if (prefix == null) {
  -            if (defaultPrefix == null) {
  -                prefix = "ns" + lastPrefixIndex++;
  -            } else {
  -                prefix = defaultPrefix;
  -            }
  -            registerPrefixForURI(prefix, uri);
  -        }
  -
  -        return prefix;
  -    }
  -
  -    public void registerPrefixForURI(String prefix, String uri)
  -    {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("register00", prefix, uri));
  -        }
  -
  -        if ((uri != null) && (prefix != null)) {
  -            nsStack.add(uri, prefix);
  -        }
  -    }
  -
  -    public void endPrefix(String prefix)
  -    {
  -        // Do we need to do anything here?
  -    }
  -
  -    public String qName2String(QName qName)
  -    {
  -        String prefix = getPrefixForURI(qName.getNamespaceURI());
  -        return (((prefix != null)&&(!prefix.equals(""))) ? prefix + ":" : "") +
  -               qName.getLocalPart();
  -    }
  -
  -    public QName getQNameForClass(Class cls)
  -    {
  -        return getTypeMappingRegistry().getTypeQName(cls);
  -    }
  -
  -    /**
  -     * Classes which are known to not require multi-ref.  As multi-ref
  -     * requires additional parsing overhead and not all implementations
  -     * support this, only use this function when there is a possibility
  -     * of circular references.
  -     */
  -    public boolean isPrimitive(Object value)
  -    {
  -        if (value == null) return true;
  -
  -        Class type = value.getClass();
  -        if (type.isArray()) type = type.getComponentType();
  -
  -        if (String.class.isAssignableFrom(type)) return true;
  -        if (Number.class.isAssignableFrom(type)) return true;
  -        if (Boolean.class.isAssignableFrom(type)) return true;
  -        if (Date.class.isAssignableFrom(type)) return true;
  -        if (Element.class.isAssignableFrom(type)) return true;
  -        if (Hex.class.isAssignableFrom(type)) return true;
  -        if (type.isPrimitive()) return true;
  -        return false;
  -    }
  -
  -    public void serialize(QName qName, Attributes attributes, Object value)
  -        throws IOException
  -    {
  -        if (value == null) {
  -            // If the value is null, the element is
  -            // passed with xsi:nil="true" to indicate that no object is present.
  -            //
  -            // There are three approaches that could be taken...
  -            // 1) (Currently Implemented) Use xsi:nil="true".
  -            // 2) Emit an empty element.  (This would be deserialized incorrectly.)
  -            // 3) Don't emit an element.  (This could also cause deserialization problems.)
  -            AttributesImpl attrs = new AttributesImpl();
  -            if (attributes != null)
  -                attrs.setAttributes(attributes);
  -            attrs.addAttribute(Constants.URI_2001_SCHEMA_XSI, "nil", "xsi:nil",
  -                               "CDATA", "true");
  -            startElement(qName, attrs);
  -            endElement();
  -        }
  -
  -        Message msg= getCurrentMessage();
  -        if(null != msg){
  -            //Get attachments. returns null if no attachment support.
  -            Attachments attachments= getCurrentMessage().getAttachments();
  -
  -            if( null != attachments && attachments.isAttachment(value)){
  -             //Attachment support and this is an object that should be treated as an attachment.
  -
  -             //Allow an the attachment to do its own serialization.
  -              getTypeMappingRegistry().serialize(qName, attributes, value, this);
  -              
  -              //No need to add to mulitRefs. Attachment data stream handled by
  -              // the message;
  -              return;
  -            }
  -        }
  -
  -        // If multi-reference is enabled and this object value is not a primitive
  -        // and we are not forcing serialization of the object, then generate
  -        // an element href (and store the object for subsequent outputMultiRef 
  -        // processing.
  -        if (doMultiRefs && (value != forceSer) && !isPrimitive(value)) {
  -            if (multiRefIndex == -1)
  -                multiRefValues = new HashMap();
  -
  -            String href = (String)multiRefValues.get(value);
  -            if (href == null) {
  -                multiRefIndex++;
  -                href = "id" + multiRefIndex;
  -                multiRefValues.put(value, href);
  -
  -                /** Problem - if we're in the middle of writing out
  -                 * the multi-refs and hit another level of the
  -                 * object graph, we need to make sure this object
  -                 * will get written.  For now, add it to a list
  -                 * which we'll check each time we're done with
  -                 * outputMultiRefs().
  -                 */
  -                if (outputMultiRefsFlag) {
  -                    if (secondLevelObjects == null)
  -                        secondLevelObjects = new HashSet();
  -                    secondLevelObjects.add(value);
  -                }
  -            }
  -
  -            AttributesImpl attrs = new AttributesImpl();
  -            if (attributes != null)
  -                attrs.setAttributes(attributes);
  -            attrs.addAttribute("", Constants.ATTR_HREF, "href",
  -                               "CDATA", "#" + href);
  -
  -            startElement(qName, attrs);
  -            endElement();
  -            return;
  -        }
  -
  -        // The forceSer variable is set by outputMultiRefs to force
  -        // serialization of this object via the serialize(...) call
  -        // below.  However, if the forced object contains a self-refence, we
  -        // get into an infinite loop..which is why it is set back to null
  -        // before the actual serialization.
  -        if (value == forceSer)
  -            forceSer = null;
  -
  -        getTypeMappingRegistry().serialize(qName, attributes, value, this);
  -    }
  -
  -    public void outputMultiRefs() throws IOException
  -    {
  -        if (!doMultiRefs || (multiRefValues == null))
  -            return;
  -        outputMultiRefsFlag = true;
  -        AttributesImpl attrs = new AttributesImpl();
  -        attrs.addAttribute("","","","","");
  -
  -        // explicitly state that this attribute is not a root
  -        String prefix = getPrefixForURI(Constants.URI_SOAP_ENC);
  -        String root = prefix + ":root";
  -        attrs.addAttribute(Constants.URI_SOAP_ENC, Constants.ATTR_ROOT, root, 
  -                           "CDATA", "0");
  -
  -        Iterator i = ((HashMap)multiRefValues.clone()).keySet().iterator();
  -        while (i.hasNext()) {
  -            while (i.hasNext()) {
  -                Object val = i.next();
  -                String id = (String)multiRefValues.get(val);
  -                attrs.setAttribute(0, "", Constants.ATTR_ID, "id", "CDATA",
  -                                   id);
  -                forceSer = val;
  -                serialize(new QName("","multiRef"), attrs, val);
  -            }
  -
  -            if (secondLevelObjects != null) {
  -                i = secondLevelObjects.iterator();
  -                secondLevelObjects = null;
  -            }
  -        }
  -        forceSer = null;
  -        outputMultiRefsFlag = false;
  -    }
  -
  -    public void startElement(QName qName, Attributes attributes)
  -        throws IOException
  -    {
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("startElem00",
  -                    "[" + qName.getNamespaceURI() + "]:" + qName.getLocalPart()));
  -        }
  -
  -        if (startOfDocument && sendXMLDecl) {
  -            writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  -            startOfDocument = false;
  -        }
  -
  -        if (writingStartTag) {
  -            writer.write(">");
  -            if (pretty) writer.write("\n");
  -            indent++;
  -        }
  -
  -        if (pretty) for (int i=0; i<indent; i++) writer.write(' ');
  -        String elementQName = qName2String(qName);
  -        writer.write("<");
  -
  -        writer.write(elementQName);
  -
  -        if (attributes != null) {
  -            for (int i = 0; i < attributes.getLength(); i++) {
  -                String qname = attributes.getQName(i);
  -                writer.write(" ");
  -
  -                String prefix = "";
  -                String uri = attributes.getURI(i);
  -                if (uri != null && !uri.equals("")) {
  -                    if (qname.equals("")) {
  -                        // If qname isn't set, generate one
  -                        prefix = getPrefixForURI(uri);
  -                    } else {
  -                        // If it is, make sure the prefix looks reasonable.
  -                        int idx = qname.indexOf(':');
  -                        if (idx > -1) {
  -                            prefix = qname.substring(0, idx);
  -                            prefix = getPrefixForURI(uri,
  -                                                     prefix);
  -                        }
  -                    }
  -                    if (!prefix.equals("")) {
  -                        qname = prefix + ":" + attributes.getLocalName(i);
  -                    } else {
  -                        qname = attributes.getLocalName(i);
  -                    }
  -                } else {
  -                    qname = attributes.getLocalName(i);
  -                    if(qname == null)
  -                        qname = attributes.getQName(i);
  -                }
  -
  -                writer.write(qname);
  -                writer.write("=\"");
  -                writer.write(XMLUtils.xmlEncodeString(attributes.getValue(i)));
  -                writer.write("\"");
  -            }
  -        }
  -
  -        ArrayList currentMappings = nsStack.peek();
  -        for (int i = 0; i < currentMappings.size(); i++) {
  -            Mapping map = (Mapping)currentMappings.get(i);
  -            writer.write(" xmlns");
  -            if (!map.getPrefix().equals("")) {
  -                writer.write(":");
  -                writer.write(map.getPrefix());
  -            }
  -            writer.write("=\"");
  -            writer.write(map.getNamespaceURI());
  -            writer.write("\"");
  -        }
  -
  -        writingStartTag = true;
  -
  -        elementStack.push(elementQName);
  -        nsStack.push();
  -
  -        writer.flush();
  -        onlyXML=true;
  -    }
  -
  -    /**
  -     * Convenience method for writing an element with no structure inside it.
  -     * (this could be optimzed later to share logic with startElement())
  -     *
  -     * @param qName the qualified name of the new element
  -     * @param attributes any attributes which should be written on the element
  -     * @exception IOException if there is any trouble
  -     */
  -    public void writeElement(QName qName, Attributes attributes)
  -        throws IOException
  -    {
  -        startElement(qName, attributes);
  -        endElement();
  -    }
  -
  -    public void endElement()
  -        throws IOException
  -    {
  -        String elementQName = (String)elementStack.pop();
  -
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("endElem00", "" + elementQName));
  -        }
  -
  -        nsStack.pop();
  -        nsStack.peek().clear();
  -
  -        if (writingStartTag) {
  -            writer.write("/>");
  -            if (pretty) writer.write("\n");
  -            writingStartTag = false;
  -            return;
  -        }
  -
  -        if (onlyXML) {
  -            indent--;
  -            if (pretty) for (int i=0; i<indent; i++) writer.write(' ');
  -        }
  -        writer.write("</");
  -        writer.write(elementQName);
  -        writer.write('>');
  -        if (pretty) if (indent>0) writer.write('\n');
  -        writer.flush();
  -        onlyXML=true;
  -    }
  -
  -    public void writeChars(char [] p1, int p2, int p3)
  -        throws IOException
  -    {
  -        if (writingStartTag) {
  -            writer.write(">");
  -            writingStartTag = false;
  -        }
  -        writeSafeString(String.valueOf(p1,p2,p3));
  -        writer.flush();
  -        onlyXML=false;
  -    }
  -
  -    public void writeString(String string)
  -        throws IOException
  -    {
  -        if (writingStartTag) {
  -            writer.write(">");
  -            writingStartTag = false;
  -        }
  -        writer.write(string);
  -        writer.flush();
  -        onlyXML=false;
  -    }
  -
  -    public void writeSafeString(String string)
  -        throws IOException
  -    {
  -        writeString(XMLUtils.xmlEncodeString(string));
  -    }
  -
  -    /** Output a DOM representation to a SerializationContext
  -     */
  -    public void writeDOMElement(Element el)
  -        throws IOException
  -    {
  -        AttributesImpl attributes = null;
  -        NamedNodeMap attrMap = el.getAttributes();
  -
  -        if (attrMap.getLength() > 0) {
  -            attributes = new AttributesImpl();
  -            for (int i = 0; i < attrMap.getLength(); i++) {
  -                Attr attr = (Attr)attrMap.item(i);
  -                String tmp = attr.getNamespaceURI();
  -                if ( tmp != null && tmp.equals(Constants.NS_URI_XMLNS) ) {
  -                    String prefix = attr.getLocalName();
  -                    if (prefix != null) {
  -                        if (prefix.equals("xmlns"))
  -                            prefix = "";
  -                        String nsURI = attr.getValue();
  -                        registerPrefixForURI(prefix, nsURI);
  -                    }
  -                    continue;
  -                }
  -
  -                attributes.addAttribute(attr.getNamespaceURI(),
  -                                        attr.getLocalName(),
  -                                        attr.getName(),
  -                                        "CDATA", attr.getValue());
  -            }
  -        }
  -
  -        String namespaceURI = el.getNamespaceURI();
  -        String localPart = el.getLocalName();
  -        if(namespaceURI == null || namespaceURI.length()==0)
  -            localPart = el.getNodeName();
  -        QName qName = new QName(namespaceURI, localPart);
  -
  -        startElement(qName, attributes);
  -
  -        NodeList children = el.getChildNodes();
  -        for (int i = 0; i < children.getLength(); i++) {
  -            Node child = children.item(i);
  -            if (child instanceof Element) {
  -                writeDOMElement((Element)child);
  -            } else if (child instanceof Text) {
  -                writeSafeString(((Text)child).getData());
  -            }
  -        }
  +     * Get the current message.
  +     * @return Message
  +     */
  +    public Message getCurrentMessage();
   
  -        endElement();
  -    }
  +    /** 
  +     * Convert QName to a string of the form <prefix>:<localpart>
  +     * @param QName
  +     * @return prefixed qname representation for serialization.
  +     */
  +    public String qName2String(QName qName);
   
  +    /**
  +     * Get the QName associated with the specified class.
  +     * @param Class of an object requiring serialization.
  +     * @return appropriate QName associated with the class.
  +     */
  +    public QName getQNameForClass(Class cls);
  +
  +    /**
  +     * Indicates whether the object should be interpretted as a primitive
  +     * for the purposes of multi-ref processing.  A primitive value
  +     * is serialized directly instead of using id/href pairs.  Thus 
  +     * primitive serialization/deserialization is slightly faster.
  +     * @param value to be serialized
  +     * @param javaType is the "real" java type of value.  Used to distinguish
  +     * between java primitives and their wrapper classes.
  +     * @return true/false
  +     */
  +    public boolean isPrimitive(Object value, Class javaType);
  +
  +    /**
  +     * The serialize method uses hrefs to reference all non-primitive
  +     * values.  These values are stored and serialized by calling
  +     * outputMultiRefs after the serialize method completes.
  +     */
  +    public void outputMultiRefs() throws IOException;
  +
  +    /**
  +     * Writes (using the Writer) the start tag for element QName along with the
  +     * indicated attributes and namespace mappings.
  +     * @param qName is the name of the element
  +     * @param attributes are the attributes to write
  +     */
  +    public void startElement(QName qName, Attributes attributes) throws IOException;
  +
  +    /**
  +     * Writes the end element tag for the open element.
  +     **/
  +    public void endElement()  throws IOException;
  +
  +    /**
  +     * Convenience operation to write out (to Writer) the characters
  +     * in p1 starting at index p2 for length p3.
  +     * @param p1 character array to write
  +     * @param p2 starting index in array
  +     * @param p3 length to write
  +     */
  +    public void writeChars(char [] p1, int p2, int p3) throws IOException;;
  +
  +    /**
  +     * Convenience operation to write out (to Writer) the String
  +     * @param string is the String to write.
  +     */
  +    public void writeString(String string) throws IOException;
  +
  +    /**
  +     * Convenience operation to write out (to Writer) the String
  +     * properly encoded with xml entities (like &amp)
  +     * @param string is the String to write.
  +     */
  +    public void writeSafeString(String string) throws IOException;
  +
  +    /** 
  +     * Output a DOM representation to a SerializationContext
  +     * @param el is a DOM Element
  +     */
  +    public void writeDOMElement(Element el) throws IOException;
  +                      
   }
  +
  +
  
  
  
  1.13.4.1  +25 -8     xml-axis/java/src/org/apache/axis/encoding/Serializer.java
  
  Index: Serializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Serializer.java,v
  retrieving revision 1.13
  retrieving revision 1.13.4.1
  diff -u -r1.13 -r1.13.4.1
  --- Serializer.java	30 Oct 2001 16:46:37 -0000	1.13
  +++ Serializer.java	28 Jan 2002 06:43:01 -0000	1.13.4.1
  @@ -10,7 +10,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    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
  @@ -18,7 +18,7 @@
    *    distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  + *    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,
  @@ -26,7 +26,7 @@
    *
    * 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 
  + *    software without prior written permission. For written
    *    permission, please contact apache@apache.org.
    *
    * 5. Products derived from this software may not be called "Apache",
  @@ -53,21 +53,38 @@
    * <http://www.apache.org/>.
    */
   
  +
   package org.apache.axis.encoding;
   
  -//import org.apache.axis.message.Message;
  -//import org.apache.axis.message.MessageElement;
  -//import org.apache.axis.utils.NSStack;
   import org.xml.sax.Attributes;
   
   import javax.xml.rpc.namespace.QName;
   import java.io.IOException;
   
   /**
  - * @author James Snell (jasnell@us.ibm.com)
  + * This interface describes the AXIS Serializer.
  + * An Axis compliant Serializer must provide one or more 
  + * of the following methods:
  + *
  + * public <constructor>(Class javaType, QName xmlType)
  + * public <constructor>()
  + *
  + * This will allow for construction of generic factories that introspect the class 
  + * to determine how to construct a deserializer.
  + * The xmlType, javaType arguments are filled in with the values known by the factory. 
    */
  -public interface Serializer extends java.io.Serializable { 
  +public interface Serializer extends javax.xml.rpc.encoding.Serializer {
  +    /**
  +     * Serialize an element named name, with the indicated attributes 
  +     * and value.  
  +     * @param name is the element name
  +     * @param attributes are the attributes...serialize is free to add more.
  +     * @param value is the value
  +     * @param context is the SerializationContext
  +     */
       public void serialize(QName name, Attributes attributes,
                             Object value, SerializationContext context)
           throws IOException;
   }
  +
  +
  
  
  
  1.16.4.1  +1 -1      xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java
  
  Index: ServiceDescription.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java,v
  retrieving revision 1.16
  retrieving revision 1.16.4.1
  diff -u -r1.16 -r1.16.4.1
  --- ServiceDescription.java	30 Oct 2001 14:19:29 -0000	1.16
  +++ ServiceDescription.java	28 Jan 2002 06:43:01 -0000	1.16.4.1
  @@ -109,7 +109,7 @@
           this.serviceIsRPC = isRPC;
   
           // For RPC, default to section 5 encoding
  -        if (isRPC) encodingStyleURI = Constants.URI_SOAP_ENC;
  +        if (isRPC) encodingStyleURI = Constants.URI_CURRENT_SOAP_ENC;
       }
       
       public boolean isRPC()
  
  
  
  1.47.2.1  +12 -333   xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistry.java
  
  Index: TypeMappingRegistry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistry.java,v
  retrieving revision 1.47
  retrieving revision 1.47.2.1
  diff -u -r1.47 -r1.47.2.1
  --- TypeMappingRegistry.java	14 Jan 2002 17:31:36 -0000	1.47
  +++ TypeMappingRegistry.java	28 Jan 2002 06:43:01 -0000	1.47.2.1
  @@ -10,7 +10,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    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
  @@ -18,7 +18,7 @@
    *    distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  + *    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,
  @@ -26,7 +26,7 @@
    *
    * 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 
  + *    software without prior written permission. For written
    *    permission, please contact apache@apache.org.
    *
    * 5. Products derived from this software may not be called "Apache",
  @@ -53,340 +53,19 @@
    * <http://www.apache.org/>.
    */
   
  -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.w3c.dom.Document;
  -import org.w3c.dom.Element;
  -import org.xml.sax.Attributes;
  -import org.xml.sax.helpers.AttributesImpl;
   
  -import javax.xml.rpc.namespace.QName;
  -import java.beans.IntrospectionException;
  -import java.io.IOException;
  -import java.io.PrintStream;
  -import java.io.Serializable;
  -import java.util.Enumeration;
  -import java.util.Hashtable;
  -import java.util.ArrayList;
  +package org.apache.axis.encoding;
   
   /**
  - * @author James Snell (jasnell@us.ibm.com)
  - * @author Sam Ruby (rubys@us.ibm.com)
  + * This interface describes the AXIS TypeMappingRegistry.
    */
  -public class TypeMappingRegistry implements Serializer { 
  -    /**
  -     * Default constructor (transient registry)
  -     */
  -    public TypeMappingRegistry() {}
  -
  -    static class SerializerDescriptor implements Serializable {
  -        QName typeQName;
  -        Serializer serializer;
  -        SerializerDescriptor(QName typeQName, Serializer serializer)
  -        {
  -            this.typeQName = typeQName;
  -            this.serializer = serializer;
  -        }
  -    }
  -
  -    static class DeserializerDescriptor implements Serializable {
  -        Class cls;
  -        DeserializerFactory factory;
  -        DeserializerDescriptor(Class cls, DeserializerFactory factory)
  -           throws IntrospectionException
  -        {
  -            this.cls = cls;
  -            this.factory = factory;
  -            factory.setJavaClass(cls);
  -        }
  -    }
  -    
  -    TypeMappingRegistry parent = null;
  -    Hashtable s;
  -    Hashtable d;
  -    
  -    public boolean isEmpty()
  -    {
  -        return (d == null || d.isEmpty());
  -    }
  -    
  +public interface TypeMappingRegistry extends javax.xml.rpc.encoding.TypeMappingRegistry {
       /**
  -     * Define a "parent" TypeMappingRegistry that will be used to service
  -     * any requests that are not satisfied by this this instance.  This
  -     * enables a chain of TypeMappingRegistries to be employed that contain,
  -     * say, a transient set of types, followed by a persistent set of
  -     * deployed types, followed by the system defined SOAPTypes
  -     */
  -    public void setParent(TypeMappingRegistry parent) {
  -        this.parent = parent;
  -        
  -        // debug assertions: every tmr must have exactly one
  -        // SOAPTypeMappingRegistry at the top.
  -        if (parent == null)
  -            new Exception(JavaUtils.getMessage("nullParent00")).printStackTrace();
  -        if (this instanceof SOAPTypeMappingRegistry)
  -            new Exception(JavaUtils.getMessage("withParent00")).printStackTrace();
  -        for (TypeMappingRegistry t = parent; t!=null; t=t.getParent())
  -            if (t instanceof SOAPTypeMappingRegistry) return;
  -        new Exception(JavaUtils.getMessage("noParent00")).printStackTrace();
  -    }
  -
  -    public TypeMappingRegistry getParent() {
  -        return parent;
  -    }
  -
  -    public void addSerializer(Class _class,
  -                              QName qName,
  -                              Serializer serializer) {
  -        if (s == null) s = new Hashtable();
  -        if (serializer instanceof BeanSerializer) {
  -            ((BeanSerializer)serializer).setCls(_class);
  -        }
  -        s.put(_class, new SerializerDescriptor(qName, serializer));
  -    }
  -    
  -    public void addDeserializerFactory(QName qname,
  -                                       Class _class,
  -                                       DeserializerFactory deserializerFactory)
  -        throws IntrospectionException
  -    {
  -        if (d == null) d= new Hashtable();
  -        d.put(qname, new DeserializerDescriptor(_class, deserializerFactory));
  -    }
  -
  -    public Serializer getSerializer(Class _class) {
  -        if (s != null) {
  -            SerializerDescriptor desc = (SerializerDescriptor)s.get(_class);
  -            if (desc != null) return desc.serializer;
  -        }
  -        if (parent != null) return parent.getSerializer(_class);
  -        return null;
  -    }
  -    
  -    public QName getTypeQName(Class _class) {
  -        if (s != null) {
  -            SerializerDescriptor desc = (SerializerDescriptor)s.get(_class);
  -            if (desc != null) return desc.typeQName;
  -        }
  -        if (parent != null) return parent.getTypeQName(_class);
  -        return null;
  -    }
  -    
  -    public Class getClassForQName(QName type) {
  -        if (d != null) {
  -            DeserializerDescriptor desc = (DeserializerDescriptor)d.get(type);
  -            if (desc != null) return desc.cls;
  -        }
  -        if (parent != null) return parent.getClassForQName(type);
  -        return null;
  -    }
  -    
  -    public Deserializer getDeserializer(QName qname) {
  -        if (qname == null)
  -            return null;
  -        
  -        if (d != null) {
  -            DeserializerDescriptor desc = (DeserializerDescriptor)d.get(qname);
  -            if ((desc != null) && (desc.factory != null))
  -               return desc.factory.getDeserializer();
  -        }
  -        if (parent != null) return parent.getDeserializer(qname);
  -        return null;
  -    }
  -    
  -    public void removeSerializer(Class _class) {
  -        if (s != null) s.remove(_class);
  -    }
  -    
  -    public void removeDeserializer(QName qname) {
  -        if (d != null) d.remove(qname);
  -    }
  -    
  -    public boolean hasSerializer(Class _class) {
  -        if (s != null && s.containsKey(_class)) return true;
  -        if (parent != null) return parent.hasSerializer(_class);
  -        return false;
  -    }
  -    
  -    public boolean hasDeserializer(QName qname) {
  -        if (d != null && d.containsKey(qname)) return true;
  -        if (parent != null) return parent.hasDeserializer(qname);
  -        return false;
  -    }
  -    
  -    public Attributes setTypeAttribute(Attributes attributes, QName type,
  -                                       SerializationContext context)
  -    {
  -        if (type == null ||
  -            !context.shouldSendXSIType() ||
  -            ((attributes != null) &&
  -             (attributes.getIndex(Constants.URI_CURRENT_SCHEMA_XSI,
  -                                "type") != -1)))
  -            return attributes;
  -        
  -        AttributesImpl attrs = new AttributesImpl();
  -        if (attributes != null)
  -            attrs.setAttributes(attributes);
  -        
  -        String prefix = context.
  -                           getPrefixForURI(Constants.URI_CURRENT_SCHEMA_XSI,
  -                                           "xsi");
  -
  -        attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI,
  -                           "type",
  -                           prefix + ":type",
  -                           "CDATA", context.qName2String(type));
  -        return attrs;
  -    }
  -    
  -    public void serialize(QName name, Attributes attributes,
  -                          Object value, SerializationContext context)
  -        throws IOException
  -    {
  -        if (value != null) {
  -            Serializer  ser     = null ;
  -            Class       _class  = value.getClass();
  -
  -            // Use an ArrayList and remove(0) because it MUST be 
  -            // first-in-first-out
  -            ArrayList  classes = null;
  -            
  -            while( _class != null ) {
  -                if ( (ser = getSerializer(_class)) != null ) break ;
  -                if ( classes == null ) classes = new ArrayList();
  -                Class[] ifaces = _class.getInterfaces();
  -                for (int i = 0 ; i < ifaces.length ; i++ ) 
  -                    classes.add( ifaces[i] );
  -                _class = _class.getSuperclass();
  -                
  -                // Add any non-null (and non-Object) class.  We skip
  -                // the Object class because if we reach that then
  -                // there's an error and this error message return 
  -                // here is better than the one returned by the
  -                // ObjSerializer.
  -                if ( _class != null &&
  -                        !_class.getName().equals("java.lang.Object")) 
  -                    classes.add( _class );
  -                
  -                _class = (!classes.isEmpty()) ? (Class) classes.remove( 0 ) :
  -                            null;
  -            }
  -
  -            if ( ser != null ) {
  -                QName type = getTypeQName(_class);
  -                attributes = setTypeAttribute(attributes, type, context);
  -                ser.serialize(name, attributes, value, context);
  -                return;
  -            }
  -
  -            throw new IOException(JavaUtils.getMessage("noSerializer00",
  -                    value.getClass().getName(), "" + this));
  -        }
  -        // !!! Write out a generic null, or get type info from somewhere else?
  -    }
  -    
  -    public void dump(PrintStream out, String header) {
  -        out.println(header);
  -        out.println("  Deserializers:");
  -        if (d != null) {
  -            java.util.Enumeration e = d.keys();
  -            while (e.hasMoreElements()) {
  -                Object key = e.nextElement();
  -                DeserializerDescriptor desc = (DeserializerDescriptor)d.get(key);
  -                String classname = (desc.cls != null) ? desc.cls.getName() : "null";
  -                out.println("    " + key + " => " + classname);
  -            }
  -        }
  -        if (parent != null)
  -            parent.dump(out, "Parent");
  -    }
  -
  -    public void dumpToSerializationContext(SerializationContext ctx)
  -      throws IOException
  -    {
  -        if (d == null) {
  -            return;
  -        }
  -        
  -        Enumeration enum = d.keys();
  -        while (enum.hasMoreElements()) {
  -            QName typeQName = (QName)enum.nextElement();
  -            DeserializerDescriptor desc = 
  -                                    (DeserializerDescriptor)d.get(typeQName);
  -            if (desc.cls == null)
  -                continue;
  -
  -            AttributesImpl attrs = new AttributesImpl();
  -            attrs.addAttribute("", "qname", "qname",
  -                               "CDATA", ctx.qName2String(typeQName));
  -            attrs.addAttribute("", "languageSpecificType",
  -                               "languageSpecificType",
  -                               "CDATA", "java:" + desc.cls.getName());
  -
  -            QName elementQName;
  -
  -            if (desc.factory.getClass() ==
  -                    BeanSerializer.BeanDeserFactory.class) {
  -                elementQName = WSDDConstants.BEANMAPPING_QNAME;
  -            } else {
  -                elementQName = WSDDConstants.TYPE_QNAME;
  -
  -                String dser = desc.factory.getClass().getName();
  -                attrs.addAttribute("", "deserializer", "deserializer",
  -                                   "CDATA", dser);
  -
  -                SerializerDescriptor serDesc =
  -                        (SerializerDescriptor)s.get(desc.cls);
  -                if (serDesc != null) {
  -                    attrs.addAttribute("", "serializer", "serializer",
  -                                       "CDATA",
  -                                       serDesc.serializer.
  -                                                    getClass().getName());
  -                }
  -            }
  -
  -            ctx.startElement(elementQName, attrs);
  -            ctx.endElement();
  -        }
  -    }
  -
  -    public void dumpToElement(Element root)
  -    {
  -        if ((d == null) || (parent == null)) {
  -            return;
  -        }
  -
  -        Document doc = root.getOwnerDocument();
  -        
  -        Enumeration enum = d.keys();
  -        while (enum.hasMoreElements()) {
  -            QName typeQName = (QName)enum.nextElement();
  -            DeserializerDescriptor desc = 
  -                                   (DeserializerDescriptor)d.get(typeQName);
  -            if (desc.cls == null)
  -                continue;
  -            
  -            Element mapEl = doc.createElementNS("", "typeMapping");
  +     * Return the default TypeMapping
  +     * (According to the JAX-RPC rep, this will be in javax.xml.rpc.encoding.TypeMappingRegistry for version 0.7)
  +     * @return TypeMapping or null
  +     **/
  +    public javax.xml.rpc.encoding.TypeMapping getDefaultTypeMapping();
  +}
   
  -            mapEl.setAttribute("type", "ns:" + typeQName.getLocalPart());
  -            mapEl.setAttribute("xmlns:ns", typeQName.getNamespaceURI());
  -            
  -            mapEl.setAttribute("classname", desc.cls.getName());
  -            
  -            String dser = desc.factory.getClass().getName();
  -            mapEl.setAttribute("deserializerFactory", dser);
  -            
  -            SerializerDescriptor serDesc =
  -                                      (SerializerDescriptor)s.get(desc.cls);
  -            if (serDesc != null) {
  -                mapEl.setAttribute("serializer", serDesc.serializer.
  -                                                      getClass().getName());
  -            }
   
  -            root.appendChild(mapEl);
  -        }
  -    }
  -}
  
  
  
  1.12.2.1  +28 -29    xml-axis/java/src/org/apache/axis/encoding/XMLType.java
  
  Index: XMLType.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/XMLType.java,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- XMLType.java	4 Jan 2002 22:30:03 -0000	1.12
  +++ XMLType.java	28 Jan 2002 06:43:01 -0000	1.12.2.1
  @@ -66,45 +66,44 @@
   
   
   public class XMLType {
  -    public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string");
  -    public static final QName XSD_BOOLEAN = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "boolean");
  -    public static final QName XSD_DOUBLE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "double");
  -    public static final QName XSD_FLOAT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "float");
  -    public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int");
  -    public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long");
  -    public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short");
  -    public static final QName XSD_BYTE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "byte");
  -    public static final QName XSD_DECIMAL = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "decimal");
  -    public static final QName XSD_BASE64 = new QName(Constants.URI_2001_SCHEMA_XSD, "base64Binary");
  -//    public static final QName XSD_HEXBIN = new QName(Constants.URI_2001_SCHEMA_XSD, "hexBinary");
  -    public static final QName XSD_ANYTYPE = new QName(Constants.URI_2001_SCHEMA_XSD, "anyType");
  -    public static final QName SOAP_BASE64 = new QName(Constants.URI_SOAP_ENC, "base64");
  +    // Rich Scheuerle Note:  Shouldn't this class be phased out...The constants in Constants
  +    // should be used.
  +    public static final QName XSD_STRING = Constants.XSD_STRING;
  +    public static final QName XSD_BOOLEAN = Constants.XSD_BOOLEAN;
  +    public static final QName XSD_DOUBLE = Constants.XSD_DOUBLE;
  +    public static final QName XSD_FLOAT = Constants.XSD_FLOAT;
  +    public static final QName XSD_INT = Constants.XSD_INT;
  +    public static final QName XSD_LONG = Constants.XSD_LONG;
  +    public static final QName XSD_SHORT = Constants.XSD_SHORT;
  +    public static final QName XSD_BYTE = Constants.XSD_BYTE;
  +    public static final QName XSD_DECIMAL = Constants.XSD_DECIMAL;
  +    public static final QName XSD_BASE64 = Constants.XSD_BASE64;
  +    public static final QName XSD_ANYTYPE = Constants.XSD_ANYTYPE;
  +    public static final QName SOAP_BASE64 = Constants.SOAP_BASE64;
   
  -    public static final QName SOAP_STRING = new QName(Constants.URI_SOAP_ENC, "string");
  -    public static final QName SOAP_BOOLEAN = new QName(Constants.URI_SOAP_ENC, "boolean");
  -    public static final QName SOAP_DOUBLE = new QName(Constants.URI_SOAP_ENC, "double");
  -    public static final QName SOAP_FLOAT = new QName(Constants.URI_SOAP_ENC, "float");
  -    public static final QName SOAP_INT = new QName(Constants.URI_SOAP_ENC, "int");
  -    public static final QName SOAP_LONG = new QName(Constants.URI_SOAP_ENC, "long");
  -    public static final QName SOAP_SHORT = new QName(Constants.URI_SOAP_ENC, "short");
  -    public static final QName SOAP_BYTE = new QName(Constants.URI_SOAP_ENC, "byte");
  -    public static final QName SOAP_ARRAY = new QName(Constants.URI_SOAP_ENC, "Array");
  +    public static final QName SOAP_STRING = Constants.SOAP_STRING;
  +    public static final QName SOAP_BOOLEAN = Constants.SOAP_BOOLEAN;
  +    public static final QName SOAP_DOUBLE = Constants.SOAP_DOUBLE;
  +    public static final QName SOAP_FLOAT = Constants.SOAP_FLOAT;
  +    public static final QName SOAP_INT = Constants.SOAP_INT;
  +    public static final QName SOAP_LONG = Constants.SOAP_LONG;
  +    public static final QName SOAP_SHORT = Constants.SOAP_SHORT;
  +    public static final QName SOAP_BYTE = Constants.SOAP_BYTE;
  +    public static final QName SOAP_ARRAY = Constants.SOAP_ARRAY;
   
  -    public static final QName TYPE_MAP = new QName("http://xml.apache.org/xml-soap", "Map");
  -    public static final QName TYPE_ELEMENT = new QName("http://xml.apache.org/xml-soap", "Element");
  +    public static final QName SOAP_MAP = Constants.SOAP_MAP;
  +    public static final QName SOAP_ELEMENT = Constants.SOAP_ELEMENT;                                
   
       public static       QName XSD_DATE;
       
       static {
           if (Constants.URI_CURRENT_SCHEMA_XSD.equals(
                   Constants.URI_1999_SCHEMA_XSD))
  -            XSD_DATE =
  -                    new QName(Constants.URI_CURRENT_SCHEMA_XSD, "timeInstant");
  +            XSD_DATE = Constants.XSD_DATE2;
           else if (Constants.URI_CURRENT_SCHEMA_XSD.equals(
                   Constants.URI_2000_SCHEMA_XSD))
  -            XSD_DATE =
  -                    new QName(Constants.URI_CURRENT_SCHEMA_XSD, "timeInstant");
  +            XSD_DATE = Constants.XSD_DATE3;
           else
  -            XSD_DATE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "dateTime");
  +            XSD_DATE = Constants.XSD_DATE;
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/Callback.java
  
  Index: Callback.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Callback.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/src/org/apache/axis/encoding/CallbackTarget.java
  
  Index: CallbackTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/CallbackTarget.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +2 -1      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- DeserializationContextImpl.java	26 Jan 2002 02:40:33 -0000	1.1
  +++ DeserializationContextImpl.java	28 Jan 2002 06:43:00 -0000	1.1.2.1
  @@ -398,7 +398,8 @@
        */
       public TypeMapping getTypeMapping()
       {
  -        return (TypeMapping) msgContext.getTypeMappingRegistry().getTypeMapping(Constants.URI_CURRENT_SOAP_ENC);
  +        TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry();
  +        return (TypeMapping) tmr.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC);
       }
       
       /**
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java
  
  Index: DeserializerImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.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/src/org/apache/axis/encoding/DeserializerTarget.java
  
  Index: DeserializerTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerTarget.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/src/org/apache/axis/encoding/FieldTarget.java
  
  Index: FieldTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/FieldTarget.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/src/org/apache/axis/encoding/MethodTarget.java
  
  Index: MethodTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/MethodTarget.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/SerializerFactory.java
  
  Index: SerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializerFactory.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/src/org/apache/axis/encoding/Target.java
  
  Index: Target.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Target.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/src/org/apache/axis/encoding/TypeMapping.java
  
  Index: TypeMapping.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMapping.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java
  
  Index: ArrayDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.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/src/org/apache/axis/encoding/ser/ArrayDeserializerFactory.java
  
  Index: ArrayDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializerFactory.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/src/org/apache/axis/encoding/ser/ArraySerializer.java
  
  Index: ArraySerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/Base64Deserializer.java
  
  Index: Base64Deserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64Deserializer.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/src/org/apache/axis/encoding/ser/Base64DeserializerFactory.java
  
  Index: Base64DeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64DeserializerFactory.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/src/org/apache/axis/encoding/ser/Base64Serializer.java
  
  Index: Base64Serializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64Serializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java
  
  Index: BeanDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.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/src/org/apache/axis/encoding/ser/BeanDeserializerFactory.java
  
  Index: BeanDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializerFactory.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/src/org/apache/axis/encoding/ser/BeanPropertyDescriptor.java
  
  Index: BeanPropertyDescriptor.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyDescriptor.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/src/org/apache/axis/encoding/ser/BeanPropertyTarget.java
  
  Index: BeanPropertyTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyTarget.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializer.java
  
  Index: DateDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializer.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/src/org/apache/axis/encoding/ser/DateDeserializerFactory.java
  
  Index: DateDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializerFactory.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/src/org/apache/axis/encoding/ser/DateSerializer.java
  
  Index: DateSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializer.java
  
  Index: ElementDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializer.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/src/org/apache/axis/encoding/ser/ElementDeserializerFactory.java
  
  Index: ElementDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializerFactory.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/src/org/apache/axis/encoding/ser/ElementSerializer.java
  
  Index: ElementSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializer.java
  
  Index: EnumDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializer.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/src/org/apache/axis/encoding/ser/EnumDeserializerFactory.java
  
  Index: EnumDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializerFactory.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/src/org/apache/axis/encoding/ser/EnumSerializer.java
  
  Index: EnumSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializer.java
  
  Index: HexDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializer.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/src/org/apache/axis/encoding/ser/HexDeserializerFactory.java
  
  Index: HexDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializerFactory.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/src/org/apache/axis/encoding/ser/HexSerializer.java
  
  Index: HexSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializer.java
  
  Index: JAFDataHandlerDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializer.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/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializerFactory.java
  
  Index: JAFDataHandlerDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializerFactory.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/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.java
  
  Index: JAFDataHandlerSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializer.java
  
  Index: MapDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializer.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/src/org/apache/axis/encoding/ser/MapDeserializerFactory.java
  
  Index: MapDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializerFactory.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/src/org/apache/axis/encoding/ser/MapSerializer.java
  
  Index: MapSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializer.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/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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      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.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  1.1.2.1   +0 -0      xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializerFactory.java
  
  Index: SimpleDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializerFactory.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/src/org/apache/axis/encoding/ser/SimpleNonPrimitiveSerializerFactory.java
  
  Index: SimpleNonPrimitiveSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleNonPrimitiveSerializerFactory.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/src/org/apache/axis/encoding/ser/SimplePrimitiveSerializerFactory.java
  
  Index: SimplePrimitiveSerializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimplePrimitiveSerializerFactory.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/src/org/apache/axis/encoding/ser/SimpleSerializer.java
  
  Index: SimpleSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleSerializer.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/src/org/apache/axis/encoding/ser/VectorDeserializer.java
  
  Index: VectorDeserializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializer.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/src/org/apache/axis/encoding/ser/VectorDeserializerFactory.java
  
  Index: VectorDeserializerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializerFactory.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.28.2.1  +1 -2      xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java
  
  Index: DebugHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java,v
  retrieving revision 1.28
  retrieving revision 1.28.2.1
  diff -u -r1.28 -r1.28.2.1
  --- DebugHandler.java	10 Jan 2002 20:00:59 -0000	1.28
  +++ DebugHandler.java	28 Jan 2002 06:43:04 -0000	1.28.2.1
  @@ -59,7 +59,6 @@
   import org.apache.axis.Constants;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeader;
   import org.apache.axis.utils.JavaUtils;
  @@ -84,7 +83,7 @@
   
               if (header != null) {
                   Integer i = ((Integer)header
  -                             .getValueAsType(SOAPTypeMappingRegistry.XSD_INT));
  +                             .getValueAsType(Constants.XSD_INT));
                   if (i == null)
                       throw new AxisFault(JavaUtils.getMessage("cantConvert03"));
   
  
  
  
  1.11.2.1  +3 -3      xml-axis/java/src/org/apache/axis/handlers/SimpleSessionHandler.java
  
  Index: SimpleSessionHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/SimpleSessionHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- SimpleSessionHandler.java	10 Jan 2002 20:00:59 -0000	1.11
  +++ SimpleSessionHandler.java	28 Jan 2002 06:43:04 -0000	1.11.2.1
  @@ -57,9 +57,9 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.AxisFault;
  +import org.apache.axis.Constants;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeader;
   import org.apache.axis.session.SimpleSession;
  @@ -198,7 +198,7 @@
               // Got one!
               try {
                   Long id = (Long)header.
  -                             getValueAsType(SOAPTypeMappingRegistry.XSD_LONG);
  +                             getValueAsType(Constants.XSD_LONG);
                   // Store it away.
                   AxisEngine engine = context.getAxisEngine();
                   engine.setOption(SESSION_ID, id);
  @@ -259,7 +259,7 @@
                   // Got one!
                   try {
                       id = (Long)header.
  -                            getValueAsType(SOAPTypeMappingRegistry.XSD_LONG);
  +                            getValueAsType(Constants.XSD_LONG);
                   } catch (Exception e) {
                       throw AxisFault.makeFault(e);
                   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.42.2.1  +8 -33     xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
  
  Index: SOAPService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
  retrieving revision 1.42
  retrieving revision 1.42.2.1
  diff -u -r1.42 -r1.42.2.1
  --- SOAPService.java	10 Jan 2002 20:01:00 -0000	1.42
  +++ SOAPService.java	28 Jan 2002 06:43:04 -0000	1.42.2.1
  @@ -64,9 +64,9 @@
   import org.apache.axis.SimpleTargetedChain;
   import org.apache.axis.providers.java.MsgProvider;
   import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMappingRegistryImpl;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeader;
   import org.apache.axis.utils.JavaUtils;
  @@ -102,7 +102,7 @@
   
       /** Service-specific type mappings
        */
  -    private TypeMappingRegistry typeMap;
  +    private TypeMappingRegistry tmr;
       
       /**
        * SOAPRequestHandler is used to inject SOAP semantics just before
  @@ -189,18 +189,19 @@
       }
   
       private void initTypeMappingRegistry() {
  -        typeMap = new TypeMappingRegistry();
  -        typeMap.setParent(SOAPTypeMappingRegistry.getSingleton());
  +        tmr = new TypeMappingRegistryImpl();
  +        // The TMR has the SOAP/XSD in the default TypeMapping
  +        //tmr.setParent(SOAPTypeMappingRegistry.getSingleton());
       }
       
       public TypeMappingRegistry getTypeMappingRegistry()
       {
  -        return typeMap;
  +        return tmr;
       }
       
       public void setTypeMappingRegistry(TypeMappingRegistry map)
       {
  -        typeMap = map;
  +        tmr = map;
       }
       
       /** Convenience constructor for wrapping SOAP semantics around
  @@ -214,12 +215,10 @@
       
       /** Tell this service which engine it's deployed to.
        *
  -     * The main result of this right now is to set up type mapping
  -     * relationships.
        */
       public void setEngine(AxisEngine engine)
       {
  -      typeMap.setParent(engine.getTypeMappingRegistry());
  +      tmr = engine.getTypeMappingRegistry();
       }
   
       /**
  @@ -267,30 +266,6 @@
        */
       public void stop()
       {
  -    }
  -    
  -    /**
  -     * Register a new service type mapping
  -     */
  -    public void registerTypeMapping(QName qName,
  -                                    Class cls,
  -                                    DeserializerFactory deserFactory,
  -                                    Serializer serializer)
  -        throws IntrospectionException
  -    {
  -        if (deserFactory != null)
  -            typeMap.addDeserializerFactory(qName, cls, deserFactory);
  -        if (serializer != null)
  -            typeMap.addSerializer(cls, qName, serializer);
  -    }
  -        
  -    /**
  -     * Unregister a service type mapping
  -     */
  -    public void unregisterTypeMapping(QName qName, Class cls)
  -    {
  -        typeMap.removeDeserializer(qName);
  -        typeMap.removeSerializer(cls);
       }
       
       /**
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.13.2.1  +2 -2      xml-axis/java/src/org/apache/axis/message/BodyBuilder.java
  
  Index: BodyBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/BodyBuilder.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- BodyBuilder.java	6 Dec 2001 17:09:41 -0000	1.13
  +++ BodyBuilder.java	28 Jan 2002 06:43:04 -0000	1.13.2.1
  @@ -106,7 +106,7 @@
            * description, which can then tell us what to create.
            */
           boolean isRoot = true;
  -        String root = attributes.getValue(Constants.URI_SOAP_ENC,
  +        String root = attributes.getValue(Constants.URI_CURRENT_SOAP_ENC,
                                           Constants.ATTR_ROOT);
           if ((root != null) && root.equals("0")) isRoot = false;
   
  @@ -147,7 +147,7 @@
               element = new SOAPBodyElement(namespace, localName, prefix,
                                         attributes, context);
               if (element.getFixupDeserializer() != null)
  -                handler = element.getFixupDeserializer();
  +                handler = (SOAPHandler) element.getFixupDeserializer();
           }
   
           if (handler == null)
  
  
  
  1.71.2.1  +11 -14    xml-axis/java/src/org/apache/axis/message/MessageElement.java
  
  Index: MessageElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/MessageElement.java,v
  retrieving revision 1.71
  retrieving revision 1.71.2.1
  diff -u -r1.71 -r1.71.2.1
  --- MessageElement.java	16 Jan 2002 16:25:42 -0000	1.71
  +++ MessageElement.java	28 Jan 2002 06:43:04 -0000	1.71.2.1
  @@ -57,12 +57,10 @@
   
   import org.apache.axis.Constants;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.configuration.NullProvider;
   import org.apache.axis.encoding.DeserializationContext;
   import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.SerializationContext;
  -import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.utils.Mapping;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.XMLUtils;
  @@ -163,7 +161,7 @@
               this.attributes = new AttributesImpl();
           } else {
               this.attributes = new AttributesImpl(attributes);
  -            String rootVal = attributes.getValue(Constants.URI_SOAP_ENC, Constants.ATTR_ROOT);
  +            String rootVal = attributes.getValue(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ROOT);
               if (rootVal != null)
                   _isRoot = rootVal.equals("1");
   
  @@ -176,8 +174,8 @@
               href = attributes.getValue(Constants.ATTR_HREF);
   
               // If there's an arrayType attribute, we can pretty well guess that we're an Array???
  -            if (attributes.getValue(Constants.URI_SOAP_ENC, Constants.ATTR_ARRAY_TYPE) != null)
  -                typeQName = SOAPTypeMappingRegistry.SOAP_ARRAY;
  +            if (attributes.getValue(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ARRAY_TYPE) != null)
  +                typeQName = Constants.SOAP_ARRAY;
           }
       }
   
  @@ -313,14 +311,13 @@
           if (context == null)
               throw new Exception(JavaUtils.getMessage("noContext00"));
   
  -        TypeMappingRegistry tmr = context.getTypeMappingRegistry();
  -        Deserializer dser = tmr.getDeserializer(type);
  +        Deserializer dser = context.getDeserializerForType(type);
           if (dser == null)
               throw new Exception(JavaUtils.getMessage("noDeser00", "" + type));
   
  -        context.pushElementHandler(new EnvelopeHandler(dser));
  +        context.pushElementHandler(new EnvelopeHandler((SOAPHandler)dser));
   
  -        publishToHandler(context);
  +        publishToHandler((org.xml.sax.ContentHandler) context);
   
           return dser.getValue();
       }
  @@ -419,9 +416,9 @@
           if(context != null)
           {
               MessageContext msgContext = context.getMessageContext();
  -            serializeContext = new SerializationContext(writer, msgContext);
  +            serializeContext = new SerializationContextImpl(writer, msgContext);
           } else {
  -            serializeContext = new SerializationContext(writer);
  +            serializeContext = new SerializationContextImpl(writer);
           }
           output(serializeContext);
           writer.close();
  @@ -506,8 +503,8 @@
       public String toString() {
           try {
               StringWriter  writer = new StringWriter();
  -            SerializationContext serContext = new SerializationContext(writer, 
  -                                                                       null);
  +            SerializationContext serContext = new SerializationContextImpl(writer, 
  +                                                                           null);
               serContext.setSendDecl(false);
               this.output(serContext);
               return( writer.toString() );
  
  
  
  1.29.2.1  +4 -5      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.29
  retrieving revision 1.29.2.1
  diff -u -r1.29 -r1.29.2.1
  --- RPCElement.java	18 Jan 2002 17:45:26 -0000	1.29
  +++ RPCElement.java	28 Jan 2002 06:43:04 -0000	1.29.2.1
  @@ -115,7 +115,7 @@
           
           needDeser = false;
           
  -        publishToHandler(context);
  +        publishToHandler((org.xml.sax.ContentHandler) context);
       }
       
       /** This gets the FIRST param whose name matches.
  @@ -167,13 +167,12 @@
       {
   /*
           if (encodingStyle != null) {
  -            QName qn = new QName(Constants.URI_SOAP_ENC,
  +            QName qn = new QName(Constants.URI_CURRENT_SOAP_ENC, 
                                    Constants.ATTR_ENCODING_STYLE);
   
               if (attributes == null)
                   attributes = new AttributesImpl();
  -
  -            attributes.addAttribute(Constants.URI_SOAP_ENC,
  +            attributes.addAttribute(Constants.URI_CURRENT_SOAP_ENC, 
                                       Constants.ATTR_ENCODING_STYLE,
                                       context.qName2String(qn),
                                       "CDATA",
  @@ -181,7 +180,7 @@
           }
   */
           if (encodingStyle != null) {
  -            setAttribute(Constants.URI_SOAP_ENC,
  +            setAttribute(Constants.URI_CURRENT_SOAP_ENC,
                            Constants.ATTR_ENCODING_STYLE,
                            encodingStyle);
           }
  
  
  
  1.22.2.1  +9 -7      xml-axis/java/src/org/apache/axis/message/RPCHandler.java
  
  Index: RPCHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
  retrieving revision 1.22
  retrieving revision 1.22.2.1
  diff -u -r1.22 -r1.22.2.1
  --- RPCHandler.java	4 Jan 2002 22:30:03 -0000	1.22
  +++ RPCHandler.java	28 Jan 2002 06:43:04 -0000	1.22.2.1
  @@ -67,7 +67,9 @@
   import org.apache.axis.client.Call;
   import org.apache.axis.encoding.DeserializationContext;
   import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.DeserializerImpl;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.encoding.FieldTarget;
   import org.apache.axis.utils.AxisClassLoader;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.cache.JavaClass;
  @@ -176,7 +178,7 @@
           String isNil = attributes.getValue(Constants.URI_2001_SCHEMA_XSI,"nil");
   
           if ( isNil != null && isNil.equals("true") )
  -          return( new Deserializer() );
  +          return( (SOAPHandler) new DeserializerImpl() );
           
           // xsi:type always overrides everything else
           if (type == null) {
  @@ -206,7 +208,7 @@
               if (type == null && defaultParamTypes!=null &&
                   params.size()<=defaultParamTypes.length) {
   
  -                TypeMappingRegistry typeMap = context.getTypeMappingRegistry();
  +                TypeMapping typeMap = context.getTypeMapping();
                   int index = params.size()-1;
                   if (index+1<defaultParamTypes.length)
                       if (defaultParamTypes[0]==MessageContext.class) index++;
  @@ -219,9 +221,9 @@
           
           Deserializer dser;
           if (type != null) {
  -            dser = context.getTypeMappingRegistry().getDeserializer(type);
  +            dser = context.getDeserializerForType(type);
           } else {
  -            dser = new Deserializer();
  +            dser = new DeserializerImpl();
           }
   
           if (dser == null) {
  @@ -230,13 +232,13 @@
           }
           
           dser.registerValueTarget(
  -             new Deserializer.FieldTarget(currentParam, 
  +             new FieldTarget(currentParam, 
                    RPCParam.getValueField()));
           
           if (category.isDebugEnabled()) {
               category.debug(JavaUtils.getMessage("exit00", "RPCHandler.onStartChild()"));
           }
  -        return dser;
  +        return (SOAPHandler) dser;
       }
       
       public void endElement(String namespace, String localName,
  
  
  
  1.29.4.1  +5 -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.29
  retrieving revision 1.29.4.1
  diff -u -r1.29 -r1.29.4.1
  --- RPCParam.java	7 Nov 2001 19:00:42 -0000	1.29
  +++ RPCParam.java	28 Jan 2002 06:43:04 -0000	1.29.4.1
  @@ -129,6 +129,10 @@
       public void serialize(SerializationContext context)
           throws IOException
       {
  -        context.serialize(new QName(namespaceURI,name), null, value);
  +        if (value != null) {
  +            context.serialize(new QName(namespaceURI,name), null, value, value.getClass());
  +        } else {
  +            context.serialize(new QName(namespaceURI,name), null, value, null);
  +        }
       }
   }
  
  
  
  1.53.2.1  +2 -1      xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java
  
  Index: SOAPEnvelope.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java,v
  retrieving revision 1.53
  retrieving revision 1.53.2.1
  diff -u -r1.53 -r1.53.2.1
  --- SOAPEnvelope.java	18 Jan 2002 17:45:26 -0000	1.53
  +++ SOAPEnvelope.java	28 Jan 2002 06:43:04 -0000	1.53.2.1
  @@ -61,6 +61,7 @@
   import org.apache.axis.configuration.NullProvider;
   import org.apache.axis.client.AxisClient;
   import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Mapping;
  @@ -121,7 +122,7 @@
               DeserializationContext dser = null ;
               AxisClient     tmpEngine = new AxisClient(new NullProvider());
               MessageContext msgContext = new MessageContext(tmpEngine);
  -            dser = new DeserializationContext(is, msgContext,
  +            dser = new DeserializationContextImpl(is, msgContext,
                                                 Message.REQUEST, this );
               dser.parse();
           }
  
  
  
  1.15.2.1  +18 -11    xml-axis/java/src/org/apache/axis/message/SOAPFaultBuilder.java
  
  Index: SOAPFaultBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFaultBuilder.java,v
  retrieving revision 1.15
  retrieving revision 1.15.2.1
  diff -u -r1.15 -r1.15.2.1
  --- SOAPFaultBuilder.java	5 Dec 2001 17:42:08 -0000	1.15
  +++ SOAPFaultBuilder.java	28 Jan 2002 06:43:04 -0000	1.15.2.1
  @@ -58,8 +58,8 @@
   import org.apache.axis.Constants;
   import org.apache.axis.encoding.DeserializationContext;
   import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
  -import org.apache.axis.encoding.ValueReceiver;
  +import org.apache.axis.encoding.Callback;
  +import org.apache.axis.encoding.CallbackTarget;
   import org.apache.axis.utils.QFault;
   import org.xml.sax.Attributes;
   import org.xml.sax.SAXException;
  @@ -78,7 +78,7 @@
    * @author Glen Daniels (gdaniels@macromedia.com)
    * @author Tom Jordahl (tomj@macromedia.com)
    */
  -public class SOAPFaultBuilder extends SOAPHandler implements ValueReceiver
  +public class SOAPFaultBuilder extends SOAPHandler implements Callback
   {
       protected SOAPFaultElement element;
       protected DeserializationContext context;
  @@ -92,9 +92,9 @@
       protected Element[] faultDetails;
   
       static {
  -        fields.put(Constants.ELEM_FAULT_CODE, SOAPTypeMappingRegistry.XSD_STRING);
  -        fields.put(Constants.ELEM_FAULT_STRING, SOAPTypeMappingRegistry.XSD_STRING);
  -        fields.put(Constants.ELEM_FAULT_ACTOR, SOAPTypeMappingRegistry.XSD_STRING);
  +        fields.put(Constants.ELEM_FAULT_CODE, Constants.XSD_STRING);
  +        fields.put(Constants.ELEM_FAULT_STRING, Constants.XSD_STRING);
  +        fields.put(Constants.ELEM_FAULT_ACTOR, Constants.XSD_STRING);
           fields.put(Constants.ELEM_FAULT_DETAIL, null);
       }
       
  @@ -152,12 +152,13 @@
           QName qName = (QName)fields.get(name);
           
           if (qName != null) {
  -            currentDeser = context.getTypeMappingRegistry().
  -                          getDeserializer(qName);
  -            currentDeser.registerCallback(this, name);
  +            currentDeser = context.getDeserializerForType(qName);
  +            if (currentDeser != null) {
  +                currentDeser.registerValueTarget(new CallbackTarget(this, name));
  +            }
           }
           
  -        return currentDeser;
  +        return (SOAPHandler) currentDeser;
       }
   
       public void onEndChild(String namespace, String localName,
  @@ -185,7 +186,13 @@
           }
       }
   
  -    public void valueReady(Object value, Object hint)
  +    /* 
  +     * Defined by Callback.
  +     * This method gets control when the callback is invoked.
  +     * @param is the value to set.
  +     * @param hint is an Object that provide additional hint information.
  +     */
  +    public void setValue(Object value, Object hint)
       {
           String name = (String)hint;
           if (name.equals(Constants.ELEM_FAULT_CODE)) {
  
  
  
  1.5.4.1   +1 -1      xml-axis/java/src/org/apache/axis/message/SOAPHandler.java
  
  Index: SOAPHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.5.4.1
  diff -u -r1.5 -r1.5.4.1
  --- SOAPHandler.java	30 Oct 2001 14:19:29 -0000	1.5
  +++ SOAPHandler.java	28 Jan 2002 06:43:04 -0000	1.5.4.1
  @@ -74,7 +74,7 @@
           throws SAXException
       {
           // By default, make a new element
  -        if (!context.doneParsing) {
  +        if (!context.isDoneParsing()) {
               if (myElement == null)
                   myElement = new MessageElement(namespace, localName,
                                                  qName, attributes, context);
  
  
  
  1.31.2.1  +1 -1      xml-axis/java/src/org/apache/axis/message/SOAPHeader.java
  
  Index: SOAPHeader.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHeader.java,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- SOAPHeader.java	16 Jan 2002 16:25:42 -0000	1.31
  +++ SOAPHeader.java	28 Jan 2002 06:43:04 -0000	1.31.2.1
  @@ -153,7 +153,7 @@
           if (value == null) {
               super.outputImpl(context);
           } else {
  -            context.serialize(new QName(namespaceURI,name), attributes, value);
  +            context.serialize(new QName(namespaceURI,name), attributes, value, value.getClass() );
           }
       }
   };
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.33.2.1  +33 -5     xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java
  
  Index: RPCProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java,v
  retrieving revision 1.33
  retrieving revision 1.33.2.1
  diff -u -r1.33 -r1.33.2.1
  --- RPCProvider.java	17 Jan 2002 16:14:10 -0000	1.33
  +++ RPCProvider.java	28 Jan 2002 06:43:05 -0000	1.33.2.1
  @@ -301,13 +301,19 @@
                   if (heldType != null) {
                       // Create an RPCParam by converting the Holder back into 
                       // the held type.
  -                    resBody.addParam (new RPCParam (getParameterName(obj, method, i, mName),
  -                                                    JavaUtils.convert(argValues[i], heldType)));
  +                    resBody.addParam (new RPCParam (getParameterName(obj,
  +                                                                     method,
  +                                                                     i, 
  +                                                                     mName,
  +                                                                     args),
  +                                                    JavaUtils.convert(
  +                                                            argValues[i], 
  +                                                            heldType)));
                   }
               }
               
               resEnv.addBodyElement( resBody );
  -            resEnv.setEncodingStyleURI(Constants.URI_SOAP_ENC);
  +            resEnv.setEncodingStyleURI(Constants.URI_CURRENT_SOAP_ENC);
           }
       }
       
  @@ -321,14 +327,36 @@
        * of the method specified. 
        * (Use i=-1 to access the return name.)
        */
  -    protected String getParameterName(Object obj, Method method, int i, String mName) {
  +    protected String getParameterName(Object obj,
  +                                      Method method,
  +                                      int i,
  +                                      String mName) {
  +        return getParameterName(obj, method, i, mName, null);
  +    }
  +    
  +    /**
  +     * Returns or creates the parameter name for the i'th parm of 
  +     * of the method specified, using the name in the appropriate
  +     * position of the rpcParams Vector if it is supplied.
  +     * 
  +     * (Use i=-1 to access the return name.)
  +     */
  +    protected String getParameterName(Object obj,
  +                                      Method method,
  +                                      int i,
  +                                      String mName,
  +                                      Vector rpcParams) {
           String parmName = null;
           // Emitter skeletons keep track of the parameter names
           if (obj instanceof org.apache.axis.wsdl.Skeleton) 
               parmName = ((org.apache.axis.wsdl.Skeleton)obj).getParameterName(method.getName(), i);
           if (parmName == null) {
               if (i >= 0) {
  -                parmName = mName + "Result" + i;
  +                if (rpcParams != null && rpcParams.size() > i) {
  +                    parmName = ((RPCParam)rpcParams.get(i)).getName();
  +                } else {
  +                    parmName = mName + "Result" + i;
  +                }
               } else {
                   parmName = mName + "Result";  
               }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +5 -0      xml-axis/java/src/org/apache/axis/server/server-config.wsdd
  
  Index: server-config.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/server-config.wsdd,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- server-config.wsdd	15 Jan 2002 17:57:03 -0000	1.8
  +++ server-config.wsdd	28 Jan 2002 06:43:05 -0000	1.8.2.1
  @@ -21,6 +21,11 @@
     <parameter name="enableRemoteAdmin" value="false"/>
     <parameter name="className" value="org.apache.axis.utils.Admin"/>
    </service>
  + <service name="http://xml.apache.org/axis/wsdd/" provider="java:MSG">
  +  <parameter name="allowedMethods" value="AdminService"/>
  +  <parameter name="enableRemoteAdmin" value="false"/>
  +  <parameter name="className" value="org.apache.axis.utils.Admin"/>
  + </service>
    <service name="JWSProcessor" provider="Handler">
     <parameter name="handlerClass" value="org.apache.axis.handlers.JWSProcessor"/>
    </service>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.92.2.3  +71 -187   xml-axis/java/src/org/apache/axis/utils/Admin.java
  
  Index: Admin.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/Admin.java,v
  retrieving revision 1.92.2.2
  retrieving revision 1.92.2.3
  diff -u -r1.92.2.2 -r1.92.2.3
  --- Admin.java	25 Jan 2002 14:55:48 -0000	1.92.2.2
  +++ Admin.java	28 Jan 2002 06:43:05 -0000	1.92.2.3
  @@ -55,13 +55,7 @@
   
   package org.apache.axis.utils ;
   
  -import org.apache.axis.AxisEngine;
  -import org.apache.axis.AxisFault;
  -import org.apache.axis.Chain;
  -import org.apache.axis.Constants;
  -import org.apache.axis.Handler;
  -import org.apache.axis.MessageContext;
  -import org.apache.axis.SimpleChain;
  +import org.apache.axis.*;
   import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.providers.java.MsgProvider;
   import org.apache.axis.deployment.wsdd.*;
  @@ -70,6 +64,7 @@
   import org.apache.axis.client.AxisClient;
   import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.encoding.*;
  +import org.apache.axis.encoding.ser.*;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.axis.server.AxisServer;
  @@ -145,26 +140,25 @@
           NodeList list = root.getElementsByTagName("beanMappings");
           for (int i = 0; list != null && i < list.getLength(); i++) {
               Element el = (Element)list.item(i);
  -            registerTypes(el, service, true, null);
  +            registerTypes(el, service, true);
           }
   
           list = root.getElementsByTagName("typeMappings");
           for (int i = 0; list != null && i < list.getLength(); i++) {
               Element el = (Element)list.item(i);
  -            registerTypes(el, service, false, null);
  +            registerTypes(el, service, false);
           }
       }
   
       private static void registerTypes(Element root,
                                         WSDDTypeMappingContainer container,
  -                                      boolean isBean,
  -                                      DeploymentRegistry registry)
  +                                      boolean isBean)
           throws Exception
       {
           NodeList list = root.getChildNodes();
           for (int i = 0; (list != null) && (i < list.getLength()); i++) {
               if (!(list.item(i) instanceof Element)) continue;
  -            registerTypeMapping((Element)list.item(i), container, isBean, registry);
  +            registerTypeMapping((Element)list.item(i), container, isBean);
           }
       }
   
  @@ -182,131 +176,18 @@
           return( result );
       }
   
  -    /** Process an engine configuration file by deploying appropriate stuff
  -     * into the specified AxisEngine, and then telling it to save itself
  -     * when we're done.
  -     *
  -     * @param doc an XML document containing an Axis engine configuration
  -     * @param engine the AxisEngine in which to deploy
  -     * @exception Exception (should be DeploymentException?)
  -     */
  -    public static void processEngineConfig(Document doc, AxisEngine engine)
  -        throws Exception
  -    {
  -        Element el = doc.getDocumentElement();
  -        String namespace = el.getNamespaceURI();
  -        
  -        // If this is WSDD, process it correctly.
  -        if (namespace != null && namespace.equals(WSDDConstants.WSDD_NS)) {
  -            processWSDD(engine, el);
  -            return;
  -        }
  -        
  -        if (!el.getTagName().equals("engineConfig"))
  -            throw new Exception(
  -                    JavaUtils.getMessage("noEngineConfig00", el.getTagName()));
  -
  -        NodeList nl = el.getElementsByTagName("handlers");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("services");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("transports");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("typeMappings");
  -        deploy(nl, engine);
  -        
  -        //engine.saveConfiguration();
  -    }
  -
  -    private static final int
  -        TYPE_UNKNOWN = 0,
  -        TYPE_HANDLER = 1,
  -        TYPE_CHAIN = 2,
  -        TYPE_SERVICE = 3,
  -        TYPE_TRANSPORT = 4,
  -        TYPE_TYPEMAPPING = 5;
  -    private static final Hashtable typeTable = new Hashtable();
  -    static {
  -        typeTable.put("handler", new Integer(TYPE_HANDLER));
  -        typeTable.put("chain", new Integer(TYPE_CHAIN));
  -        typeTable.put("service", new Integer(TYPE_SERVICE));
  -        typeTable.put("transport", new Integer(TYPE_TRANSPORT));
  -        typeTable.put("typeMapping", new Integer(TYPE_TYPEMAPPING));
  -    }
  -    private static int getType(String tagName) {
  -        Integer i;
  -        if ((i = (Integer)typeTable.get(tagName)) == null)
  -            return TYPE_UNKNOWN;
  -        return i.intValue();
  -    }
  -
  -    /** Deploy a set of individual items.
  -     *
  -     * NOTE: as it stands this doesn't care about the relationship between
  -     * these items and the enclosing tag.  We shouldn't really allow <service>
  -     * deployment underneath the <transports> tag, for instance.  Since this
  -     * is going to mutate some more, this is the simple way to do it for now.
  -     *
  -     * @param nl a DOM NodeList of deployable items.
  -     * @param engine the AxisEngine into which we deploy.
  -     * @exception Exception (should be DeploymentException?)
  -     */
  -    static void deploy(NodeList nl, AxisEngine engine) throws Exception
  -    {
  -        WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
  -        WSDDDeployment dep = wd.getDeployment();
  -        
  -        int lenI = nl.getLength();
  -        for (int i = 0; i < lenI; i++) {
  -            Element el = (Element)nl.item(i);
  -
  -            NodeList children = el.getChildNodes();
  -            int lenJ = children.getLength();
  -            for (int j = 0; j < lenJ; j++) {
  -                if (!(children.item(j) instanceof Element)) continue;
  -
  -                Element item = (Element)children.item(j);
  -
  -                int type;
  -                switch (type = getType(item.getTagName())) {
  -                case TYPE_HANDLER:
  -                    registerHandler(item, engine);
  -                    break;
  -                case TYPE_CHAIN:
  -                    registerChain(item, engine);
  -                    break;
  -                case TYPE_SERVICE:
  -                    registerService(item, engine);
  -                    break;
  -                case TYPE_TRANSPORT:
  -                    registerTransport(item, engine);
  -                    break;
  -                case TYPE_TYPEMAPPING:
  -                    registerTypeMapping(item, dep, false, null);
  -                    break;
  -                case TYPE_UNKNOWN:
  -                    // ignore it
  -                    break;
  -                default:
  -                    throw new UnknownError(JavaUtils.getMessage(
  -                            "never00",
  -                            "org.apache.axis.utils.Admin",
  -                            "type = " + type));
  -                }
  -            }
  -        }
  -    }
  -    
       protected static Document processWSDD(AxisEngine engine, Element root)
           throws Exception
       {
           Document doc = null ;
   
           WSDDDocument wsddDoc = new WSDDDocument(root);
  -        engine.getDeploymentRegistry().deploy(wsddDoc);
  +        EngineConfiguration config = engine.getConfig();
  +        if (config instanceof FileProvider) {
  +            FileProvider wsddProvider = (FileProvider)config;
  +            WSDDDeployment deployment = wsddProvider.getDeployment();
  +            wsddDoc.getDeployment().deployToRegistry(deployment);
  +        }
           engine.refreshGlobalOptions();
   
           engine.saveConfiguration();
  @@ -433,8 +314,14 @@
                   engine = engine.getClientEngine();
               }
               
  -            WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
  -            WSDDDeployment dep = wd.getDeployment();
  +            WSDDDeployment dep = null;
  +            try {
  +                FileProvider config = (FileProvider)engine.getConfig();
  +                dep = config.getDeployment();
  +            } catch (Exception e) {
  +                // This will catch NPEs and ClassCastExceptions, either of
  +                // which means the engine isn't configurable.
  +            }
   
               NodeList list = root.getChildNodes();
               for ( int loop = 0 ; loop < list.getLength() ; loop++ ) {
  @@ -449,11 +336,11 @@
                   if ( action.equals( "undeploy" ) ) {
                       if ( type.equals("service") ) {
                           category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) );
  -                        engine.undeployService( name );
  +                        dep.undeployService( new QName(null,name) );
                       }
                       else if ( type.equals("handler") || type.equals("chain") ) {
                           category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) );
  -                        engine.undeployHandler( name );
  +                        dep.undeployHandler( new QName(null,name) );
                       }
                       else
                           throw new AxisFault( "Admin.error",
  @@ -463,25 +350,25 @@
                   }
                   
                   if ( type.equals( "handler" ) ) {
  -                    registerHandler(elem, engine);
  +                    registerHandler(elem, dep);
                   }
                   else if ( type.equals( "chain" ) ) {
  -                    registerChain(elem, engine);
  +                    registerChain(elem, dep);
                   }
                   else if ( type.equals( "service" ) ) {
  -                    registerService(elem, engine);
  +                    registerService(elem, dep, engine instanceof AxisServer);
                   }
                   else if (type.equals("transport")) {
  -                    registerTransport(elem, engine);
  +                    registerTransport(elem, dep);
                   }
   
                   // A streamlined means of deploying both a serializer and a deserializer
                   // for a bean at the same time.
                   else if ( type.equals( "beanMappings" ) ) {
  -                    registerTypes(elem, dep, true, engine.getDeploymentRegistry());
  +                    registerTypes(elem, dep, true);
                   }
                   else if (type.equals("typeMappings")) {
  -                    registerTypes(elem, dep, false, engine.getDeploymentRegistry());
  +                    registerTypes(elem, dep, false);
                   } else
                       throw new AxisFault( "Admin.error",
                           JavaUtils.getMessage("unknownType01", action + ": " + type),
  @@ -514,13 +401,19 @@
           throws AxisFault
       {
           StringWriter writer = new StringWriter();
  -        SerializationContext context = new SerializationContext(writer, null);
  +        SerializationContext context = new SerializationContextImpl(writer, null);
           context.setPretty(true);
           try {
  -            engine.getDeploymentRegistry().writeToContext(context);
  +            FileProvider config = (FileProvider)engine.getConfig();
  +            WSDDDeployment deployment = config.getDeployment();
  +            deployment.writeToContext(context);
           } catch (Exception e) {
  -            e.printStackTrace();
  +            // If the engine config isn't a FileProvider, or we have no
  +            // engine config for some odd reason, we'll end up here.
  +
  +            throw new AxisFault(JavaUtils.getMessage("noEngineWSDD"));
           }
  +
           try {
               writer.close();
               return XMLUtils.newDocument(new InputSource(new StringReader(writer.getBuffer().toString())));
  @@ -535,7 +428,8 @@
        * @param elem the <chain> element
        * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerChain(Element elem, AxisEngine engine)
  +    public static void registerChain(Element elem,
  +                                     WSDDDeployment deployment)
           throws Exception
       {
           Handler tmpH = null;
  @@ -560,9 +454,6 @@
   
               getOptions( elem, options );
               
  -            WSDDDocument wsddDoc = (WSDDDocument)engine.
  -                    getDeploymentRegistry().getConfigDocument();
  -            
               WSDDChain chain = new WSDDChain();
               chain.setName(name);
               chain.setOptionsHashtable(options);
  @@ -576,7 +467,7 @@
                   chain.addHandler(handler);
               }
   
  -            engine.getDeploymentRegistry().deployHandler(chain);
  +            deployment.deployHandler(chain);
           }
       }
   
  @@ -586,7 +477,9 @@
        * @param elem the <service> element
        * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerService(Element elem, AxisEngine engine)
  +    public static void registerService(Element elem,
  +                                       WSDDDeployment deployment,
  +                                       boolean isServer)
           throws Exception
       {
           String   name    = elem.getAttribute( "name" );
  @@ -632,8 +525,8 @@
           /**
            * Pivots only make sense on the server.
            */ 
  -        if (engine instanceof AxisServer) {
  -            Handler pivotHandler = engine.getHandler(pivot);
  +        if (isServer) {
  +            Handler pivotHandler = deployment.getHandler(new QName("", pivot));
               if (pivotHandler == null)
                   throw new AxisFault(JavaUtils.getMessage("noPivot00", pivot));
               Class pivotClass = pivotHandler.getClass();
  @@ -665,49 +558,44 @@
               throw AxisFault.makeFault(e);
           }
   
  -        engine.getDeploymentRegistry().deployService(serv);
  +        deployment.deployService(serv);
       }
   
       /**
        * Deploy a handler described in XML into an AxisEngine.
        *
        * @param elem the <handler> element
  -     * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerHandler(Element elem, AxisEngine engine)
  +    public static void registerHandler(Element elem,
  +                                       WSDDDeployment deployment)
           throws Exception
       {
  -        try {
  -            AxisClassLoader   cl     = AxisClassLoader.getClassLoader();
  -            String   name    = elem.getAttribute( "name" );
  -            Handler h = null;
  +        AxisClassLoader   cl     = AxisClassLoader.getClassLoader();
  +        String   name    = elem.getAttribute( "name" );
   
  -            if ( name != null && name.equals("") ) name = null ;
  +        WSDDHandler handler;
   
  -            String   cls   = elem.getAttribute( "class" );
  -            if ( cls != null && cls.equals("") ) cls = null ;
  -            category.info( JavaUtils.getMessage("deployHandler00", name) );
  -
  -            h = engine.getHandler( name );
  -            if ( h == null ) h = (Handler) cl.loadClass(cls).newInstance();
  -            getOptions( elem, h );
  -            engine.deployHandler( name, h );
  -        } catch (ClassNotFoundException e) {
  -              throw AxisFault.makeFault(e);
  -        } catch (InstantiationException e) {
  -              throw AxisFault.makeFault(e);
  -        } catch (IllegalAccessException e) {
  -              throw AxisFault.makeFault(e);
  -        }
  +        if ( name != null && name.equals("") ) name = null ;
  +
  +        String   cls   = elem.getAttribute( "class" );
  +        if ( cls != null && cls.equals("") ) cls = null ;
  +        category.info( JavaUtils.getMessage("deployHandler00", name) );
  +
  +        handler = new WSDDHandler();
  +
  +        handler.setQName(new QName(null, name));
  +        getOptions( elem, handler.getParametersTable() );
  +
  +        deployment.deployHandler(handler);
       }
   
       /**
        * Deploy a transport described in XML into an AxisEngine.
        *
        * @param elem the <transport> element
  -     * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerTransport(Element elem, AxisEngine engine)
  +    public static void registerTransport(Element elem,
  +                                         WSDDDeployment deployment)
           throws Exception
       {
           String   name    = elem.getAttribute( "name" );
  @@ -726,7 +614,6 @@
           Vector reqNames = new Vector();
           Vector respNames = new Vector();
   
  -        WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
           WSDDTransport transport = new WSDDTransport();
           
           transport.setName(name);
  @@ -756,7 +643,7 @@
           getOptions( elem, options );
           transport.setOptionsHashtable(options);
   
  -        engine.getDeploymentRegistry().deployTransport(transport);
  +        deployment.deployTransport(transport);
       }
   
       /**
  @@ -767,8 +654,7 @@
        */
       private static void registerTypeMapping(Element elem,
                                               WSDDTypeMappingContainer container,
  -                                            boolean isBean,
  -                                            DeploymentRegistry registry)
  +                                            boolean isBean)
           throws Exception
       {
           WSDDTypeMapping mapping = new WSDDTypeMapping();
  @@ -806,8 +692,8 @@
   
               // register both serializers and deserializers for this bean
               mapping.setQName(qn);
  -            mapping.setSerializer(BeanSerializer.class);
  -            mapping.setDeserializer(BeanSerializer.getFactory().getClass());
  +            mapping.setSerializer(BeanSerializerFactory.class);
  +            mapping.setDeserializer(BeanDeserializerFactory.class);
           } else {
               String typeName = elem.getAttribute("type");
               int idx = typeName.indexOf(':');
  @@ -838,10 +724,8 @@
                       null, null);
               }
           }
  -        
  -        if (registry != null) {
  -            WSDDDeployment.deployMappingToRegistry(mapping, registry);
  -        }
  +
  +        container.deployTypeMapping(mapping);
       }
   
       public static void main(String args[]) throws Exception {
  
  
  
  1.21.2.1  +29 -0     xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
  
  Index: JavaUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
  retrieving revision 1.21
  retrieving revision 1.21.2.1
  diff -u -r1.21 -r1.21.2.1
  --- JavaUtils.java	14 Jan 2002 21:27:14 -0000	1.21
  +++ JavaUtils.java	28 Jan 2002 06:43:05 -0000	1.21.2.1
  @@ -481,4 +481,33 @@
       {
           public HolderException () {}
       }; 
  +
  +
  +    /**
  +     * Determine if the class is a JAX-RPC enum class.
  +     * An enumeration class is recognized by
  +     * a getValue() method, a toString() method, a fromString(String) method
  +     * a fromValue(type) method and the lack
  +     * of a setValue(type) method
  +     */
  +    public static boolean isEnumClass(Class cls) {
  +        try {
  +            java.lang.reflect.Method m  = cls.getMethod("getValue", null);
  +            java.lang.reflect.Method m2 = cls.getMethod("toString", null);
  +            java.lang.reflect.Method m3 = cls.getMethod("fromString",
  +                                                        new Class[] {java.lang.String.class});
  +            
  +            if (m != null && m2 != null && m3 != null &&
  +                cls.getMethod("fromValue", new Class[] {m.getReturnType()}) != null) {
  +                try {
  +                    if (cls.getMethod("setValue",  new Class[] {m.getReturnType()}) == null)
  +                        return true;
  +                    return false;
  +                } catch (java.lang.NoSuchMethodException e) {
  +                    return true;  // getValue & fromValue exist.  setValue does not exist.  Thus return true. 
  +                }
  +            }
  +        } catch (java.lang.NoSuchMethodException e) {}
  +        return false;
  +    }  
   }
  
  
  
  1.42.2.1  +5 -3      xml-axis/java/src/org/apache/axis/utils/resources.properties
  
  Index: resources.properties
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v
  retrieving revision 1.42
  retrieving revision 1.42.2.1
  diff -u -r1.42 -r1.42.2.1
  --- resources.properties	16 Jan 2002 19:14:02 -0000	1.42
  +++ resources.properties	28 Jan 2002 06:43:05 -0000	1.42.2.1
  @@ -290,6 +290,8 @@
   # NOTE:  in noEngineConfig00, do not translate "engineConfig"
   noEngineConfig00=Wanted ''engineConfig'' element, got ''{0}''
   
  +noEngineWSDD=Engine configuration is not present or not WSDD!
  +
   noHandler00=Cannot locate handler:  {0}
   
   # NOTE:  in noHandler01, do not translate "QName"
  @@ -593,7 +595,7 @@
   deserPutValueDebug00=Put of deserialized value= {0} for id= {1}
   j2wemitter00=emitter
   j2wusage00=Usage: {0}
  -j2woptions00=Options: 
  +j2woptions00=Options:
   j2wdetails00=Details:\n   portType    name= <class-of-portType name>\n   binding     name= <--service value>SoapBinding\n   service     name= <--service value>Service\n   port        name= <--service value>\n   address location= <--location value>
   j2wopthelp00=print this message and exit
   j2woptoutput00=output Wsdl filename
  @@ -610,11 +612,11 @@
   j2woptfactory00=name of the Java2WSDLFactory class for extending WSDL generation functions
   j2woptimplClass00=optional class that contains implementation of methods in class-of-portType.  The debug information in the class is used to obtain the method parameter names, which are used to set the WSDL part names.
   j2werror00=Error: {0}
  -j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All. 
  +j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All.
   
   optionSkeletonDeploy00=(true or false) Indicate whether to deploy skeleton or implementation class.
   j2wMissingLocation00=The -l <location> option must be specified if the full wsdl or the implementation wsdl is requested.
   invalidSolResp00={0} is a solicit-response style operation and is unsupported.
   invalidNotif00={0} is a notification style operation and is unsupported.
   
  -multipleBindings00=Error: Multiple bindings use the same portType, and I can not handle this case.  Giving up in shame.
  +multipleBindings00=Warning: Multiple bindings use the same portType: {0}.  Only one interface is currently generated, which may not be what you want.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.1   +6 -6      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.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- Emitter.java	18 Jan 2002 16:20:55 -0000	1.9
  +++ Emitter.java	28 Jan 2002 06:43:05 -0000	1.9.2.1
  @@ -68,8 +68,8 @@
   
   import org.apache.axis.Constants;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMappingRegistryImpl;
   import org.apache.axis.utils.XMLUtils;
   import org.w3c.dom.Document;
   
  @@ -127,7 +127,7 @@
       private String serviceName;
       private String targetService = null;
       private String description;
  -    private TypeMappingRegistry reg;
  +    private TypeMappingRegistry reg = null;
       private Namespaces namespaces;
   
       private ArrayList encodingList;
  @@ -365,10 +365,10 @@
               }
               
               encodingList = new ArrayList();
  -            encodingList.add(Constants.URI_SOAP_ENC);
  +            encodingList.add(Constants.URI_CURRENT_SOAP_ENC);
               
               if (reg == null) {
  -                reg = new SOAPTypeMappingRegistry();
  +                reg = new TypeMappingRegistryImpl();
               }
   
               if (intfNS == null) 
  @@ -405,8 +405,8 @@
                                Constants.NSPREFIX_WSDL);
   
           def.addNamespace(Constants.NSPREFIX_SOAP_ENC,
  -                         Constants.URI_SOAP_ENC);
  -        namespaces.putPrefix(Constants.URI_SOAP_ENC, 
  +                         Constants.URI_CURRENT_SOAP_ENC);
  +        namespaces.putPrefix(Constants.URI_CURRENT_SOAP_ENC, 
                                Constants.NSPREFIX_SOAP_ENC);
   
           def.addNamespace(Constants.NSPREFIX_SCHEMA_XSD,
  
  
  
  1.10.2.1  +11 -9     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.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- Types.java	4 Jan 2002 22:52:38 -0000	1.10
  +++ Types.java	28 Jan 2002 06:43:05 -0000	1.10.2.1
  @@ -57,8 +57,8 @@
   package org.apache.axis.wsdl.fromJava;
   
   import org.apache.axis.Constants;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.utils.XMLUtils;
   
   import org.w3c.dom.Attr;
  @@ -100,7 +100,7 @@
   
       Definition def;
       Namespaces namespaces = null;
  -    TypeMappingRegistry reg;
  +    TypeMapping tm;
       String targetNamespace;
       Element wsdlTypesElem = null;
       HashMap schemaTypes = null;
  @@ -125,7 +125,9 @@
                    Java2WSDLFactory factory) {
           this.def = def;
           createDocumentFragment();
  -        this.reg = reg;
  +        if (reg != null) {
  +            tm = (TypeMapping) reg.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC);
  +        }
           this.namespaces = namespaces;
           this.targetNamespace = targetNamespace;
           schemaElementNames = new HashMap();
  @@ -149,7 +151,7 @@
           if (type.getName().equals("void"))
             return null;
           if (isSimpleType(type)) {
  -            javax.xml.rpc.namespace.QName qName = reg.getTypeQName(type);
  +            javax.xml.rpc.namespace.QName qName = getTypeQName(type);
               return getWsdlQName(qName);
           }else {
               if (wsdlTypesElem == null)
  @@ -200,11 +202,11 @@
   
               // Check for Byte[], byte[] and Object[]
               if (componentType == java.lang.Byte.class) {
  -                qName = new javax.xml.rpc.namespace.QName(Constants.URI_SOAP_ENC, "base64");
  +                qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SOAP_ENC, "base64");
               } else if (componentType == java.lang.Byte.TYPE) {
                   qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SCHEMA_XSD, "base64Binary");
               } else if (componentType == java.lang.Object.class) {
  -                qName = new javax.xml.rpc.namespace.QName(Constants.URI_SOAP_ENC, "Array");
  +                qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SOAP_ENC, "Array");
               } else {
                   // Construct ArrayOf in targetNamespace
                   javax.xml.rpc.namespace.QName cqName = getTypeQName(componentType);
  @@ -215,7 +217,7 @@
               } 
           } else {
               // Get the QName from the registry, or create our own.
  -            qName = reg.getTypeQName(type);
  +            qName = tm.getTypeQName(type);
               if (qName == null) {
                   String pkg = getPackageNameFromFullName(type.getName());
                   String lcl = getLocalNameFromFullName(type.getName());
  @@ -306,9 +308,9 @@
   
           // Quick return if schema type
           if (isSimpleSchemaType(type))
  -            return Constants.NSPREFIX_SCHEMA_XSD + ":" + reg.getTypeQName(type).getLocalPart();
  +            return Constants.NSPREFIX_SCHEMA_XSD + ":" + getTypeQName(type).getLocalPart();
           if (isSimpleSoapEncodingType(type))
  -            return Constants.NSPREFIX_SOAP_ENC + ":" + reg.getTypeQName(type).getLocalPart();
  +            return Constants.NSPREFIX_SOAP_ENC + ":" + getTypeQName(type).getLocalPart();
   
           // Write the namespace
           QName qName = writeTypeNamespace(type);
  
  
  
  1.5.2.1   +1 -0      xml-axis/java/src/org/apache/axis/wsdl/fromJava/todo.txt
  
  Index: todo.txt
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/todo.txt,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- todo.txt	3 Jan 2002 20:33:43 -0000	1.5
  +++ todo.txt	28 Jan 2002 06:43:05 -0000	1.5.2.1
  @@ -14,6 +14,7 @@
   * Make PackageName=Namespace configurable using a properties file
   * Generate JAX-RPC style stub, skeleton and optionally refactor exporting 
     class as the impl class *** (see Note 1) ***
  +* Need to generate <fault> information.
   
   Group 2
   -------
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +23 -0     xml-axis/java/src/org/apache/axis/wsdl/toJava/BindingEntry.java
  
  Index: BindingEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/BindingEntry.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- BindingEntry.java	11 Dec 2001 15:08:47 -0000	1.1
  +++ BindingEntry.java	28 Jan 2002 06:43:05 -0000	1.1.2.1
  @@ -85,6 +85,8 @@
       private int     bindingType;
       private int     bindingStyle;
       private HashMap attributes;
  +    private HashMap  parameters = new HashMap ();
  +    
   
       /**
        * Construct a BindingEntry from a WSDL4J Binding object and the additional binding info:
  @@ -98,6 +100,27 @@
           this.bindingStyle = bindingStyle;
           this.attributes = attributes;
       } // ctor
  +
  +    /**
  +     * Get the Parameters object for the given operation.
  +     */
  +    public Parameters getParameters(String operationName) {
  +        return (Parameters) parameters.get(operationName);
  +    } // getParameters
  +
  +    /**
  +     * Get all of the parameters for all operations.
  +     */
  +    public HashMap getParameters() {
  +        return parameters;
  +    } // getParameters
  +
  +    /**
  +     * Set the parameters for all operations
  +     */ 
  +    public void setParameters(HashMap parameters) {
  +        this.parameters = parameters;
  +    }
   
       /**
        * Get this entry's WSDL4J Binding object.
  
  
  
  1.8.2.1   +7 -3      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.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- Emitter.java	23 Jan 2002 15:45:06 -0000	1.8
  +++ Emitter.java	28 Jan 2002 06:43:05 -0000	1.8.2.1
  @@ -124,6 +124,7 @@
           this.writerFactory = writerFactory;
       } // ctor
   
  +    public SymbolTable getSymbolTable() { return symbolTable;}
       /**
        * Call this method if you have a uri for the WSDL document
        * @param String wsdlURI the location of the WSDL file.
  @@ -133,10 +134,12 @@
               System.out.println(JavaUtils.getMessage("parsing00", uri));
   
           // calculate baseURI so that imported relative URI's work
  +        int lastSeparator = uri.lastIndexOf(File.separatorChar);
           int lastSlash = uri.lastIndexOf('/');
  +        int index = (lastSlash > lastSeparator) ? lastSlash : lastSeparator;
           String baseURI = null;
  -        if (lastSlash > 0) {
  -            baseURI = uri.substring(0, lastSlash + 1);
  +        if (index > 0) {
  +            baseURI = uri.substring(0, index + 1);
           }
           emit(baseURI, XMLUtils.newDocument(uri));
       } // emit
  @@ -148,7 +151,8 @@
        */
       public void emit(String context, Document doc) throws IOException, WSDLException {
           WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
  -        reader.setFeature("verbose", bVerbose);
  +        // The verbose option is no longer supported.
  +        //reader.setFeature("verbose", bVerbose);
           def = reader.readWSDL(context, doc);
           this.doc = doc;
           namespaces = new Namespaces(outputDir);
  
  
  
  1.1.2.1   +14 -0     xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBindingWriter.java
  
  Index: JavaBindingWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBindingWriter.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- JavaBindingWriter.java	11 Dec 2001 15:08:47 -0000	1.1
  +++ JavaBindingWriter.java	28 Jan 2002 06:43:05 -0000	1.1.2.1
  @@ -71,6 +71,7 @@
       Writer stubWriter = null;
       Writer skelWriter = null;
       Writer implWriter = null;
  +    Writer interfaceWriter = null;
   
       /**
        * Constructor.
  @@ -79,9 +80,19 @@
               Emitter emitter,
               Binding binding,
               SymbolTable symbolTable) {
  +
           BindingEntry bEntry = symbolTable.getBindingEntry(binding.getQName());
           if (bEntry.isReferenced()) {
  +            // Interface writer
  +            PortTypeEntry ptEntry = 
  +                    symbolTable.getPortTypeEntry(binding.getPortType().getQName());
  +            interfaceWriter =
  +                    new JavaInterfaceWriter(emitter, ptEntry, bEntry, symbolTable);
  +            
  +            // Stub writer
               stubWriter = new JavaStubWriter(emitter, bEntry, symbolTable);
  +
  +            // Skeleton and Impl writers
               if (emitter.bEmitSkeleton) {
                   skelWriter = new JavaSkelWriter(emitter, bEntry, symbolTable);
                   String fileName = Utils.getJavaLocalName(bEntry.getName())
  @@ -106,6 +117,9 @@
        * Write all the binding bindnigs:  stub, skeleton, and impl.
        */
       public void write() throws IOException {
  +        if (interfaceWriter != null) {
  +            interfaceWriter.write();
  +        }
           if (stubWriter != null) {
               stubWriter.write();
           }
  
  
  
  1.10.2.1  +1 -0      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.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- JavaDeployWriter.java	18 Jan 2002 20:11:36 -0000	1.10
  +++ JavaDeployWriter.java	28 Jan 2002 06:43:05 -0000	1.10.2.1
  @@ -148,6 +148,7 @@
           for (int i = 0; i < types.size(); ++i) {
               TypeEntry type = (TypeEntry) types.elementAt(i);
               if (type.getBaseType() == null && type.isReferenced()
  +                    && !type.isOnlyLiteralReferenced()
                       && !type.getName().endsWith("[]")) {
                   pw.println("  <beanMapping");
                   pw.println("    xmlns:ns=\"" + type.getQName().getNamespaceURI() + "\"");
  
  
  
  1.5.2.1   +3 -2      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaHolderWriter.java
  
  Index: JavaHolderWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaHolderWriter.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- JavaHolderWriter.java	10 Jan 2002 20:08:51 -0000	1.5
  +++ JavaHolderWriter.java	28 Jan 2002 06:43:05 -0000	1.5.2.1
  @@ -74,8 +74,9 @@
                   emitter,
                   new QName(
                           type.getQName().getNamespaceURI(),
  -                        Utils.xmlNameToJavaClass(type.getQName().getLocalPart())),
  -                "Holder",
  +                        Utils.holder(type,emitter.getSymbolTable()).substring(
  +                        Utils.holder(type,emitter.getSymbolTable()).lastIndexOf('.')+1)),
  +                null,
                   "java",
                   JavaUtils.getMessage("genHolder00"), "holder");
           this.type = type;
  
  
  
  1.7.2.1   +1 -1      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaImplWriter.java
  
  Index: JavaImplWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaImplWriter.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- JavaImplWriter.java	17 Jan 2002 17:20:37 -0000	1.7
  +++ JavaImplWriter.java	28 Jan 2002 06:43:05 -0000	1.7.2.1
  @@ -121,7 +121,7 @@
               Operation ptOperation = operation.getOperation();
               OperationType type = ptOperation.getStyle();
               Parameters parameters =
  -                    ptEntry.getParameters(operation.getOperation().getName());
  +                    bEntry.getParameters(operation.getOperation().getName());
   
               // These operation types are not supported.  The signature
               // will be a string stating that fact.
  
  
  
  1.2.2.1   +28 -7     xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java
  
  Index: JavaInterfaceWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaInterfaceWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- JavaInterfaceWriter.java	10 Jan 2002 20:08:51 -0000	1.2
  +++ JavaInterfaceWriter.java	28 Jan 2002 06:43:05 -0000	1.2.2.1
  @@ -73,30 +73,51 @@
       private PortType      portType;
       private PortTypeEntry ptEntry;
       private SymbolTable   symbolTable;
  +    private BindingEntry  bEntry;
   
       /**
        * Constructor.
        */
       protected JavaInterfaceWriter(
               Emitter emitter,
  -            PortTypeEntry ptEntry, SymbolTable symbolTable) {
  +            PortTypeEntry ptEntry, BindingEntry bEntry, SymbolTable symbolTable) {
           super(emitter, ptEntry, "", "java", JavaUtils.getMessage("genIface00"), "interface");
           this.ptEntry = ptEntry;
           this.portType = ptEntry.getPortType();
           this.symbolTable = symbolTable;
  +        this.bEntry = bEntry;
       } // ctor
   
       /**
  +     * Override write method to prevent duplicate interfaces because
  +     * of two bindings referencing the same portType
  +     */
  +    public void write() throws IOException {
  +        String fqClass = packageName + "." + className;
  +        
  +        // Do not emit the same portType/interface twice
  +        // Warn the user and skip writing this class.
  +        // XXX This would be the wrong thing if the two bindings
  +        // XXX refer to the same port type, but describe it in a different way.
  +        // XXX For example, one has use=literal, the other use=encoded.
  +         if (emitter.fileInfo.getClassNames().contains(fqClass)) {
  +             System.err.println(
  +                     JavaUtils.getMessage("multipleBindings00", 
  +                                          portType.getQName().toString()));
  +             return;
  +         }
  +
  +        // proceed normally
  +        super.write();
  +    } // write
  +
  +    /**
        * Write the body of the portType interface file.
        */
       protected void writeFileBody() throws IOException {
           pw.println("public interface " + className + " extends java.rmi.Remote {");
   
  -        // Remove Duplicates - happens with only a few WSDL's. No idea why!!! 
  -        // (like http://www.xmethods.net/tmodels/InteropTest.wsdl) 
  -        // TODO: Remove this patch...
  -        // NOTE from RJB:  this is a WSDL4J bug and the WSDL4J guys have been notified.
  -        Iterator operations = (new HashSet(portType.getOperations())).iterator();
  +        Iterator operations = portType.getOperations().iterator();
           while(operations.hasNext()) {
               Operation operation = (Operation) operations.next();
               writeOperation(operation);
  @@ -111,7 +132,7 @@
        */
       private void writeOperation(Operation operation) throws IOException {
           writeComment(pw, operation.getDocumentationElement());
  -        Parameters parms = ptEntry.getParameters(operation.getName());
  +        Parameters parms = bEntry.getParameters(operation.getName());
           pw.println(parms.signature + ";");
       } // writeOperation
   
  
  
  
  1.3.2.1   +2 -2      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
  
  Index: JavaServiceImplWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- JavaServiceImplWriter.java	10 Jan 2002 20:08:51 -0000	1.3
  +++ JavaServiceImplWriter.java	28 Jan 2002 06:43:05 -0000	1.3.2.1
  @@ -166,7 +166,7 @@
               pw.println("    }" );
               pw.println("" );
   
  -            pw.println("    public " + bindingType + " get" + portName + "() {");
  +            pw.println("    public " + bindingType + " get" + portName + "() throws javax.xml.rpc.JAXRPCException {");
               pw.println("       java.net.URL endpoint;");
               pw.println("        try {");
               pw.println("            endpoint = new java.net.URL(" + portName + "_address);");
  @@ -178,7 +178,7 @@
               pw.println("        return get" + portName + "(endpoint);");
               pw.println("    }");
               pw.println();
  -            pw.println("    public " + bindingType + " get" + portName + "(java.net.URL portAddress) {");
  +            pw.println("    public " + bindingType + " get" + portName + "(java.net.URL portAddress) throws javax.xml.rpc.JAXRPCException {");
               pw.println("        try {");
               pw.println("            return new " + stubClass + "(portAddress, this);");
               pw.println("        }");
  
  
  
  1.9.2.1   +2 -2      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
  
  Index: JavaSkelWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- JavaSkelWriter.java	16 Jan 2002 17:26:16 -0000	1.9
  +++ JavaSkelWriter.java	28 Jan 2002 06:43:05 -0000	1.9.2.1
  @@ -150,7 +150,7 @@
           for (int i = 0; i < operations.size(); ++i) {
               BindingOperation operation = (BindingOperation) operations.get(i);
               Parameters parameters =
  -                    ptEntry.getParameters(operation.getOperation().getName());
  +                    bEntry.getParameters(operation.getOperation().getName());
   
               if (parameters != null) {
                   // The invoked java name of the operation is stored.
  @@ -176,7 +176,7 @@
           for (int i = 0; i < operations.size(); ++i) {
               BindingOperation operation = (BindingOperation) operations.get(i);
               Parameters parameters =
  -                    ptEntry.getParameters(operation.getOperation().getName());
  +                    bEntry.getParameters(operation.getOperation().getName());
   
               // Get the soapAction from the <soap:operation>
               String soapAction = "";
  
  
  
  1.19.2.1  +20 -22    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.19
  retrieving revision 1.19.2.1
  diff -u -r1.19 -r1.19.2.1
  --- JavaStubWriter.java	18 Jan 2002 21:05:46 -0000	1.19
  +++ JavaStubWriter.java	28 Jan 2002 06:43:05 -0000	1.19.2.1
  @@ -141,7 +141,7 @@
           if (types.size() > 0) {
               pw.println("    private java.util.Vector cachedSerClasses = new java.util.Vector();");
               pw.println("    private java.util.Vector cachedSerQNames = new java.util.Vector();");
  -            pw.println("    private java.util.Vector cachedSerializers = new java.util.Vector();");
  +            pw.println("    private java.util.Vector cachedSerFactories = new java.util.Vector();");
               pw.println("    private java.util.Vector cachedDeserFactories = new java.util.Vector();");
           }
           pw.println();
  @@ -240,17 +240,15 @@
           pw.println("                call.setProperty(key, cachedProperties.get(key));");
           pw.println("            }");
           if (types.size() > 0) {
  -            pw.println("            for (int i = 0; i < cachedSerializers.size(); ++i) {");
  +            pw.println("            for (int i = 0; i < cachedSerFactories.size(); ++i) {");
               pw.println("                Class cls = (Class) cachedSerClasses.get(i);");
               pw.println("                javax.xml.rpc.namespace.QName qname =");
               pw.println("                        (javax.xml.rpc.namespace.QName) cachedSerQNames.get(i);");
  -            pw.println("                org.apache.axis.encoding.Serializer ser =");
  -            pw.println("                        (org.apache.axis.encoding.Serializer) cachedSerializers.get(i);");
  -            pw.println("                org.apache.axis.encoding.DeserializerFactory deserFac =");
  -            pw.println("                        (org.apache.axis.encoding.DeserializerFactory)");
  +            pw.println("                Class sf = (Class)");
  +            pw.println("                         cachedSerFactories.get(i);");
  +            pw.println("                Class df = (Class)");
               pw.println("                         cachedDeserFactories.get(i);");
  -            pw.println("                call.addSerializer(cls, qname, ser);");
  -            pw.println("                call.addDeserializerFactory(qname, cls, deserFac);");
  +            pw.println("                call.registerTypeMapping(cls, qname, sf, df, false);");
               pw.println("            }");
           }
           pw.println("            return call;");
  @@ -266,7 +264,7 @@
           for (int i = 0; i < operations.size(); ++i) {
               BindingOperation operation = (BindingOperation) operations.get(i);
               Parameters parameters =
  -                    ptEntry.getParameters(operation.getOperation().getName());
  +                    bEntry.getParameters(operation.getOperation().getName());
   
               // Get the soapAction from the <soap:operation>
               String soapAction = "";
  @@ -336,14 +334,12 @@
           HashSet types = new HashSet();
           HashSet firstPassTypes = new HashSet();
   
  -        PortTypeEntry pe = symbolTable.getPortTypeEntry(portType.getQName());
  -
           // Get all the types from all the operations
           List operations = portType.getOperations();
   
           for (int i = 0; i < operations.size(); ++i) {
               Operation op = (Operation) operations.get(i);
  -            firstPassTypes.addAll(getTypesInOperation(op, pe));
  +            firstPassTypes.addAll(getTypesInOperation(op));
           }
   
           // Extract those types which are complex types.
  @@ -365,11 +361,11 @@
        * This method returns a set of all the TypeEntry in a given Operation.
        * The elements of the returned HashSet are TypeEntry.
        */
  -    private HashSet getTypesInOperation(Operation operation, PortTypeEntry portEntry) {
  +    private HashSet getTypesInOperation(Operation operation) {
           HashSet types = new HashSet();
           Vector v = new Vector();
   
  -        Parameters params = portEntry.getParameters(operation.getName());
  +        Parameters params = bEntry.getParameters(operation.getName());
           
           // Loop over parameter types for this operation
           for (int i=0; i < params.list.size(); i++) {
  @@ -434,19 +430,21 @@
           }
           if ( firstSer ) {
               pw.println("            Class cls;" );
  -            pw.println("            org.apache.axis.encoding.Serializer ser;");
  -            pw.println("            org.apache.axis.encoding.DeserializerFactory deserFac;");
  +            pw.println("            javax.xml.rpc.namespace.QName qName;" );
  +            pw.println("            Class sf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;");
  +            pw.println("            Class df = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;");
           }
           firstSer = false ;
   
           QName qname = type.getQName();
  -        pw.println("            cachedSerQNames.add(new javax.xml.rpc.namespace.QName(\""
  -                + qname.getNamespaceURI() + "\", \"" + qname.getLocalPart()
  -                + "\"));");
  +        pw.println("            qName = new javax.xml.rpc.namespace.QName(\""
  +                   + qname.getNamespaceURI() + "\", \"" + qname.getLocalPart()
  +                   + "\");");
  +        pw.println("            cachedSerQNames.add(qName);");
           pw.println("            cls = " + type.getName() + ".class;");
           pw.println("            cachedSerClasses.add(cls);");
  -        pw.println("            cachedSerializers.add(new org.apache.axis.encoding.BeanSerializer(cls));");
  -        pw.println("            cachedDeserFactories.add(org.apache.axis.encoding.BeanSerializer.getFactory());");
  +        pw.println("            cachedSerFactories.add(sf);");
  +        pw.println("            cachedDeserFactories.add(df);");
           pw.println();
       } // writeSerializationInit
   
  @@ -520,7 +518,7 @@
               // turn off multirefs
               pw.println("        call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);");
               // turn off XSI types
  -            pw.println("        call.setProperty(org.apache.axis.AxisEngine.PROP_SEND_XSI, Boolean.FALSE);");
  +            pw.println("        call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);");
           }
           
           // Operation name
  
  
  
  1.9.2.1   +16 -24    xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
  
  Index: JavaTestCaseWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- JavaTestCaseWriter.java	17 Jan 2002 16:18:28 -0000	1.9
  +++ JavaTestCaseWriter.java	28 Jan 2002 06:43:05 -0000	1.9.2.1
  @@ -153,28 +153,35 @@
           pw.println("    public void test" + portName + "() {");
           pw.print("        ");
           pw.print(bindingType);
  -        pw.print(" binding = new ");
  +        pw.println(" binding;");
  +        pw.println("        try {");
  +        pw.print("            binding = new ");
           pw.print(this.className.substring(0, this.className.length() - "TestCase".length()));
           pw.print("().get");
           pw.print(portName);
           pw.println("();");
  +        pw.println("        }");
  +        pw.println("        catch (javax.xml.rpc.JAXRPCException jre) {");
  +        pw.print("            ");
  +        pw.println("throw new junit.framework.AssertionFailedError(\"JAX-RPC Exception caught: \" + jre);");
  +        pw.println("        }");
   
           pw.println("        assertTrue(\"" +
                   JavaUtils.getMessage("null00", "binding") +
                   "\", binding != null);");
   
  -        this.writePortTestCode(portType);
  +        this.writePortTestCode(portType, bEntry);
   
           pw.println("    }");
       } // writeServiceTestCode
   
  -    private final void writePortTestCode(PortType port) throws IOException {
  +    private final void writePortTestCode(PortType port, BindingEntry bEntry) throws IOException {
           PortTypeEntry ptEntry = symbolTable.getPortTypeEntry(port.getQName());
           Iterator ops = port.getOperations().iterator();
           while (ops.hasNext()) {
               Operation op = (Operation) ops.next();
               OperationType type = op.getStyle();
  -            Parameters params = ptEntry.getParameters(op.getName());
  +            Parameters params = bEntry.getParameters(op.getName());
   
               // These operation types are not supported.  The signature
               // will be a string stating that fact.
  @@ -290,22 +297,7 @@
   
               pw.println(");");
   
  -/* I'm not sure why we'd do this...
  -            if ( !"void".equals(params.returnType) ) {
  -                pw.print("            ");
  -
  -                if ( this.emitter.isPrimitiveType( params.returnType ) ) {
  -                    if ( "boolean".equals( params.returnType ) ) {
  -                        pw.println("assertTrue(\"Value is still false\", value != false);");
  -                    } else {
  -                        pw.println("assertTrue(\"Value is still -3\", value != -3);");
  -                    }
  -                } else {
  -                    pw.println("assertTrue(\"Value is null\", value != null);");
  -                }
  -            }
  -*/
  -            pw.print("        }");
  +            pw.println("        }");
   
               Map faultMap = op.getFaults();
   
  @@ -317,18 +309,18 @@
                       count++;
                       Fault f = (Fault) i.next();
                       String namespace = port.getQName().getNamespaceURI();
  -                    pw.print(" catch (");
  +                    pw.print("        catch (");
                       pw.print(Utils.getFullExceptionName(
                               f, symbolTable, namespace));
                       pw.println(" e" + count + ") {");
                       pw.print("            ");
                       pw.println("throw new junit.framework.AssertionFailedError(\"" + f.getName() + " Exception caught: \" + e" + count + ");");
  -                    pw.print("        }");
  +                    pw.println("        }");
                   }
               }
  -            pw.println(" catch (java.rmi.RemoteException re) {");
  +            pw.println("        catch (java.rmi.RemoteException re) {");
               pw.print("            ");
  -            pw.println("throw new junit.framework.AssertionFailedError(\"Remote Exception caught: \" + re );");
  +            pw.println("throw new junit.framework.AssertionFailedError(\"Remote Exception caught: \" + re);");
               pw.println("        }");
           }
       } // writePortTestCode
  
  
  
  1.3.2.1   +1 -1      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java
  
  Index: JavaTypeWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- JavaTypeWriter.java	13 Dec 2001 17:33:17 -0000	1.3
  +++ JavaTypeWriter.java	28 Jan 2002 06:43:05 -0000	1.3.2.1
  @@ -82,7 +82,7 @@
               Emitter emitter,
               TypeEntry type,
               SymbolTable symbolTable) {
  -        if (type.isReferenced()) {
  +        if (type.isReferenced() && !type.isOnlyLiteralReferenced()) {
   
               // Determine what sort of type this is and instantiate the appropriate Writer.
               Node node = type.getNode();
  
  
  
  1.7.2.1   +16 -17    xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java
  
  Index: JavaWriterFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- JavaWriterFactory.java	15 Jan 2002 16:00:45 -0000	1.7
  +++ JavaWriterFactory.java	28 Jan 2002 06:43:05 -0000	1.7.2.1
  @@ -118,7 +118,7 @@
        * Return Wsdl2java's JavaPortTypeWriter object.
        */
       public Writer getWriter(PortType portType, SymbolTable symbolTable) {
  -        return new JavaPortTypeWriter(emitter, portType, symbolTable);
  +        return new NoopWriter();
       } // getWriter
   
       /**
  @@ -361,21 +361,18 @@
               Vector v = (Vector) it.next();
               for (int i = 0; i < v.size(); ++i) {
                   SymTabEntry entry = (SymTabEntry) v.elementAt(i);
  -                if (entry instanceof PortTypeEntry) {
  -                    PortTypeEntry ptEntry = (PortTypeEntry) entry;
  +                if (entry instanceof BindingEntry) {
  +                    BindingEntry bEntry = (BindingEntry) entry;
  +                    Binding binding = bEntry.getBinding();
  +                    PortTypeEntry ptEntry = 
  +                            symbolTable.getPortTypeEntry(binding.getPortType().getQName());
                       PortType portType = ptEntry.getPortType();
  -                    // Remove Duplicates - happens with only a few WSDL's. No idea why!!! 
  -                    // (like http://www.xmethods.net/tmodels/InteropTest.wsdl) 
  -                    // TODO: Remove this patch...
  -                    // NOTE from RJB:  this is a WSDL4J bug and the WSDL4J guys have been
  -                    // notified.
  -                    Iterator operations =
  -                            new HashSet(portType.getOperations()).iterator();
  +                    Iterator operations = portType.getOperations().iterator();
                       while(operations.hasNext()) {
                           Operation operation = (Operation) operations.next();
                           OperationType type = operation.getStyle();
                           String name = operation.getName();
  -                        Parameters parameters = ptEntry.getParameters(name);
  +                        Parameters parameters = bEntry.getParameters(name);
                           if (type == OperationType.SOLICIT_RESPONSE) {
                               parameters.signature = "    // " + JavaUtils.getMessage(
                                       "invalidSolResp00", name);
  @@ -443,18 +440,20 @@
           while (it.hasNext()) {
               Vector v = (Vector) it.next();
               for (int i = 0; i < v.size(); ++i) {
  -                if (v.get(i) instanceof PortTypeEntry) {
  -
  -                        // If entry is a portTypeEntry, look at all the Parameters
  -                    PortTypeEntry ptEntry = (PortTypeEntry) v.get(i);
  +                if (v.get(i) instanceof BindingEntry) {
  +                    // If entry is a BindingEntry, look at all the Parameters
  +                    // in its portType
  +                    BindingEntry bEntry = (BindingEntry) v.get(i);
  +                    PortTypeEntry ptEntry = 
  +                            symbolTable.getPortTypeEntry(bEntry.getBinding().getPortType().getQName());
                       Iterator operations =
  -                      ptEntry.getParameters().values().iterator();
  +                            bEntry.getParameters().values().iterator();
                       while (operations.hasNext()) {
                           Parameters parms = (Parameters) operations.next();
                           for (int j = 0; j < parms.list.size(); ++j) {
                               Parameter p =
                                       (Parameter)parms.list.get(j);
  -
  +                            
                               // If the given parameter is an inout or out parameter, then
                               // set a HOLDER_IS_NEEDED flag using the dynamicVar design.
                               if (p.mode != Parameter.IN) {
  
  
  
  1.1.2.1   +1 -16     xml-axis/java/src/org/apache/axis/wsdl/toJava/PortTypeEntry.java
  
  Index: PortTypeEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/PortTypeEntry.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- PortTypeEntry.java	11 Dec 2001 15:08:47 -0000	1.1
  +++ PortTypeEntry.java	28 Jan 2002 06:43:05 -0000	1.1.2.1
  @@ -67,16 +67,14 @@
   */
   public class PortTypeEntry extends SymTabEntry {
       private PortType portType;
  -    private HashMap  parameters = new HashMap ();
   
       /**
        * Construct a PortTypeEntry from a WSDL4J PortType object and a HashMap of Parameters objects,
        * keyed off of the operation name.
        */
  -    public PortTypeEntry(PortType portType, HashMap parameters) {
  +    public PortTypeEntry(PortType portType) {
           super(portType.getQName());
           this.portType = portType;
  -        this.parameters = parameters;
       } // ctor
   
       /**
  @@ -86,18 +84,5 @@
           return portType;
       } // getPortType
   
  -    /**
  -     * Get the Parameters object for the given operation.
  -     */
  -    public Parameters getParameters(String operationName) {
  -        return (Parameters) parameters.get(operationName);
  -    } // getParameters
  -
  -    /**
  -     * Get all of the parameters for all operations.
  -     */
  -    public HashMap getParameters() {
  -        return parameters;
  -    } // getParameters
   
   } // class PortTypeEntry
  
  
  
  1.14.2.1  +96 -71    xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java,v
  retrieving revision 1.14
  retrieving revision 1.14.2.1
  diff -u -r1.14 -r1.14.2.1
  --- SymbolTable.java	18 Jan 2002 21:05:46 -0000	1.14
  +++ SymbolTable.java	28 Jan 2002 06:43:05 -0000	1.14.2.1
  @@ -306,6 +306,7 @@
           populate(contextURL, def, doc);
           setReferences(def, doc);
           checkForUndefined();
  +        populateParameters();
       } // add
   
       /**
  @@ -404,11 +405,8 @@
                   }
               }
               populateMessages(def);
  -            // XXX binding must be before portType so we collect use info.
  -            // XXX This will change when we generate parameters after the symbol
  -            // XXX table is populated.
  -            populateBindings(def);
               populatePortTypes(def);
  +            populateBindings(def);
               populateServices(def);
           }
       } // populate
  @@ -745,35 +743,53 @@
               // that didn't contain a portType, merely a binding that referred
               // to a non-existent port type.  Don't bother with it.
               if (!portType.isUndefined()) {
  -                HashMap parameters = new HashMap();
  -
  -                // Remove Duplicates - happens with only a few WSDL's. No idea why!!! 
  -                // (like http://www.xmethods.net/tmodels/InteropTest.wsdl) 
  -                // TODO: Remove this patch...
  -                // NOTE from RJB:  this is a WSDL4J bug and the WSDL4J guys have been notified.
  -                Iterator operations = (new HashSet(portType.getOperations())).iterator();
  - 
  -                while(operations.hasNext()) {
  -                    Operation operation = (Operation) operations.next();
  -                    String namespace = portType.getQName().getNamespaceURI();
  -                    Parameters parms = parameters(operation, 
  -                                                  namespace, 
  -                                                  getBindingEntryForPortType(def, portType));
  -                    parameters.put(operation.getName(), parms);
  -                }
  -                PortTypeEntry ptEntry = new PortTypeEntry(portType, parameters);
  +                PortTypeEntry ptEntry = new PortTypeEntry(portType);
                   symbolTablePut(ptEntry);
               }
           }
       } // populatePortTypes
   
       /**
  +     * Create the parameters and store them in the bindingEntry.
  +     */ 
  +    private void populateParameters() throws IOException {
  +        Iterator it = symbolTable.values().iterator();
  +        while (it.hasNext()) {
  +            Vector v = (Vector) it.next();
  +            for (int i = 0; i < v.size(); ++i) {
  +                if (v.get(i) instanceof BindingEntry) {
  +                    BindingEntry bEntry = (BindingEntry) v.get(i);
  +                    
  +                    Binding binding = bEntry.getBinding();
  +                    PortType portType = binding.getPortType();
  +                    
  +                    HashMap parameters = new HashMap();
  +                    Iterator operations = portType.getOperations().iterator();
  +                    
  +                    // get parameters
  +                    while(operations.hasNext()) {
  +                        Operation operation = (Operation) operations.next();
  +                        String namespace = portType.getQName().getNamespaceURI();
  +                        Parameters parms = getOperationParameters(operation, 
  +                                                                  namespace, 
  +                                                                  bEntry);
  +                        parameters.put(operation.getName(), parms);
  +                    }
  +                    bEntry.setParameters(parameters);
  +                }
  +            }
  +        }
  +    } // populate Parameters
  +    
  +    /**
        * For the given operation, this method returns the parameter info conveniently collated.
        * There is a bit of processing that is needed to write the interface, stub, and skeleton.
        * Rather than do that processing 3 times, it is done once, here, and stored in the
        * Parameters object.
        */
  -    private Parameters parameters(Operation operation, String namespace, BindingEntry bindingEntry) throws IOException {
  +    private Parameters getOperationParameters(Operation operation, 
  +                                              String namespace, 
  +                                              BindingEntry bindingEntry) throws IOException {
           Parameters parameters = new Parameters();
   
           // The input and output Vectors, when filled in, will be of the form:
  @@ -966,19 +982,23 @@
                       
                       // Get the Element
                       Element e = getElement((elementName));
  +                    Node node = getTypeEntry(elementName, true).getNode();
  +                    
  +                    // Check if this element is of the form:
  +                    //    <element name="foo" type="tns:foo_type"/> 
  +                    QName type = Utils.getNodeTypeRefQName(e.getNode(), "type");
  +                    if (type != null)
  +                        node = getTypeEntry(type, false).getNode();
                       
                       // Get the nested type entries.
                       Vector vTypes = SchemaUtils.getComplexElementTypesAndNames(
  -                            getTypeEntry(elementName, true).getNode(), 
  +                            //getTypeEntry(elementName, true).getNode(), 
  +                            node, 
                               this);
                       
                       if (vTypes != null) {
                           // add the elements in this list
                           v.addAll(vTypes);
  -                        // turn off generation of the element type
  -                        // XXX is there a better way to do this?
  -                        symbolTable.remove(elementName);
  -                        types.remove(e);
                       } else {
                           // XXX - This should be a SOAPElement/SOAPBodyElement
                           v.add(getElement(elementName));
  @@ -1130,7 +1150,7 @@
                       if (stuff.isEmpty()) {
                           for (int i = 0; i < types.size(); ++i) {
                               TypeEntry type = (TypeEntry) types.get(i);
  -                            setTypeReferences(type, doc);
  +                            setTypeReferences(type, doc, false);
                           }
                       }
                       else {
  @@ -1139,7 +1159,7 @@
                               Message message = (Message) i.next();
                               MessageEntry mEntry =
                                       getMessageEntry(message.getQName());
  -                            setMessageReferences(mEntry, def, doc);
  +                            setMessageReferences(mEntry, def, doc, false);
                           }
                       }
                   }
  @@ -1149,7 +1169,7 @@
                           PortType portType = (PortType) i.next();
                           PortTypeEntry ptEntry =
                                   getPortTypeEntry(portType.getQName());
  -                        setPortTypeReferences(ptEntry, def, doc);
  +                        setPortTypeReferences(ptEntry, null, def, doc);
                       }
                   }
               }
  @@ -1172,7 +1192,21 @@
           }
       } // setReferences
   
  -    private void setTypeReferences(TypeEntry entry, Document doc) {
  +    private void setTypeReferences(TypeEntry entry, Document doc,
  +            boolean literal) {
  +
  +        // If this type is ONLY referenced from a literal usage in a binding,
  +        // then isOnlyLiteralReferenced should return true.
  +        if (!entry.isReferenced() && literal) {
  +            entry.setOnlyLiteralReference(true);
  +        }
  +        // If this type was previously only referenced as a literal type,
  +        // but now it is referenced in a non-literal manner, turn off the
  +        // onlyLiteralReference flag.
  +        else if (entry.isOnlyLiteralReferenced() && !literal) {
  +            entry.setOnlyLiteralReference(false);
  +        }
  +
           // If we don't want to emit stuff from imported files, only set the
           // isReferenced flag if this entry exists in the immediate WSDL file.
           Node node = entry.getNode();
  @@ -1184,7 +1218,8 @@
                   if (referentName != null) {
                       TypeEntry referent = getTypeEntry(referentName, forElement.value);
                       if (referent != null) {
  -                        setTypeReferences(referent, doc);
  +                        //setTypeReferences(referent, doc, literal);
  +                        setTypeReferences(referent, doc, false);
                       }
                   }
               }
  @@ -1195,7 +1230,8 @@
           while (it.hasNext()) {
               TypeEntry nestedType = (TypeEntry) it.next();
               if (!nestedType.isReferenced()) {
  -                setTypeReferences(nestedType, doc);
  +                //setTypeReferences(nestedType, doc, literal);
  +                setTypeReferences(nestedType, doc, false);
               }
           }
       } // setTypeReferences
  @@ -1204,7 +1240,7 @@
        * Set the isReferenced flag to true on all SymTabEntries that the given Meesage refers to.
        */
       private void setMessageReferences(
  -            MessageEntry entry, Definition def, Document doc) {
  +            MessageEntry entry, Definition def, Document doc, boolean literal) {
           // If we don't want to emit stuff from imported files, only set the
           // isReferenced flag if this entry exists in the immediate WSDL file.
           Message message = entry.getMessage();
  @@ -1227,11 +1263,16 @@
               Part part = (Part) parts.next();
               TypeEntry type = getType(part.getTypeName());
               if (type != null) {
  -                setTypeReferences(type, doc);
  +                setTypeReferences(type, doc, literal);
               }
               type = getElement(part.getElementName());
               if (type != null) {
  -                setTypeReferences(type, doc);
  +                setTypeReferences(type, doc, literal);
  +                //QName ref = Utils.getNodeTypeRefQName(type.getNode(), "type");
  +                TypeEntry refType = type.getRefType();
  +                if (refType != null) {
  +                  setTypeReferences(refType, doc, literal);
  +                }
               }
           }
       } // setMessageReference
  @@ -1240,7 +1281,8 @@
        * Set the isReferenced flag to true on all SymTabEntries that the given PortType refers to.
        */
       private void setPortTypeReferences(
  -            PortTypeEntry entry, Definition def, Document doc) {
  +            PortTypeEntry entry, BindingEntry bEntry,
  +            Definition def, Document doc) {
           // If we don't want to emit stuff from imported files, only set the
           // isReferenced flag if this entry exists in the immediate WSDL file.
           PortType portType = entry.getPortType();
  @@ -1264,26 +1306,37 @@
           while (operations.hasNext()) {
               Operation operation = (Operation) operations.next();
   
  -            // Query the input message
               Input input = operation.getInput();
  +            Output output = operation.getOutput();
  +
  +            // Find out if this reference is a literal reference or not.
  +            boolean literalInput = false;
  +            boolean literalOutput = false;
  +            if (bEntry != null) {
  +                literalInput = bEntry.getInputBodyType(operation) ==
  +                        BindingEntry.USE_LITERAL;
  +                literalOutput = bEntry.getOutputBodyType(operation) ==
  +                        BindingEntry.USE_LITERAL;
  +            }
  +
  +            // Query the input message
               if (input != null) {
                   Message message = input.getMessage();
                   if (message != null) {
                       MessageEntry mEntry = getMessageEntry(message.getQName());
                       if (mEntry != null) {
  -                        setMessageReferences(mEntry, def, doc);
  +                        setMessageReferences(mEntry, def, doc, literalInput);
                       }
                   }
               }
   
               // Query the output message
  -            Output output = operation.getOutput();
               if (output != null) {
                   Message message = output.getMessage();
                   if (message != null) {
                       MessageEntry mEntry = getMessageEntry(message.getQName());
                       if (mEntry != null) {
  -                        setMessageReferences(mEntry, def, doc);
  +                        setMessageReferences(mEntry, def, doc, literalOutput);
                       }
                   }
               }
  @@ -1296,7 +1349,7 @@
                   if (message != null) {
                       MessageEntry mEntry = getMessageEntry(message.getQName());
                       if (mEntry != null) {
  -                        setMessageReferences(mEntry, def, doc);
  +                        setMessageReferences(mEntry, def, doc, false);
                       }
                   }
               }
  @@ -1328,7 +1381,7 @@
           PortType portType = binding.getPortType();
           PortTypeEntry ptEntry = getPortTypeEntry(portType.getQName());
           if (ptEntry != null) {
  -            setPortTypeReferences(ptEntry, def, doc);
  +            setPortTypeReferences(ptEntry, entry, def, doc);
           }
       } // setBindingReferences
   
  @@ -1447,33 +1500,5 @@
                       JavaUtils.getMessage("alreadyExists00", "" + name));
           }
       } // symbolTablePut
  -
  -    /**
  -     * Utility function to get the BindingEntry for the given portType.
  -     * Does a reverse lookup of the portType in all the bindings.
  -     */ 
  -    public BindingEntry getBindingEntryForPortType(Definition def, PortType port) throws IOException {
  -        BindingEntry b = null;
  -        Iterator i = def.getBindings().values().iterator();
  -        while (i.hasNext()) {
  -            Binding binding = ((Binding) i.next());
  -            QName bindingPort = binding.getPortType().getQName();
  -            if (bindingPort.equals(port.getQName())) {
  -                if (b != null) {
  -                    // XXX - if more than one binding matches the portType
  -                    // we can't do the right thing since interfaces are generated
  -                    // from portTypes and the literal/encoded switch is in the
  -                    // binding.
  -                    throw new IOException(JavaUtils.getMessage("multipleBindings00"));
  -                }
  -                b = getBindingEntry(binding.getQName());
  -            }
  -        }
  -        // DEBUG
  -//        if ( b == null) {
  -//            System.out.println("Lookup: can't find binding for portType " + port.getQName());
  -//        }
  -        return b;
  -    }
   
   } // class SymbolTable
  
  
  
  1.5.2.1   +23 -0     xml-axis/java/src/org/apache/axis/wsdl/toJava/TypeEntry.java
  
  Index: TypeEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/TypeEntry.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- TypeEntry.java	14 Dec 2001 20:01:16 -0000	1.5
  +++ TypeEntry.java	28 Jan 2002 06:43:05 -0000	1.5.2.1
  @@ -125,6 +125,9 @@
                                    // until the Undefined type is found.
       protected boolean isBaseType;// Indicates if represented by a 
                                    // java primitive or util class
  +    protected boolean onlyLiteralReference = false; // Indicates
  +                                 // whether this type is only referenced
  +                                 // via a binding's literal use.
   
       /**
        * Create a TypeEntry object for an xml construct that references another type. 
  @@ -199,6 +202,26 @@
               return null;
           }
       }
  +
  +    /**
  +     * Is this type references ONLY as a literal type?  If a binding's
  +     * message's soapBody says:  use="literal", then a type is referenced
  +     * literally.  Note that that type's contained types (ie., an address
  +     * contains a phone#) are not referenced literally.  Since a type
  +     * that is ONLY referenced as a literal may cause a generator to act
  +     * differently (like WSDL2Java), this extra reference distinction is
  +     * needed.
  +     */
  +    public boolean isOnlyLiteralReferenced() {
  +        return onlyLiteralReference;
  +    } // isOnlyLiteralReferenced
  +
  +    /**
  +     * Set the isOnlyLiteralReference flag.
  +     */
  +    public void setOnlyLiteralReference(boolean set) {
  +        onlyLiteralReference = set;
  +    } // setOnlyLiteralRefeerence
   
       /**
        * getUndefinedTypeRef returns the Undefined TypeEntry that this entry depends on or NULL.
  
  
  
  1.10.2.1  +5 -1      xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java
  
  Index: Utils.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- Utils.java	7 Jan 2002 22:25:58 -0000	1.10
  +++ Utils.java	28 Jan 2002 06:43:05 -0000	1.10.2.1
  @@ -538,7 +538,11 @@
           }
           // Anything else with [] gets its holder from the qname
           else if (typeValue.endsWith("[]")) {
  -            return symbolTable.getJavaName(type.getQName()) + "Holder";
  +            String name = symbolTable.getJavaName(type.getQName());
  +            // This could be a special QName for a indexed property.
  +            // If so, change the [] to Array.
  +            name = JavaUtils.replace(name, "[]", "Array");
  +            return name + "Holder";
           }
           // String also has a reserved holder
           else if (typeValue.equals("String")) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.31.2.1  +17 -20    xml-axis/java/test/RPCDispatch/TestRPC.java
  
  Index: TestRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- TestRPC.java	15 Jan 2002 17:57:03 -0000	1.31
  +++ TestRPC.java	28 Jan 2002 06:43:06 -0000	1.31.2.1
  @@ -6,6 +6,8 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
  @@ -17,6 +19,7 @@
   import org.w3c.dom.Element;
   import org.w3c.dom.Text;
   
  +import javax.xml.rpc.namespace.QName;
   import java.util.Vector;
   
   /**
  @@ -39,20 +42,14 @@
                "</soap:Body>\n" +
           "</soap:Envelope>\n";
   
  -    private AxisServer engine = new AxisServer();
  -    private Handler RPCDispatcher;
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
   
       private String SOAPAction = "urn:reverse";
   
       public TestRPC(String name) {
           super(name);
           engine.init();
  -        try {
  -            RPCDispatcher = engine.getHandler("RPCDispatcher");
  -        } catch (AxisFault fault) {
  -            // ???
  -        }
  -        // Debug.setDebugLevel(5);
       }
   
       /**
  @@ -109,10 +106,10 @@
        */
       public void testReverseString() throws Exception {
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "reverseString");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(new QName(null,SOAPAction), reverse);
   
           // invoke the service and verify the result
           assertEquals("Did not reverse the string correctly.", "cba", rpc("reverseString", new Object[] {"abc"}));
  @@ -123,10 +120,10 @@
        */
       public void testReverseData() throws Exception {
           // Register the reverseData service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "reverseData");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(new QName(null, SOAPAction), reverse);
   
           // invoke the service and verify the result
           Data input    = new Data(5, "abc", 3);
  @@ -139,10 +136,10 @@
        */
       public void testMessageContextImplicit() throws Exception {
           // Register the targetService service
  -        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
  +        SOAPService tgtSvc = new SOAPService(new RPCProvider());
           tgtSvc.setOption("className", "test.RPCDispatch.Service");
           tgtSvc.setOption("allowedMethods", "targetServiceImplicit");
  -        engine.deployService(SOAPAction, tgtSvc);
  +        provider.deployService(new QName(null, SOAPAction), tgtSvc);
   
           // invoke the service and verify the result
           assertEquals("SOAP Action did not equal the targetService.", 
  @@ -154,10 +151,10 @@
        */
       public void testMessageContextExplicit() throws Exception {
           // Register the targetService service
  -        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
  +        SOAPService tgtSvc = new SOAPService(new RPCProvider());
           tgtSvc.setOption("className", "test.RPCDispatch.Service");
           tgtSvc.setOption("allowedMethods", "targetServiceExplicit");
  -        engine.deployService(SOAPAction, tgtSvc);
  +        provider.deployService(new QName(null, SOAPAction), tgtSvc);
   
           // invoke the service and verify the result
           assertEquals("SOAP Action did not equal the targetService.", 
  @@ -169,10 +166,10 @@
        */
       public void testNull() throws Exception {
           // Register the echoInt service
  -        SOAPService echoInt = new SOAPService(RPCDispatcher);
  +        SOAPService echoInt = new SOAPService(new RPCProvider());
           echoInt.setOption("className", "test.RPCDispatch.Service");
           echoInt.setOption("allowedMethods", "echoInt");
  -        engine.deployService(SOAPAction, echoInt);
  +        provider.deployService(new QName(null, SOAPAction), echoInt);
   
           // invoke the service and verify the result
           assertNull("The result was not null as expected.", rpc("echoInt", new Object[] {null}));
  @@ -183,10 +180,10 @@
        */
       public void testSimpleFault() throws Exception {
           // Register the reverseData service
  -        SOAPService simpleFault = new SOAPService(RPCDispatcher);
  +        SOAPService simpleFault = new SOAPService(new RPCProvider());
           simpleFault.setOption("className", "test.RPCDispatch.Service");
           simpleFault.setOption("allowedMethods", "simpleFault");
  -        engine.deployService(SOAPAction, simpleFault);
  +        provider.deployService(new QName(null, SOAPAction), simpleFault);
   
           Object result = rpc("simpleFault", new Object[] {"foobar"});
           assertTrue("Did not get a fault as expected.", 
  
  
  
  1.22.2.1  +47 -23    xml-axis/java/test/RPCDispatch/TestSerializedRPC.java
  
  Index: TestSerializedRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestSerializedRPC.java,v
  retrieving revision 1.22
  retrieving revision 1.22.2.1
  diff -u -r1.22 -r1.22.2.1
  --- TestSerializedRPC.java	15 Jan 2002 17:57:03 -0000	1.22
  +++ TestSerializedRPC.java	28 Jan 2002 06:43:06 -0000	1.22.2.1
  @@ -6,8 +6,12 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.encoding.BeanSerializer;
  -import org.apache.axis.encoding.DeserializerFactory;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.encoding.ser.BeanSerializerFactory;
  +import org.apache.axis.encoding.ser.BeanDeserializerFactory;
  +import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
  @@ -39,21 +43,20 @@
                "</soap:Body>\n" +
           "</soap:Envelope>\n";
   
  -    private AxisServer engine = new AxisServer();
  -    private Handler RPCDispatcher;
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
   
       private String SOAPAction = "urn:reverse";
   
       public TestSerializedRPC(String name) throws Exception {
           super(name);
           engine.init();
  -        RPCDispatcher = engine.getHandler("RPCDispatcher");
  -        
  +
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "*");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(SOAPAction, reverse);
       }
   
       /**
  @@ -132,11 +135,18 @@
        * Test a method that reverses a data structure
        */
       public void testSerReverseData() throws Exception {
  -        BeanSerializer ser = new BeanSerializer(Data.class);
  -        DeserializerFactory dSerFactory = BeanSerializer.getFactory();
  -        QName qName = new QName("urn:foo", "Data");
  -        engine.registerTypeMapping(qName, Data.class, dSerFactory,
  -                                   ser);
  +        Class javaType = Data.class;
  +        QName xmlType = new QName("urn:foo", "Data");
  +        BeanSerializerFactory   sf = new BeanSerializerFactory(javaType, xmlType);
  +        BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType);
  +
  +        TypeMappingRegistry tmr = engine.getTypeMappingRegistry();
  +        TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC);
  +        if (tm == null) {
  +            tm = (TypeMapping) tmr.createTypeMapping();
  +            tmr.register(tm, new String[] {Constants.URI_SOAP_ENC});
  +        }
  +        tm.register(javaType, xmlType, sf, df);
           
           // invoke the service and verify the result
           String arg = "<arg0 xmlns:foo=\"urn:foo\" xsi:type=\"foo:Data\">";
  @@ -150,11 +160,18 @@
        * Test a method that reverses a data structure
        */
       public void testReverseDataWithUntypedParam() throws Exception {
  -        BeanSerializer ser = new BeanSerializer(Data.class);
  -        DeserializerFactory dSerFactory = BeanSerializer.getFactory();
  -        QName qName = new QName("urn:foo", "Data");
  -        engine.registerTypeMapping(qName, Data.class, dSerFactory,
  -                                   ser);
  +        Class javaType = Data.class;
  +        QName xmlType = new QName("urn:foo", "Data");
  +        BeanSerializerFactory   sf = new BeanSerializerFactory(javaType, xmlType);
  +        BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType);
  +
  +        TypeMappingRegistry tmr = engine.getTypeMappingRegistry();
  +        TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC);
  +        if (tm == null) {
  +            tm = (TypeMapping) tmr.createTypeMapping();
  +            tmr.register(tm, new String[] {Constants.URI_SOAP_ENC});
  +        }
  +        tm.register(javaType, xmlType, sf, df);
           
           // invoke the service and verify the result
           String arg = "<arg0 xmlns:foo=\"urn:foo\">";
  @@ -168,11 +185,18 @@
        * Test DOM round tripping
        */
       public void testArgAsDOM() throws Exception {
  -        BeanSerializer ser = new BeanSerializer(Data.class);
  -        DeserializerFactory dSerFactory = BeanSerializer.getFactory();
  -        QName qName = new QName("urn:foo", "Data");
  -        engine.registerTypeMapping(qName, Data.class, dSerFactory,
  -                                   ser);
  +        Class javaType = Data.class;
  +        QName xmlType = new QName("urn:foo", "Data");
  +        BeanSerializerFactory   sf = new BeanSerializerFactory(javaType, xmlType);
  +        BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType);
  +
  +        TypeMappingRegistry tmr = engine.getTypeMappingRegistry();
  +        TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC);
  +        if (tm == null) {
  +            tm = (TypeMapping) tmr.createTypeMapping();
  +            tmr.register(tm, new String[] {Constants.URI_SOAP_ENC});
  +        }
  +        tm.register(javaType, xmlType, sf, df);
           
           // invoke the service and verify the result
           String arg = "<arg0 xmlns:foo=\"urn:foo\">";
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.10.2.1  +14 -72    xml-axis/java/test/encoding/DataSer.java
  
  Index: DataSer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/DataSer.java,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- DataSer.java	23 Dec 2001 12:33:32 -0000	1.10
  +++ DataSer.java	28 Jan 2002 06:43:06 -0000	1.10.2.1
  @@ -1,91 +1,32 @@
   package test.encoding;
   
  -import org.apache.axis.encoding.DeserializationContext;
  -import org.apache.axis.encoding.Deserializer;
  -import org.apache.axis.encoding.DeserializerFactory;
  -import org.apache.axis.encoding.SOAPTypeMappingRegistry;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.message.SOAPHandler;
  +import org.apache.axis.Constants;
   import org.xml.sax.Attributes;
   import org.xml.sax.SAXException;
  +import org.apache.axis.Constants;
   
   import javax.xml.rpc.namespace.QName;
   import java.io.IOException;
   import java.util.Hashtable;
   
  -public class DataSer extends Deserializer implements Serializer
  +public class DataSer implements Serializer
   {
       public static final String STRINGMEMBER = "stringMember";
       public static final String FLOATMEMBER = "floatMember";
       
  -    public static class DataSerFactory implements DeserializerFactory {
  -        public void setJavaClass(Class cls) {};
  -        public Deserializer getDeserializer() {
  -            return new DataSer();
  -        }
  -    }
  -    public static DeserializerFactory getFactory()
  -    {
  -        return new DataSerFactory();
  -    }
  -    
  -    private Hashtable typesByMemberName = new Hashtable();  
  -    
  -    public DataSer()
  -    {
  -        typesByMemberName.put(STRINGMEMBER, SOAPTypeMappingRegistry.XSD_STRING);
  -        typesByMemberName.put(FLOATMEMBER, SOAPTypeMappingRegistry.XSD_FLOAT);
  -        value = new Data();
  -    }
  -    
  -    /** DESERIALIZER STUFF - event handlers
  -     */
  -    
  -    public SOAPHandler onStartChild(String namespace,
  -                                    String localName,
  -                                    String prefix,
  -                                    Attributes attributes,
  -                                    DeserializationContext context)
  -        throws SAXException
  -    {
  -        QName typeQName = (QName)typesByMemberName.get(localName);
  -        if (typeQName == null)
  -            throw new SAXException("Invalid element in Data struct - " +
  -                                   localName);
  -        
  -        // These can come in either order.
  -        Deserializer dSer = context.getTypeMappingRegistry().
  -                                                     getDeserializer(typeQName);
  -        
  -        if (dSer == null)
  -            throw new SAXException("No deserializer for a " + typeQName + "???");
  -        
  -        try {
  -            dSer.registerValueTarget(new Deserializer.FieldTarget(value,
  -                                                                  localName));
  -        } catch (NoSuchFieldException e) {
  -            throw new SAXException(e);
  -        }
  -        
  -        return dSer;
  -    }
  -    
  -    public void onEndChild(String localName, Deserializer deserializer)
  -        throws SAXException
  -    {
  -        if (STRINGMEMBER.equals(localName)) {
  -            ((Data)value).stringMember = (String)deserializer.getValue();
  -        } else if (FLOATMEMBER.equals(localName)) {
  -            ((Data)value).floatMember = (Float)deserializer.getValue();
  -        } else {
  -            throw new SAXException("No such child - " + localName);
  -        }
  -    }
  -        
       /** SERIALIZER STUFF
        */
  -    
  +    /**
  +     * Serialize an element named name, with the indicated attributes 
  +     * and value.  
  +     * @param name is the element name
  +     * @param attributes are the attributes...serialize is free to add more.
  +     * @param value is the value
  +     * @param context is the SerializationContext
  +     */
       public void serialize(QName name, Attributes attributes,
                             Object value, SerializationContext context)
           throws IOException
  @@ -95,8 +36,9 @@
           Data data = (Data)value;
           
           context.startElement(name, attributes);
  -        context.serialize(new QName("", STRINGMEMBER), null, data.stringMember);
  -        context.serialize(new QName("", FLOATMEMBER), null, data.floatMember);
  +        context.serialize(new QName("", STRINGMEMBER), null, data.stringMember, String.class);
  +        context.serialize(new QName("", FLOATMEMBER), null, data.floatMember, float.class);
           context.endElement();
       }
  +    public String getMechanismType() { return Constants.AXIS_SAX; }
   }
  
  
  
  1.13.2.1  +111 -122  xml-axis/java/test/encoding/TestArrayListConversions.java
  
  Index: TestArrayListConversions.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- TestArrayListConversions.java	15 Jan 2002 17:57:03 -0000	1.13
  +++ TestArrayListConversions.java	28 Jan 2002 06:43:06 -0000	1.13.2.1
  @@ -1,12 +1,13 @@
   package test.encoding;
   
   import junit.framework.TestCase;
  -import org.apache.axis.Handler;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.handlers.soap.SOAPService;
  +import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.transport.local.LocalTransport;
  +import org.apache.axis.configuration.SimpleProvider;
   
   import javax.xml.rpc.namespace.QName;
   import java.util.Iterator;
  @@ -15,125 +16,113 @@
   import java.util.Vector;
   
   public class TestArrayListConversions extends TestCase {
  -  private static final String SERVICE_NAME = "TestArrayConversions";
  -  
  -  private Call call;
  -  
  -  public TestArrayListConversions()
  -  {
  -    super("service");
  -  }
  -  
  -  public TestArrayListConversions(String name)
  -  {
  -    super(name);
  -    init();
  -  }
  -  
  -  private static boolean equals(List list, Object obj)
  -  {
  -    if ((list == null) || (obj == null))
  -      return false;
  -    
  -    if (!obj.getClass().isArray()) return false;
  -    
  -    Object [] array = (Object [])obj;
  -    Iterator iter = list.iterator();
  -
  -    for (int i=0; i < array.length; i++) {
  -      if (!(array[i].equals(iter.next()))) {
  -          return false;
  -      }
  -    }
  -
  -    return true;
  -  }
  -
  -  public void init()
  -  {
  -    try {
  -      Service ss = new Service();
  -      AxisServer server = new AxisServer();
  -      Handler disp = server.getHandler("RPCDispatcher");    
  -      SOAPService service = new SOAPService(disp);
  -      service.setOption("className", "test.encoding.TestArrayListConversions");
  -      service.setOption("allowedMethods", "*");
  -      
  -      server.deployService(SERVICE_NAME, service);
  -      
  -      call = (Call) ss.createCall();
  -      call.setTransport( new LocalTransport(server) );
  -    }
  -    catch( Exception exp ) {
  -      exp.printStackTrace();
  -    }
  -
  -  }
  -  
  -  public void testVectorConversion() throws Exception
  -  {
  -    Vector v = new Vector();
  -    v.addElement("Hi there!");
  -    v.addElement("This'll be a SOAP Array and then a LinkedList!");
  -    call.setOperationName( new QName(SERVICE_NAME, "echoLinkedList") );
  -    Object ret = call.invoke( new Object[] { v } );
  -    if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result.  Result is underneath.\n" + ret, v, ret);
  -  }
  -  
  -  public void testLinkedListConversion() throws Exception
  -  {
  -    LinkedList l = new LinkedList();
  -    l.add("Linked list item #1");
  -    l.add("Second linked list item");
  -    l.add("This will be a SOAP Array then a Vector!");
  -
  -    call.setOperationName( new QName(SERVICE_NAME, "echoVector") );
  -    Object ret = call.invoke( new Object[] { l } );
  -    if (!equals(l, ret)) assertEquals("Echo Vector mangled the result.  Result is underneath.\n" + ret, l, ret);
  -  }
  -      
  -  public void testArrayConversion() throws Exception
  -  {
  -    Vector v = new Vector();
  -    v.addElement("Hi there!");
  -    v.addElement("This'll be a SOAP Array");
  -
  -    call.setOperationName( new QName(SERVICE_NAME, "echoArray") );
  -    Object ret = call.invoke( new Object[] { v } );
  -    if (!equals(v, ret)) assertEquals("Echo Array mangled the result.  Result is underneath\n" + ret, v, ret);
  -  }
  -
  -  public static void main(String [] args)
  -  {
  -    TestArrayListConversions tester =
  -              new TestArrayListConversions("TestArrayListConversions");
  -    try {
  -      tester.testArrayConversion();
  -      tester.testLinkedListConversion();
  -      tester.testVectorConversion();
  -    } catch (Exception e) {
  -      e.printStackTrace();
  -    }
  -  }
  -  
  -  /****************************************************************
  -   * 
  -   * Service methods - this class is also deployed as an Axis RPC
  -   * service for convenience.  These guys just echo various things.
  -   * 
  -   */
  -  public LinkedList echoLinkedList(LinkedList l)
  -  {
  -    return l;
  -  }
  -  
  -  public Vector echoVector(Vector v)
  -  {
  -    return v;
  -  }
  -  
  -  public Object [] echoArray(Object [] array)
  -  {
  -    return array;
  -  }
  +    private static final String SERVICE_NAME = "TestArrayConversions";
  +
  +    private Call call;
  +
  +    public TestArrayListConversions() {
  +        super("service");
  +    }
  +
  +    public TestArrayListConversions(String name) {
  +        super(name);
  +        init();
  +    }
  +
  +    private static boolean equals(List list, Object obj) {
  +        if ((list == null) || (obj == null))
  +            return false;
  +
  +        if (!obj.getClass().isArray()) return false;
  +
  +        Object[] array = (Object[]) obj;
  +        Iterator iter = list.iterator();
  +
  +        for (int i = 0; i < array.length; i++) {
  +            if (!(array[i].equals(iter.next()))) {
  +                return false;
  +            }
  +        }
  +
  +        return true;
  +    }
  +
  +    public void init() {
  +        try {
  +            Service ss = new Service();
  +
  +            SimpleProvider provider = new SimpleProvider();
  +            AxisServer server = new AxisServer(provider);
  +            SOAPService service = new SOAPService(new RPCProvider());
  +            service.setOption("className", "test.encoding.TestArrayListConversions");
  +            service.setOption("allowedMethods", "*");
  +
  +            provider.deployService(SERVICE_NAME, service);
  +
  +            call = (Call) ss.createCall();
  +            call.setTransport(new LocalTransport(server));
  +        } catch (Exception exp) {
  +            exp.printStackTrace();
  +        }
  +
  +    }
  +
  +    public void testVectorConversion() throws Exception {
  +        Vector v = new Vector();
  +        v.addElement("Hi there!");
  +        v.addElement("This'll be a SOAP Array and then a LinkedList!");
  +        call.setOperationName(new QName(SERVICE_NAME, "echoLinkedList"));
  +        Object ret = call.invoke(new Object[]{v});
  +        if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result.  Result is underneath.\n" + ret, v, ret);
  +    }
  +
  +    public void testLinkedListConversion() throws Exception {
  +        LinkedList l = new LinkedList();
  +        l.add("Linked list item #1");
  +        l.add("Second linked list item");
  +        l.add("This will be a SOAP Array then a Vector!");
  +
  +        call.setOperationName(new QName(SERVICE_NAME, "echoVector"));
  +        Object ret = call.invoke(new Object[]{l});
  +        if (!equals(l, ret)) assertEquals("Echo Vector mangled the result.  Result is underneath.\n" + ret, l, ret);
  +    }
  +
  +    public void testArrayConversion() throws Exception {
  +        Vector v = new Vector();
  +        v.addElement("Hi there!");
  +        v.addElement("This'll be a SOAP Array");
  +
  +        call.setOperationName(new QName(SERVICE_NAME, "echoArray"));
  +        Object ret = call.invoke(new Object[]{v});
  +        if (!equals(v, ret)) assertEquals("Echo Array mangled the result.  Result is underneath\n" + ret, v, ret);
  +    }
  +
  +    public static void main(String[] args) {
  +        TestArrayListConversions tester = new TestArrayListConversions("TestArrayListConversions");
  +        try {
  +            tester.testArrayConversion();
  +            tester.testLinkedListConversion();
  +            tester.testVectorConversion();
  +        } catch (Exception e) {
  +            e.printStackTrace();
  +        }
  +    }
  +
  +    /****************************************************************
  +     *
  +     * Service methods - this class is also deployed as an Axis RPC
  +     * service for convenience.  These guys just echo various things.
  +     *
  +     */
  +    public LinkedList echoLinkedList(LinkedList l) {
  +        return l;
  +    }
  +
  +    public Vector echoVector(Vector v) {
  +        return v;
  +    }
  +
  +    public Object[] echoArray(Object[] array) {
  +        return array;
  +    }
   }
  
  
  
  1.7.4.1   +31 -32    xml-axis/java/test/encoding/TestBody.java
  
  Index: TestBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestBody.java,v
  retrieving revision 1.7
  retrieving revision 1.7.4.1
  diff -u -r1.7 -r1.7.4.1
  --- TestBody.java	2 Nov 2001 03:07:42 -0000	1.7
  +++ TestBody.java	28 Jan 2002 06:43:06 -0000	1.7.4.1
  @@ -5,11 +5,15 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.server.AxisServer;
   
  +import javax.xml.rpc.namespace.QName;
  +
   /**
    * Verify that deserialization actually can cause the soap service
    * to be set...
  @@ -22,40 +26,35 @@
   
       private String namespace = "http://xml.apache.org/axis/TestBody";
   
  -    private String request =
  -        "<?xml version=\"1.0\"?>\n" +
  -        "<soap:Envelope " +
  -          "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
  -          "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" +
  -          "<soap:Body>\n" +
  -            "<method xmlns=\"" + namespace + "\">\n" +
  -              "<arg>5</arg>" +
  -            "</method>\n" +
  -          "</soap:Body>\n" +
  -        "</soap:Envelope>\n";
  +    private String request = "<?xml version=\"1.0\"?>\n" + "<soap:Envelope " + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " + "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<soap:Body>\n" + "<method xmlns=\"" + namespace + "\">\n" + "<arg>5</arg>" + "</method>\n" + "</soap:Body>\n" + "</soap:Envelope>\n";
   
       public void testBodyNamespace() throws Exception {
  +        SimpleProvider provider = new SimpleProvider();
  +
  +        // register the service with the engine
  +        SOAPService target = new SOAPService(new RPCProvider());
  +        provider.deployService(new QName(null,namespace), target);
  +
  +        // setup
  +        AxisEngine engine = new AxisServer(provider);
  +        engine.init();
  +
  +        // create a message in context
  +        MessageContext msgContext = new MessageContext(engine);
  +        Message message = new Message(request);
  +        message.setMessageContext(msgContext);
  +
  +        // ensure that the message is parsed
  +        SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope();
  +        RPCElement body = (RPCElement) envelope.getFirstBody();
  +
  +        // verify the service is set
  +        assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService());
  +        assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler());
  +    }
   
  -       // setup
  -       AxisEngine engine = new AxisServer();
  -       engine.init();
  -       
  -       // register the service with the engine
  -       Handler RPCDispatcher = engine.getHandler("RPCDispatcher");
  -       SOAPService target = new SOAPService(RPCDispatcher);
  -       engine.deployService(namespace, target);
  -
  -       // create a message in context
  -       MessageContext msgContext = new MessageContext(engine);
  -       Message message = new Message(request);
  -       message.setMessageContext(msgContext);
  -
  -       // ensure that the message is parsed
  -       SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope();
  -       RPCElement body = (RPCElement)envelope.getFirstBody();
  -
  -       // verify the service is set
  -       assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService());
  -       assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler());
  +    public static void main(String[] args) throws Exception {
  +        TestBody tester = new TestBody("test");
  +        tester.testBodyNamespace();
       }
   }
  
  
  
  1.21.4.1  +1 -1      xml-axis/java/test/encoding/TestDeser.java
  
  Index: TestDeser.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser.java,v
  retrieving revision 1.21
  retrieving revision 1.21.4.1
  diff -u -r1.21 -r1.21.4.1
  --- TestDeser.java	29 Nov 2001 11:11:31 -0000	1.21
  +++ TestDeser.java	28 Jan 2002 06:43:06 -0000	1.21.4.1
  @@ -274,6 +274,6 @@
       public static void main(String [] args) throws Exception
       {
           TestDeser tester = new TestDeser("test");
  -        tester.testUntyped();
  +        tester.testString();
       }
   }
  
  
  
  1.17.4.1  +12 -6     xml-axis/java/test/encoding/TestSer.java
  
  Index: TestSer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestSer.java,v
  retrieving revision 1.17
  retrieving revision 1.17.4.1
  diff -u -r1.17 -r1.17.4.1
  --- TestSer.java	2 Nov 2001 03:07:42 -0000	1.17
  +++ TestSer.java	28 Jan 2002 06:43:06 -0000	1.17.4.1
  @@ -3,8 +3,12 @@
   import junit.framework.TestCase;
   import org.apache.axis.MessageContext;
   import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.encoding.TypeMappingRegistry;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.Constants;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -58,13 +62,17 @@
           msg.addBodyElement(body);
           
           Writer stringWriter = new StringWriter();
  -        SerializationContext context = new SerializationContext(stringWriter, msgContext);
  +        SerializationContext context = new SerializationContextImpl(stringWriter, msgContext);
           context.setDoMultiRefs(multiref);
           
           TypeMappingRegistry reg = context.getTypeMappingRegistry();
  +        TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP_ENC);
  +        if (tm == null) {
  +            tm = (TypeMapping) reg.createTypeMapping();
  +            reg.register(tm, new String[] {Constants.URI_SOAP_ENC});
  +        }
           QName dataQName = new QName("typeNS", "Data");
  -        
  -        reg.addSerializer(Data.class, dataQName, new DataSer());
  +        tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory());
   
           msg.output(context);
           
  @@ -76,10 +84,8 @@
           
           StringReader reader = new StringReader(msgString);
           
  -        DeserializationContext dser = new DeserializationContext(
  +        DeserializationContext dser = new DeserializationContextImpl(
               new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
  -        reg = dser.getTypeMappingRegistry();
  -        reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory());
           dser.parse();
           
           SOAPEnvelope env = dser.getEnvelope();
  
  
  
  1.11.4.1  +4 -2      xml-axis/java/test/encoding/TestString.java
  
  Index: TestString.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestString.java,v
  retrieving revision 1.11
  retrieving revision 1.11.4.1
  diff -u -r1.11 -r1.11.4.1
  --- TestString.java	18 Oct 2001 13:28:38 -0000	1.11
  +++ TestString.java	28 Jan 2002 06:43:06 -0000	1.11.4.1
  @@ -3,7 +3,9 @@
   import junit.framework.TestCase;
   import org.apache.axis.MessageContext;
   import org.apache.axis.encoding.DeserializationContext;
  +import org.apache.axis.encoding.DeserializationContextImpl;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -33,7 +35,7 @@
           msg.addBodyElement(body);
           
           Writer stringWriter = new StringWriter();
  -        SerializationContext context = new SerializationContext(stringWriter, msgContext);
  +        SerializationContext context = new SerializationContextImpl(stringWriter, msgContext);
           
           msg.output(context);
           
  @@ -41,7 +43,7 @@
           
           StringReader reader = new StringReader(msgString);
           
  -        DeserializationContext dser = new DeserializationContext(
  +        DeserializationContext dser = new DeserializationContextImpl(
               new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
           dser.parse();
           
  
  
  
  1.9.2.1   +8 -9      xml-axis/java/test/encoding/TestXsiType.java
  
  Index: TestXsiType.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestXsiType.java,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- TestXsiType.java	15 Jan 2002 17:57:03 -0000	1.9
  +++ TestXsiType.java	28 Jan 2002 06:43:06 -0000	1.9.2.1
  @@ -3,12 +3,14 @@
   import junit.framework.TestCase;
   import org.apache.axis.MessageContext;
   import org.apache.axis.AxisEngine;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.SerializationContext;
  +import org.apache.axis.encoding.SerializationContextImpl;
   import org.apache.axis.encoding.XMLType;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
  @@ -26,7 +28,8 @@
   
       private String header;
       private String footer;
  -    private AxisServer server = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer server = new AxisServer(provider);
       
       public TestXsiType()
       {
  @@ -43,7 +46,7 @@
       public void testNoXsiTypes()
          throws Exception
       {
  -        MessageContext msgContext = new MessageContext(new AxisServer());
  +        MessageContext msgContext = new MessageContext(server);
   
           // Don't serialize xsi:type attributes
           msgContext.setProperty(Call.SEND_TYPE_ATTR, "false" );
  @@ -58,8 +61,8 @@
           msg.addBodyElement(body);
   
           Writer stringWriter = new StringWriter();
  -        SerializationContext context = new SerializationContext(stringWriter,
  -                                                                msgContext);
  +        SerializationContext context = new SerializationContextImpl(stringWriter,
  +                                                                    msgContext);
   
           msg.output(context);
   
  @@ -74,16 +77,12 @@
        */ 
       public void testTypelessDeserialization() throws Exception
       {
  -        // Set up a server to NOT send XSI types, and deploy
  -        // this class as a service there.
  -        
  -        AxisServer server = new AxisServer();
           server.setOption(AxisEngine.PROP_SEND_XSI, Boolean.FALSE);
           
           SOAPService service = new SOAPService(new RPCProvider());
           service.setOption("className", "test.encoding.TestXsiType");
           service.setOption("allowedMethods", "*");
  -        server.deployService("TestService", service);
  +        provider.deployService("TestService", service);
           
           // Call that same server, accessing a method we know returns
           // a double.  We should figure this out and deserialize it
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/test/encoding/DataDeser.java
  
  Index: DataDeser.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/DataDeser.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/encoding/DataDeserFactory.java
  
  Index: DataDeserFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/DataDeserFactory.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/encoding/DataSerFactory.java
  
  Index: DataSerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/DataSerFactory.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.19.2.1  +11 -5     xml-axis/java/test/functional/TestTCPTransportSample.java
  
  Index: TestTCPTransportSample.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/TestTCPTransportSample.java,v
  retrieving revision 1.19
  retrieving revision 1.19.2.1
  diff -u -r1.19 -r1.19.2.1
  --- TestTCPTransportSample.java	11 Jan 2002 21:42:11 -0000	1.19
  +++ TestTCPTransportSample.java	28 Jan 2002 06:43:07 -0000	1.19.2.1
  @@ -59,6 +59,9 @@
   import junit.framework.TestCase;
   import org.apache.axis.AxisFault;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.XMLType;
  @@ -83,7 +86,7 @@
       }
   
       public void doTestDeploy () throws Exception {
  -        String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.xml" };
  +        String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.wsdd" };
           AdminClient.main(args);
       }
   
  @@ -99,11 +102,14 @@
               tester.getQuote(new String [] { "-ltcp://localhost:8088", "XXX" });
               String   symbol = "XXX"; // args[0] ;
   
  -            Service  service = new Service();
  -            Call     call    = (Call) service.createCall();
  -
  +            SimpleProvider provider =
  +                    new SimpleProvider(
  +                            new FileProvider(Constants.CLIENT_CONFIG_FILE));
               SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -            service.getEngine().deployTransport("tcp", c);
  +            provider.deployTransport("tcp", c);
  +
  +            Service  service = new Service(provider);
  +            Call     call    = (Call) service.createCall();
   
               call.setTargetEndpointAddress( new URL("tcp://localhost:8088") );
               call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") );
  
  
  
  1.17.4.1  +1 -1      xml-axis/java/test/functional/TestTransportSample.java
  
  Index: TestTransportSample.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/TestTransportSample.java,v
  retrieving revision 1.17
  retrieving revision 1.17.4.1
  diff -u -r1.17 -r1.17.4.1
  --- TestTransportSample.java	31 Oct 2001 23:50:22 -0000	1.17
  +++ TestTransportSample.java	28 Jan 2002 06:43:07 -0000	1.17.4.1
  @@ -72,7 +72,7 @@
       }
       
       public void doTestDeploy () throws Exception {
  -        String[] args = { "-llocal:", "samples/transport/deploy.xml" };
  +        String[] args = { "-llocal:", "samples/transport/deploy.wsdd" };
           AdminClient.main(args);
       }
       
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +4 -2      xml-axis/java/test/outparams/TestOutParams.java
  
  Index: TestOutParams.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/outparams/TestOutParams.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- TestOutParams.java	4 Jan 2002 22:30:04 -0000	1.8
  +++ TestOutParams.java	28 Jan 2002 06:43:07 -0000	1.8.2.1
  @@ -5,6 +5,7 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.XMLType;
  @@ -40,7 +41,8 @@
   
       private Service s_service = null ;
       private Call    client    = null ;
  -    private AxisServer server = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer server = new AxisServer(provider);
   
       public TestOutParams(String name) {
           super(name);
  @@ -59,7 +61,7 @@
           // ??? Do we need to register the handler?
   
           SOAPService service = new SOAPService(h);
  -        server.deployService(serviceURN, service);
  +        provider.deployService(serviceURN, service);
   
           // Make sure the local transport uses the server we just configured
           client.setTransport(new LocalTransport(server));
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +11 -5     xml-axis/java/test/session/TestSimpleSession.java
  
  Index: TestSimpleSession.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/session/TestSimpleSession.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- TestSimpleSession.java	15 Jan 2002 17:57:03 -0000	1.8
  +++ TestSimpleSession.java	28 Jan 2002 06:43:07 -0000	1.8.2.1
  @@ -11,7 +11,10 @@
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.Constants;
   import org.apache.axis.configuration.XMLStringProvider;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.deployment.wsdd.WSDDConstants;
   import org.apache.axis.providers.java.RPCProvider;
   
  @@ -31,7 +34,7 @@
               " <transport name=\"local\" " +
                   "pivot=\"java:org.apache.axis.transport.local.LocalSender\"/>\n" +
               "</deployment>";
  -    static XMLStringProvider provider = new XMLStringProvider(clientWSDD);
  +    static XMLStringProvider clientProvider = new XMLStringProvider(clientWSDD);
   
       /**
        * Default constructor for use as service
  @@ -84,11 +87,14 @@
           service.setOption("className", "test.session.TestSimpleSession");
           service.setOption("allowedMethods", "counter");
   
  -        AxisServer server = new AxisServer();
  -        server.deployService("sessionTest", service);
  +        SimpleProvider simpleProvider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.SERVER_CONFIG_FILE));
  +        AxisServer server = new AxisServer(simpleProvider);
  +        simpleProvider.deployService("sessionTest", service);
   
           // Set up the client side (using the WSDD above)
  -        Service svc = new Service(provider);
  +        Service svc = new Service(clientProvider);
           Call call = (Call)svc.createCall();
           svc.setMaintainSession(true);
           call.setTransport(new LocalTransport(server));
  @@ -106,7 +112,7 @@
                           2);
   
           // Now start fresh and confirm a new session
  -        Service svc2 = new Service(provider);
  +        Service svc2 = new Service(clientProvider);
           Call call2 = (Call)svc2.createCall();
           svc2.setMaintainSession(true);
           call2.setTransport(new LocalTransport(server));
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +6 -4      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.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- TestHeaderAttrs.java	15 Jan 2002 17:57:03 -0000	1.2
  +++ TestHeaderAttrs.java	28 Jan 2002 06:43:07 -0000	1.2.2.1
  @@ -8,6 +8,8 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.client.Call;
   import org.apache.axis.handlers.soap.SOAPService;
  @@ -52,7 +54,8 @@
       static SOAPHeader badHeader = new SOAPHeader(BAD_HEADER_NS, 
                                                    BAD_HEADER_NAME);
   
  -    private AxisServer engine = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
       private LocalTransport localTransport = new LocalTransport(engine);
       private Handler RPCDispatcher;
   
  @@ -74,15 +77,14 @@
           engine.init();
           localTransport.setUrl(localURL);
           
  -        Handler dispatcher = engine.getHandler("RPCDispatcher");
           SOAPService service = new SOAPService(new TestHandler(),
  -                                              dispatcher, 
  +                                              new RPCProvider(),
                                                 null);
           
           service.setOption("className", TestService.class.getName());
           service.setOption("allowedMethods", "*");
           
  -        engine.deployService("testService", service);
  +        provider.deployService("testService", service);
       }
       
       /**
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.4.2   +4 -1      xml-axis/java/test/wsdd/TestUndeployment.java
  
  Index: TestUndeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdd/TestUndeployment.java,v
  retrieving revision 1.2.4.1
  retrieving revision 1.2.4.2
  diff -u -r1.2.4.1 -r1.2.4.2
  --- TestUndeployment.java	23 Jan 2002 17:57:08 -0000	1.2.4.1
  +++ TestUndeployment.java	28 Jan 2002 06:43:07 -0000	1.2.4.2
  @@ -72,7 +72,10 @@
   
           InputStream is = new StringBufferInputStream(undeployDoc);
           WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(is));
  -        server.getDeploymentRegistry().deploy(doc);
  +
  +        WSDDDeployment dep = provider.getDeployment();
  +        doc.deploy(dep);
  +
           server.refreshGlobalOptions();
           
           handler = server.getHandler("other");
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +1 -0      xml-axis/java/test/wsdl/Java2WsdlAntTask.java
  
  Index: Java2WsdlAntTask.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/Java2WsdlAntTask.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- Java2WsdlAntTask.java	3 Jan 2002 20:33:43 -0000	1.3
  +++ Java2WsdlAntTask.java	28 Jan 2002 06:43:07 -0000	1.3.2.1
  @@ -97,6 +97,7 @@
               }
               if (service != null)
                   emitter.setServiceName(service);
  +            log("Java2WSDL " + className, Project.MSG_INFO);
               emitter.setCls(className);
               if (implClass != null)
                   emitter.setImplCls(implClass);
  
  
  
  1.13.2.1  +2 -0      xml-axis/java/test/wsdl/Wsdl2javaAntTask.java
  
  Index: Wsdl2javaAntTask.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaAntTask.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- Wsdl2javaAntTask.java	19 Dec 2001 14:57:41 -0000	1.13
  +++ Wsdl2javaAntTask.java	28 Jan 2002 06:43:07 -0000	1.13.2.1
  @@ -124,6 +124,7 @@
   
               Document doc;
   
  +            log("WSDL2Java " + url, Project.MSG_INFO);
               try {
                   doc = XMLUtils.newDocument(url);
                   doc.getDocumentElement().getTagName();
  @@ -143,6 +144,7 @@
   
               // emitter.emit(doc);
           } catch (Throwable t) {
  +            t.printStackTrace();
               throw new BuildException("Error while running " + getClass().getName(), t); 
           }
       }
  
  
  
  1.57.2.1  +15 -6     xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml
  
  Index: Wsdl2javaTestSuite.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml,v
  retrieving revision 1.57
  retrieving revision 1.57.2.1
  diff -u -r1.57 -r1.57.2.1
  --- Wsdl2javaTestSuite.xml	16 Jan 2002 14:07:58 -0000	1.57
  +++ Wsdl2javaTestSuite.xml	28 Jan 2002 06:43:07 -0000	1.57.2.1
  @@ -27,7 +27,7 @@
       <property name="test-classpath.property" refid="test-classpath"/>
       <echo message="Classpath for wsdl2java task : ${test-classpath.property}"/>
       -->
  -    
  +    <echo message="Running WSDL2Java and Java2WSDL Emitters"/>
       <!-- AddressBook Sample -->
       <wsdl2java url="samples/addr/AddressBook.wsdl"
                  output="build/work"
  @@ -90,8 +90,8 @@
                  noimports="no"
                  verbose="no"
                  testcase="no">
  -        <mapping namespace="ref.types.test" package="test.wsdl.refattr"/>
  -        <mapping namespace="ref.types" package="test.wsdl.refattr"/>
  +        <mapping namespace="urn:ref.types.test" package="test.wsdl.refattr"/>
  +        <mapping namespace="urn:ref.types" package="test.wsdl.refattr"/>
       </wsdl2java>
   
       <!-- Sequence Test -->
  @@ -261,18 +261,16 @@
           <mapping namespace="http://soapinterop.org/xsd" package="mssoapinterop.interopb"/>
       </wsdl2java>
   
  -    <!-- we don't handle xsd:anyType yet
       <wsdl2java url="http://mssoapinterop.org/stk/InteropBtyped.wsdl"
                  output="build/work"
                  testcase="no"
                  deployscope="none"
                  skeleton="yes"
  -               verbose="yes"
  +               verbose="no"
                  noimports="no">
           <mapping namespace="http://soapinterop.org/" package="mssoapinterop.interopbtyped"/>
           <mapping namespace="http://soapinterop.org/xsd" package="mssoapinterop.interopbtyped"/>
       </wsdl2java>
  -    -->
   
       <wsdl2java url="http://mssoapinterop.org/stk/InteropC.wsdl"
                  output="build/work"
  @@ -375,6 +373,17 @@
                  output="build/work"
                  skeleton="yes"
                  testcase="yes">
  +    </wsdl2java>
  +
  +    <!-- This tests .NET document/literal WSDL.  -->
  +    <!-- <wsdl2java url="test/wsdl/literal/SalesRankNPrice.wsdl" -->
  +    <wsdl2java url="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx?WSDL"
  +               output="build/work"
  +               verbose="no"
  +               skeleton="no"
  +               testcase="no">
  +        <mapping namespace="http://www.PerfectXML.com/NETWebSvcs/BookService" package="test.wsdl.literal"/>
  +               
       </wsdl2java>
   
       <!-- The following WSDL are BAD.  We're keeping them here so we can -->
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +7 -1      xml-axis/java/test/wsdl/arrays/PersonalInfoBookServiceTestCase.java
  
  Index: PersonalInfoBookServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/arrays/PersonalInfoBookServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- PersonalInfoBookServiceTestCase.java	4 Jan 2002 19:09:41 -0000	1.1
  +++ PersonalInfoBookServiceTestCase.java	28 Jan 2002 06:43:07 -0000	1.1.2.1
  @@ -31,7 +31,13 @@
                                                     nickName);
   
           // Get the stub and set Session
  -        test.wsdl.arrays.PersonalInfoBook binding = new PersonalInfoBookService().getPersonalInfoBook();
  +        test.wsdl.arrays.PersonalInfoBook binding;
  +        try {
  +            binding = new PersonalInfoBookService().getPersonalInfoBook();
  +        }
  +        catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre );
  +        }
           assertTrue("binding is null", binding != null);
           ((PersonalInfoBookSOAPBindingStub) binding).setMaintainSession (true);
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +8 -1      xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java
  
  Index: FaultServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- FaultServiceTestCase.java	7 Jan 2002 15:54:20 -0000	1.1
  +++ FaultServiceTestCase.java	28 Jan 2002 06:43:07 -0000	1.1.2.1
  @@ -23,7 +23,14 @@
       }
       
       public void testFaultService() {
  -        test.wsdl.faults.FaultServicePortType binding = new FaultService().getFaultService();
  +        test.wsdl.faults.FaultServicePortType binding;
  +        try {
  +            binding = new FaultService().getFaultService();
  +        }
  +        catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.
  +                    AssertionFailedError("JAX-RPC Exception caught: " + jre);            
  +        }
           assertTrue("binding is null", binding != null);
           String symbol = new String("MACR");
           try {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +10 -1     xml-axis/java/test/wsdl/inout/DetailedInoutTestCase.java
  
  Index: DetailedInoutTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/inout/DetailedInoutTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- DetailedInoutTestCase.java	16 Jan 2002 14:07:59 -0000	1.1
  +++ DetailedInoutTestCase.java	28 Jan 2002 06:43:07 -0000	1.1.2.1
  @@ -3,8 +3,11 @@
   import junit.framework.AssertionFailedError;
   import junit.framework.TestCase;
   import junit.swingui.TestRunner;
  +
   import org.apache.axis.utils.Options;
   
  +import javax.xml.rpc.JAXRPCException;
  +
   import javax.xml.rpc.holders.IntHolder;
   import javax.xml.rpc.holders.StringHolder;
   
  @@ -17,10 +20,16 @@
    */
   public class DetailedInoutTestCase extends TestCase
   {
  -    private static Inout io = new InoutService().getInoutService();
  +    private static Inout io;
       
       public DetailedInoutTestCase(String name) {
           super(name);
  +        try {
  +            io = new InoutService().getInoutService();
  +        }
  +        catch (JAXRPCException jre) {
  +            throw new AssertionFailedError("JAX-RPC Exception:  " + jre);
  +        }
       }
   
       private String printAddress (Address ad) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      xml-axis/java/test/wsdl/literal/SalesRankNPrice.wsdl
  
  Index: SalesRankNPrice.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/literal/SalesRankNPrice.wsdl,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/literal/SalesRankNPrice_ServiceTestCase.java
  
  Index: SalesRankNPrice_ServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/literal/SalesRankNPrice_ServiceTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +7 -1      xml-axis/java/test/wsdl/marrays/MArrayTestsServiceTestCase.java
  
  Index: MArrayTestsServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/marrays/MArrayTestsServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- MArrayTestsServiceTestCase.java	18 Dec 2001 21:29:04 -0000	1.1
  +++ MArrayTestsServiceTestCase.java	28 Jan 2002 06:43:08 -0000	1.1.2.1
  @@ -13,7 +13,13 @@
       }
   
       public void testMArrayTests() {
  -        test.wsdl.marrays.MArrayTests binding = new MArrayTestsService().getMArrayTests();
  +        test.wsdl.marrays.MArrayTests binding;
  +        try {
  +            binding = new MArrayTestsService().getMArrayTests();
  +        }
  +        catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre );
  +        }
           assertTrue("binding is null", binding != null);
   
           // In each case below, the elements of the array are either nill, -1 or
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +4 -4      xml-axis/java/test/wsdl/multithread/AddressBook.wsdl
  
  Index: AddressBook.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/multithread/AddressBook.wsdl,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- AddressBook.wsdl	11 Jan 2002 21:28:23 -0000	1.1
  +++ AddressBook.wsdl	28 Jan 2002 06:43:08 -0000	1.1.2.1
  @@ -1,16 +1,16 @@
   <?xml version="1.0" ?>
   
   <definitions name="urn:AddressFetcher"
  -             targetNamespace="multithread.wsdl.test"
  -             xmlns:tns="multithread.wsdl.test"
  -             xmlns:typens="multithread.wsdl.test"
  +             targetNamespace="urn:multithread.wsdl.test"
  +             xmlns:tns="urn:multithread.wsdl.test"
  +             xmlns:typens="urn:multithread.wsdl.test"
                xmlns:xsd="http://www.w3.org/1999/XMLSchema"
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                xmlns="http://schemas.xmlsoap.org/wsdl/">
   
     <!-- type defs -->
     <types>
  -    <xsd:schema targetNamespace="multithread.wsdl.test"
  +    <xsd:schema targetNamespace="urn:multithread.wsdl.test"
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema">
   
         <xsd:simpleType name="stateType">
  
  
  
  1.2.2.1   +8 -1      xml-axis/java/test/wsdl/multithread/MultithreadTestCase.java
  
  Index: MultithreadTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/multithread/MultithreadTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- MultithreadTestCase.java	15 Jan 2002 16:19:29 -0000	1.2
  +++ MultithreadTestCase.java	28 Jan 2002 06:43:08 -0000	1.2.2.1
  @@ -4,6 +4,8 @@
   
   import java.rmi.RemoteException;
   
  +import javax.xml.rpc.JAXRPCException;
  +
   import junit.framework.AssertionFailedError;
   import junit.framework.TestCase;
   
  @@ -84,7 +86,12 @@
       } // class Run
   
       public void testMultithreading() {
  -        binding = new AddressBookService().getAddressBook();
  +        try {
  +            binding = new AddressBookService().getAddressBook();
  +        }
  +        catch (JAXRPCException jre) {
  +            throw new AssertionFailedError("JAXRPCException caught: " + jre);
  +        }
           assertTrue("binding is null", binding != null);
           ((AddressBookSOAPBindingStub) binding).setMaintainSession(true);
           Thread[] threads = new Thread[100];
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +6 -1      xml-axis/java/test/wsdl/parameterOrder/VerifyTestCase.java
  
  Index: VerifyTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/parameterOrder/VerifyTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- VerifyTestCase.java	10 Jan 2002 19:12:08 -0000	1.1
  +++ VerifyTestCase.java	28 Jan 2002 06:43:08 -0000	1.1.2.1
  @@ -18,7 +18,12 @@
       }
   
       public void testParameterOrder() {
  -        test.wsdl.parameterOrder.ParameterOrderTest binding = new ParameterOrderService().getParameterOrder();
  +        test.wsdl.parameterOrder.ParameterOrderTest binding;
  +        try {
  +            binding = new ParameterOrderService().getParameterOrder();
  +        } catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre);
  +        }
           assertTrue("binding is null", binding != null);
           try {
               binding.oneIn(0);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +7 -1      xml-axis/java/test/wsdl/refattr/RefTestServiceTestCase.java
  
  Index: RefTestServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/refattr/RefTestServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- RefTestServiceTestCase.java	4 Jan 2002 19:09:41 -0000	1.1
  +++ RefTestServiceTestCase.java	28 Jan 2002 06:43:08 -0000	1.1.2.1
  @@ -14,7 +14,13 @@
       }
   
       public void testRefTest() {
  -        test.wsdl.refattr.RefTest binding = new RefTestService().getRefTest();
  +        test.wsdl.refattr.RefTest binding;
  +        try {
  +            binding = new RefTestService().getRefTest();
  +        }
  +        catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre );
  +        }
           
           // The following declarations are used to verify that unmangled classes
           // are generated by Wsdl2Java (not a mangled class like Phone_Type).
  
  
  
  1.2.2.1   +4 -4      xml-axis/java/test/wsdl/refattr/refattr.wsdl
  
  Index: refattr.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/refattr/refattr.wsdl,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- refattr.wsdl	15 Jan 2002 01:33:24 -0000	1.2
  +++ refattr.wsdl	28 Jan 2002 06:43:08 -0000	1.2.2.1
  @@ -2,9 +2,9 @@
   
   <definitions 
       name="ref types test"
  -    targetNamespace="ref.types.test"
  -    xmlns:tns="ref.types.test"
  -    xmlns:typens="ref.types"
  +    targetNamespace="urn:ref.types.test"
  +    xmlns:tns="urn:ref.types.test"
  +    xmlns:typens="urn:ref.types"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  @@ -13,7 +13,7 @@
     <!-- type defs -->
     <types>
       <xsd:schema 
  -        targetNamespace="ref.types"
  +        targetNamespace="urn:ref.types"
           xmlns:xsd="http://www.w3.org/1999/XMLSchema">
   
         <xsd:simpleType name="enum">
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +7 -2      xml-axis/java/test/wsdl/sequence/SequenceTestServiceTestCase.java
  
  Index: SequenceTestServiceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/sequence/SequenceTestServiceTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- SequenceTestServiceTestCase.java	4 Jan 2002 19:09:41 -0000	1.1
  +++ SequenceTestServiceTestCase.java	28 Jan 2002 06:43:08 -0000	1.1.2.1
  @@ -12,8 +12,13 @@
       }
   
       public void testSequenceTest() {
  -        test.wsdl.sequence.SequenceTestPortType binding =
  -            new SequenceTest().getSequenceTest();
  +        test.wsdl.sequence.SequenceTestPortType binding;
  +        try {
  +            binding = new SequenceTest().getSequenceTest();
  +        }
  +        catch (javax.xml.rpc.JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre );
  +        }
           assertTrue("binding is null", binding != null);
           try {
               int value = -3;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.10.2.1  +148 -6    xml-axis/java/test/wsdl/types/ComprehensiveTypes.wsdl
  
  Index: ComprehensiveTypes.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/types/ComprehensiveTypes.wsdl,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- ComprehensiveTypes.wsdl	17 Jan 2002 16:18:28 -0000	1.10
  +++ ComprehensiveTypes.wsdl	28 Jan 2002 06:43:08 -0000	1.10.2.1
  @@ -2,10 +2,10 @@
   
   <definitions 
       name="comprehensive types test"
  -    targetNamespace="comprehensive-service.types.wsdl.test"
  -    xmlns:tns="comprehensive-service.types.wsdl.test"
  -    xmlns:typens="comprehensive-types.types.wsdl.test"
  -    xmlns:typens2="comprehensive-types2.types.wsdl.test"
  +    targetNamespace="urn:comprehensive-service.types.wsdl.test"
  +    xmlns:tns="urn:comprehensive-service.types.wsdl.test"
  +    xmlns:typens="urn:comprehensive-types.types.wsdl.test"
  +    xmlns:typens2="urn:comprehensive-types2.types.wsdl.test"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  @@ -15,7 +15,7 @@
     <!-- type defs -->
     <types>
       <xsd:schema 
  -        targetNamespace="comprehensive-types.types.wsdl.test"
  +        targetNamespace="urn:comprehensive-types.types.wsdl.test"
           xmlns:xsd="http://www.w3.org/1999/XMLSchema">
   
         <xsd:simpleType name="enum">
  @@ -111,6 +111,26 @@
           </xsd:complexContent>
         </xsd:complexType>
   
  +
  +      <!-- The following is a simple test of inheritance with types -->
  +      <xsd:complexType name="Animal">
  +        <xsd:all>
  +          <xsd:element name="Name" nillable="true" type="xsd:string"/>
  +        </xsd:all>
  +      </xsd:complexType>
  +      <xsd:element name="Animal" nillable="true" type="typens:Animal"/>
  +      <xsd:complexType name="Cat">
  +        <xsd:complexContent>
  +          <xsd:extension base="typens:Animal">
  +            <xsd:all>
  +              <xsd:element name="Purr" nillable="true" type="xsd:string"/>
  +            </xsd:all>
  +          </xsd:extension>
  +        </xsd:complexContent>
  +      </xsd:complexType>
  +      <xsd:element name="Cat" nillable="true" type="typens:Cat"/>
  +
  +
         <!-- The following test all of the valid enum basic types -->
         <xsd:simpleType name="enumString">
           <xsd:restriction base="xsd:string">
  @@ -165,7 +185,7 @@
   
   
       <xsd:schema 
  -        targetNamespace="comprehensive-types2.types.wsdl.test"
  +        targetNamespace="urn:comprehensive-types2.types.wsdl.test"
           xmlns:xsd="http://www.w3.org/1999/XMLSchema">
           <xsd:complexType name="fwd">
             <xsd:complexContent>
  @@ -255,6 +275,14 @@
       <part name="any" type="xsd:anyType"/>
     </message>
   
  +  <message name="animal">
  +    <part name="animal" type="typens:Animal"/>
  +  </message>
  +
  +  <message name="cat">
  +    <part name="cat" type="typens:Cat"/>
  +  </message>
  +
     <!-- port type declns -->
     <portType name="TypeTest">
       <operation name="allPrimitivesIn">
  @@ -367,6 +395,30 @@
         <input message="tns:empty"/>
         <output message="tns:any"/>
       </operation>
  +    <operation name="animalIn">
  +      <input message="tns:animal"/>
  +      <output message="tns:empty"/>
  +    </operation>
  +    <operation name="animalInout">
  +      <input message="tns:animal"/>
  +      <output message="tns:animal"/>
  +    </operation>
  +    <operation name="animalOut">
  +      <input message="tns:empty"/>
  +      <output message="tns:animal"/>
  +    </operation>
  +    <operation name="catIn">
  +      <input message="tns:cat"/>
  +      <output message="tns:empty"/>
  +    </operation>
  +    <operation name="catInout">
  +      <input message="tns:cat"/>
  +      <output message="tns:cat"/>
  +    </operation>
  +    <operation name="catOut">
  +      <input message="tns:empty"/>
  +      <output message="tns:cat"/>
  +    </operation>
     </portType>
   
     <!-- binding declns -->
  @@ -767,6 +819,96 @@
         </output>
       </operation>
       <operation name="anyOut">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="animalIn">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="animalInout">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="animalOut">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="catIn">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="catInout">
  +      <soap:operation soapAction=""/>
  +      <input>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </input>
  +      <output>
  +        <soap:body
  +            use="encoded"
  +            namespace=""
  +            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  +      </output>
  +    </operation>
  +    <operation name="catOut">
         <soap:operation soapAction=""/>
         <input>
           <soap:body
  
  
  
  1.2.2.1   +46 -1     xml-axis/java/test/wsdl/types/VerifyTestCase.java
  
  Index: VerifyTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/types/VerifyTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- VerifyTestCase.java	17 Jan 2002 16:18:28 -0000	1.2
  +++ VerifyTestCase.java	28 Jan 2002 06:43:08 -0000	1.2.2.1
  @@ -7,6 +7,8 @@
   
   package test.wsdl.types;
   
  +import javax.xml.rpc.JAXRPCException;
  +
   import javax.xml.rpc.holders.BigDecimalHolder;
   import javax.xml.rpc.holders.BigIntegerHolder;
   import javax.xml.rpc.holders.BooleanClassHolder;
  @@ -29,8 +31,12 @@
   
   import javax.xml.rpc.namespace.QName;
   
  +import test.wsdl.types.comprehensive_types.Animal;
  +import test.wsdl.types.comprehensive_types.AnimalHolder;
   import test.wsdl.types.comprehensive_types.ArrayHolder;
   import test.wsdl.types.comprehensive_types.ArrayMHolder;
  +import test.wsdl.types.comprehensive_types.Cat;
  +import test.wsdl.types.comprehensive_types.CatHolder;
   import test.wsdl.types.comprehensive_types.ComplexAll;
   import test.wsdl.types.comprehensive_types.ComplexAllHolder;
   import test.wsdl.types.comprehensive_types.ComplexSequence;
  @@ -61,7 +67,13 @@
       }
   
       public void testTypeTest() {
  -        TypeTest binding = new TypeTestService().getTypeTest();
  +        TypeTest binding;
  +        try {
  +            binding = new TypeTestService().getTypeTest();
  +        }
  +        catch (JAXRPCException jre) {
  +            throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre);
  +        }
           assertTrue("binding is null", binding != null);
           try {
               binding.allPrimitivesIn("hi", new java.math.BigInteger("5"), 0, (long) 0, (short) 0, new java.math.BigDecimal(6), (float) 0, (double) 0, true, (byte) 0, new QName("hi", "ho"), new java.util.Date(), new byte[]{(byte) 5}, new byte[]{(byte) 6}, "hi ho", new Boolean(true), new Float(0), new Double(0), new java.math.BigDecimal(7), new Integer(0), new Short((short) 0), new Byte[]{new Byte((byte) 7)});
  @@ -260,6 +272,39 @@
           }
           try {
               java.lang.Object value = binding.anyOut();
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        Cat cat = new Cat("meow");
  +        try {
  +            binding.animalIn(cat);
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        try {
  +            binding.animalInout(new AnimalHolder(cat));
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        try {
  +            Animal value = null;
  +            value = binding.animalOut();
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        try {
  +            binding.catIn(cat);
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        try {
  +            binding.catInout(new CatHolder(cat));
  +        } catch (java.rmi.RemoteException re) {
  +            throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
  +        }
  +        try {
  +            Cat value = null;
  +            value = binding.catOut();
           } catch (java.rmi.RemoteException re) {
               throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
           }
  
  
  

Mime
View raw message