dims        2003/01/21 09:01:14

  Modified:    java/src/org/apache/axis/server AxisServer.java
               java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
               java/test/wsdl/soap12/assertion soap12-test.wsdl
               java/src/org/apache/axis/message SOAPEnvelope.java
               java/test/soap12 TestRPC.java
               java/src/org/apache/axis/enum Use.java
  Log:
  Okay....We finally have our first SOAP 1.2 server impl and test case automatically 
genereate by Wsdl2Java.
  
  Revision  Changes    Path
  1.87      +8 -0      xml-axis/java/src/org/apache/axis/server/AxisServer.java
  
  Index: AxisServer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/AxisServer.java,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- AxisServer.java   11 Dec 2002 22:38:22 -0000      1.86
  +++ AxisServer.java   21 Jan 2003 17:01:12 -0000      1.87
  @@ -64,6 +64,7 @@
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.soap.SOAPConstants;
   import org.apache.axis.client.AxisClient;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.configuration.EngineConfigurationFactoryFinder;
  @@ -300,6 +301,7 @@
                       // chain instead....
                       Message rm = msgContext.getRequestMessage();
                       rm.getSOAPEnvelope().getFirstBody();
  +                    
                       h = msgContext.getService();
                       if (h == null)
                           throw new AxisFault("Server.NoService",
  @@ -311,6 +313,12 @@
                       t3=System.currentTimeMillis();
                   }
   
  +                // Ensure that if we get SOAP1.2, then reply using SOAP1.2 
  +                
if(msgContext.getRequestMessage().getSOAPEnvelope().getSOAPConstants() != null) {
  +                    SOAPConstants soapConstants = 
msgContext.getRequestMessage().getSOAPEnvelope().getSOAPConstants();
  +                    msgContext.setSOAPConstants(soapConstants);
  +                }
  +                    
                   h.invoke(msgContext);
   
                   if( tlog.isDebugEnabled() ) {
  
  
  
  1.73      +30 -10    
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.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- JavaDeployWriter.java     1 Jan 2003 22:21:43 -0000       1.72
  +++ JavaDeployWriter.java     21 Jan 2003 17:01:12 -0000      1.73
  @@ -77,6 +77,8 @@
   import javax.wsdl.OperationType;
   import javax.wsdl.Port;
   import javax.wsdl.Service;
  +import javax.wsdl.extensions.soap.SOAPBinding;
  +import javax.wsdl.extensions.UnknownExtensibilityElement;
   import javax.xml.namespace.QName;
   import java.io.IOException;
   import java.io.PrintWriter;
  @@ -191,7 +193,8 @@
       protected void writeDeployTypes(PrintWriter pw, 
                                       Binding binding,
                                       boolean hasLiteral, 
  -                                    boolean hasMIME) throws IOException {
  +                                    boolean hasMIME,
  +                                    Use use) throws IOException {
           Vector types = symbolTable.getTypes();
   
           pw.println();
  @@ -202,7 +205,7 @@
                       "javax.activation.DataHandler",
                       "org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory",
                       
"org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory",
  -                    Constants.URI_DEFAULT_SOAP_ENC);
  +                    use.getEncoding());
           }
   
           for (int i = 0; i < types.size(); ++i) {
  @@ -234,7 +237,7 @@
                   String deserializerFactory;
                   String encodingStyle = "";
                   if (!hasLiteral) {
  -                    encodingStyle = Constants.URI_DEFAULT_SOAP_ENC;
  +                    encodingStyle = use.getEncoding();
                   }
   
                   if (javaType.endsWith("[]")) {
  @@ -291,21 +294,38 @@
   
           String prefix = WSDDConstants.NS_PREFIX_WSDD_JAVA;
           String styleStr = "";
  -        String useStr = "";
  +        Use use = Use.DEFAULT;
   
  +        
  +        Iterator iterator = 
bEntry.getBinding().getExtensibilityElements().iterator();
  +        while (iterator.hasNext()) {
  +            Object obj = iterator.next();
  +            if (obj instanceof SOAPBinding) {
  +                use = Use.ENCODED;
  +            } else if (obj instanceof UnknownExtensibilityElement) {
  +                //TODO: After WSDL4J supports soap12, change this code
  +                UnknownExtensibilityElement unkElement = 
(UnknownExtensibilityElement) obj;
  +                QName name = unkElement.getElementType();
  +                if(name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) && 
  +                   name.getLocalPart().equals("binding")){
  +                    use = Use.ENCODED12;
  +                }
  +            }
  +        }
  +        
           if (symbolTable.isWrapped()) {
               styleStr = " style=\"" + Style.WRAPPED + "\"";
  -            useStr = " use=\"" + Use.LITERAL + "\"";
  +            use = Use.LITERAL;
           } else {
               styleStr = " style=\"" + 
                   bEntry.getBindingStyle().getName() + "\"";
               if (hasLiteral) {
  -                useStr = " use=\"" + Use.LITERAL + "\"";
  -            } else {
  -                useStr = " use=\"" + Use.ENCODED + "\"";
  -            }
  +                use = Use.LITERAL;
  +            } 
           }
   
  +        String useStr = " use=\"" + use + "\"";
  +        
           pw.println("  <service name=\"" + serviceName
                   + "\" provider=\"" + prefix +":RPC"
                   + "\"" + styleStr + useStr + ">");
  @@ -323,7 +343,7 @@
           }
   
           writeDeployBinding(pw, bEntry);
  -        writeDeployTypes(pw, bEntry.getBinding(), hasLiteral, hasMIME);
  +        writeDeployTypes(pw, bEntry.getBinding(), hasLiteral, hasMIME, use);
   
           pw.println("  </service>");
       } //writeDeployPort
  
  
  
  1.2       +8 -1      xml-axis/java/test/wsdl/soap12/assertion/soap12-test.wsdl
  
  Index: soap12-test.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/soap12/assertion/soap12-test.wsdl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- soap12-test.wsdl  19 Jan 2003 21:25:09 -0000      1.1
  +++ soap12-test.wsdl  21 Jan 2003 17:01:13 -0000      1.2
  @@ -682,13 +682,20 @@
   
   
        <service name="WhiteMesaSoap12TestSvc">
  -
  +        <!--
                <port name="Soap12TestDocPort" binding="tns:Soap12TestDocBinding">
                        <soap12:address 
