You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2002/09/22 08:13:43 UTC

cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava JavaSkelWriter.java JavaDeployWriter.java

gdaniels    2002/09/21 23:13:42

  Modified:    java/src/org/apache/axis/description ServiceDesc.java
               java/src/org/apache/axis/i18n resource.properties
               java/src/org/apache/axis/wsdl/toJava JavaSkelWriter.java
                        JavaDeployWriter.java
  Log:
  Throw a more informative exception when there's an operation in the
  WSDD/skeleton metadata which doesn't sync to a real Java Method.
  
  Make sure we don't write operation metadata for types we don't support
  (solicit/response, etc).
  
  Revision  Changes    Path
  1.58      +12 -0     xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
  
  Index: ServiceDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- ServiceDesc.java	20 Sep 2002 14:29:52 -0000	1.57
  +++ ServiceDesc.java	22 Sep 2002 06:13:42 -0000	1.58
  @@ -720,6 +720,18 @@
           }
   
           loadServiceDescByIntrospectionRecursive(implClass);
  +        
  +        // All operations should now be synchronized.  Check it.
  +        for (Iterator iterator = operations.iterator(); iterator.hasNext();) {
  +            OperationDesc operation = (OperationDesc) iterator.next();
  +            if (operation.getMethod() == null) {
  +                throw new InternalException(
  +                        Messages.getMessage("badWSDDOperation",
  +                                            operation.getName(),
  +                                            "" + operation.getNumParams()));
  +            }
  +        }
  +        
           introspectionComplete = true;
       }
   
  
  
  
  1.3       +2 -0      xml-axis/java/src/org/apache/axis/i18n/resource.properties
  
  Index: resource.properties
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/i18n/resource.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- resource.properties	22 Sep 2002 01:31:36 -0000	1.2
  +++ resource.properties	22 Sep 2002 06:13:42 -0000	1.3
  @@ -1021,3 +1021,5 @@
   
   unabletoLoadMessages00=Unable to load messages!
   unabletoDeployTypemapping00=Unable to deploy typemapping: {0}
  +
  +badWSDDOperation=Couldn''t find a matching Java operation for WSDD operation "{0}" ({1} args)
  
  
  
  1.49      +16 -8     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.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- JavaSkelWriter.java	18 Sep 2002 16:10:36 -0000	1.48
  +++ JavaSkelWriter.java	22 Sep 2002 06:13:42 -0000	1.49
  @@ -79,7 +79,6 @@
   import org.apache.axis.wsdl.symbolTable.Parameters;
   import org.apache.axis.wsdl.symbolTable.SymbolTable;
   
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   
   /**
  @@ -145,13 +144,22 @@
           pw.println("        org.apache.axis.description.ParameterDesc [] _params;");
           List operations = binding.getBindingOperations();
           for (int i = 0; i < operations.size(); ++i) {
  -            BindingOperation operation = (BindingOperation) operations.get(i);
  +            BindingOperation bindingOper = (BindingOperation) operations.get(i);
  +            Operation operation = bindingOper.getOperation();
  +            OperationType type = operation.getStyle();
  +            // These operation types are not supported.  The signature
  +            // will be a string stating that fact.
  +            if (type == OperationType.NOTIFICATION
  +                    || type == OperationType.SOLICIT_RESPONSE) {
  +                continue;
  +            }
  +            
               Parameters parameters =
  -                    bEntry.getParameters(operation.getOperation());
  +                    bEntry.getParameters(bindingOper.getOperation());
   
               if (parameters != null) {
  -                // The invoked java name of the operation is stored.
  -                String opName = operation.getOperation().getName();
  +                // The invoked java name of the bindingOper is stored.
  +                String opName = bindingOper.getOperation().getName();
                   String javaOpName = Utils.xmlNameToJava(opName);
                   pw.println("        _params = new org.apache.axis.description.ParameterDesc [] {");
   
  @@ -212,14 +220,14 @@
                   // If we need to know the QName (if we have a namespace or
                   // the actual method name doesn't match the XML we expect),
                   // record it in the OperationDesc
  -                QName elementQName = Utils.getOperationQName(operation);
  +                QName elementQName = Utils.getOperationQName(bindingOper);
                   if (elementQName != null) {
                       pw.println("        _oper.setElementQName(" +
                               Utils.getNewQName(elementQName) + ");");
                   }
   
                   // Find the SOAPAction.
  -                List elems = operation.getExtensibilityElements();
  +                List elems = bindingOper.getExtensibilityElements();
                   Iterator it = elems.iterator();
                   boolean found = false;
                   while (!found && it.hasNext()) {
  @@ -326,7 +334,7 @@
               Parameters parms,
               String soapAction,
               String namespace
  -            ) throws IOException {
  +            ) {
           writeComment(pw, operation.getDocumentationElement());
   
           // The skeleton used to have specialized operation signatures.
  
  
  
  1.64      +5 -3      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.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- JavaDeployWriter.java	18 Sep 2002 16:10:36 -0000	1.63
  +++ JavaDeployWriter.java	22 Sep 2002 06:13:42 -0000	1.64
  @@ -345,10 +345,12 @@
   
                   // These operation types are not supported.  The signature
                   // will be a string stating that fact.
  -                if (type != OperationType.NOTIFICATION
  -                        && type != OperationType.SOLICIT_RESPONSE) {
  -                    methodList = methodList + " " + javaOperName;
  +                if (type == OperationType.NOTIFICATION
  +                        || type == OperationType.SOLICIT_RESPONSE) {
  +                    continue;
                   }
  +
  +                methodList = methodList + " " + javaOperName;
   
                   // We pass "" as the namespace argument because we're just
                   // interested in the return type for now.