location="http://www.whitemesa.net/soap12/test-doc"/>
                </port>
                <port name="Soap12TestRpcPort" binding="tns:Soap12TestRpcBinding">
                        <soap12:address 
location="http://www.whitemesa.net/soap12/test-rpc"/>
                </port>
  +        -->
  +        <port name="Soap12TestDocPort" binding="tns:Soap12TestDocBinding">
  +              <soap12:address 
location="http://localhost:8080/axis/services/Soap12TestDocPort"/>
  +        </port>
  +        <port name="Soap12TestRpcPort" binding="tns:Soap12TestRpcBinding">
  +              <soap12:address 
location="http://localhost:8080/axis/services/Soap12TestRpcPort"/>
  +        </port>
   
        </service>
   
  
  
  
  1.85      +1 -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.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- SOAPEnvelope.java 6 Jan 2003 18:30:07 -0000       1.84
  +++ SOAPEnvelope.java 21 Jan 2003 17:01:13 -0000      1.85
  @@ -427,7 +427,7 @@
           context.setPretty(oldPretty);
       }
   
  -    SOAPConstants getSOAPConstants() {
  +    public SOAPConstants getSOAPConstants() {
           return soapConstants;
       }
   
  
  
  
  1.3       +4 -1      xml-axis/java/test/soap12/TestRPC.java
  
  Index: TestRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap12/TestRPC.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestRPC.java      19 Jan 2003 21:25:10 -0000      1.2
  +++ TestRPC.java      21 Jan 2003 17:01:14 -0000      1.3
  @@ -4,6 +4,7 @@
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.enum.Use;
   import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.description.ServiceDesc;
   import org.apache.axis.handlers.soap.SOAPService;
  @@ -44,6 +45,7 @@
           SOAPService service = new SOAPService(new RPCProvider());
           service.setOption("className", "test.soap12.Echo");
           service.setOption("allowedMethods", "*");
  +        service.setOption("use", Use.ENCODED12);
   
           ServiceDesc desc = service.getInitializedServiceDesc(null);
           desc.setDefaultNamespace(method);
  @@ -52,12 +54,13 @@
   
           MessageContext msgContext = new MessageContext(server);
           msgContext.setSOAPConstants(SOAPConstants.SOAP12_CONSTANTS);
  +        
msgContext.setEncodingStyle(SOAPConstants.SOAP12_CONSTANTS.getEncodingURI());
   
           String methodNS = null;
           msgContext.setTargetService(SERVICE_NAME);
   
           // Construct the soap request
  -        SOAPEnvelope envelope = new SOAPEnvelope();
  +        SOAPEnvelope envelope = new SOAPEnvelope(msgContext.getSOAPConstants());
           msgContext.setRequestMessage(new Message(envelope));
           RPCElement body = new RPCElement(methodNS, method, params);
   
  
  
  
  1.4       +4 -0      xml-axis/java/src/org/apache/axis/enum/Use.java
  
  Index: Use.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/enum/Use.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Use.java  11 Dec 2002 22:38:17 -0000      1.3
  +++ Use.java  21 Jan 2003 17:01:14 -0000      1.4
  @@ -71,9 +71,11 @@
   
       private static final Type type = new Type();
       
  +    public static final String ENCODED12_STR = "encoded12";
       public static final String ENCODED_STR = "encoded";
       public static final String LITERAL_STR = "literal";
    
  +    public static final Use ENCODED12 = type.getUse(ENCODED12_STR);
       public static final Use ENCODED = type.getUse(ENCODED_STR);
       public static final Use LITERAL = type.getUse(LITERAL_STR);
   
  @@ -117,6 +119,8 @@
                     Constants.URI_DEFAULT_SOAP_ENC),
               new Use(1, LITERAL_STR,
                     Constants.URI_LITERAL_ENC),
  +            new Use(2, ENCODED12_STR,
  +                  Constants.URI_SOAP12_ENC),
               });
           }
   
  
  
  


Reply via email to