scheu       2002/05/31 06:47:45

  Modified:    java/src/org/apache/axis/description ParameterDesc.java
                        ServiceDesc.java
               java/src/org/apache/axis/wsdl/toJava JavaSkelWriter.java
               java/test/wsdl Wsdl2javaTestSuite.xml
  Log:
  The following changes were necessary to support overloading
  from skeletons.
  
     1) Changed the Java Skeleton Map to have
        keys=method names and values=List of OperationDesc.
        This used to be values=OperationDesc, so there was no
        way to stored overloaded method names.
  
     2) Changed the Java Skeleton writer to assign the
        appropriate type QName and type javaType to each
        ParameterDesc.  I added a new constructor to ParameterDesc
        to simplify the generation.
  
     3) Changed ServiceDesc code that reads the skeleton's
        OperationDesc objects to conform to the new HashMap changes.
        Also made some minor changes to the parameter processing
        to use the existing javaType (if set).
  
     4) Changed the roundtrip test case to once again use
        skeletonDeploy.
  
  Revision  Changes    Path
  1.9       +14 -1     xml-axis/java/src/org/apache/axis/description/ParameterDesc.java
  
  Index: ParameterDesc.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/description/ParameterDesc.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ParameterDesc.java        9 May 2002 13:14:27 -0000       1.8
  +++ ParameterDesc.java        31 May 2002 13:47:44 -0000      1.9
  @@ -92,7 +92,7 @@
       }
   
       /**
  -     * "Complete" constructor, suitable for usage in skeleton code
  +     * Constructor
        *
        * @param name the parameter's fully qualified XML name
        * @param mode IN, OUT, INOUT
  @@ -102,6 +102,19 @@
           this.name = name;
           this.mode = mode;
           this.typeQName = typeQName;
  +    }
  +
  +    /**
  +     * "Complete" constructor, suitable for usage in skeleton code
  +     *
  +     * @param name the parameter's fully qualified XML name
  +     * @param mode IN, OUT, INOUT
  +     * @param typeQName the parameter's XML type QName
  +     * @param javaType the parameter's javaType
  +     */
  +    public ParameterDesc(QName name, byte mode, QName typeQName, Class javaType) {
  +        this(name,mode,typeQName);
  +        this.javaType = javaType;
       }
   
       public String toString() {
  
  
  
  1.23      +23 -15    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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- ServiceDesc.java  14 May 2002 23:46:34 -0000      1.22
  +++ ServiceDesc.java  31 May 2002 13:47:44 -0000      1.23
  @@ -131,7 +131,7 @@
   
       /** Lookup caches */
       private HashMap name2OperationsMap = null;
  -    private HashMap qname2OperationMap = null;
  +    private HashMap qname2OperationsMap = null;
       private HashMap method2OperationMap = new HashMap();
   
       /** Method names for which we have completed any introspection necessary */
  @@ -270,14 +270,13 @@
               name2OperationsMap = new HashMap();
           }
   
  +        // Add name to name2Operations Map
           String name = operation.getName();
  -
           ArrayList overloads = (ArrayList)name2OperationsMap.get(name);
           if (overloads == null) {
               overloads = new ArrayList();
               name2OperationsMap.put(name, overloads);
           }
  -
           overloads.add(operation);
       }
   
  @@ -357,7 +356,7 @@
           // said mapping....
           initQNameMap();
   
  -        ArrayList overloads = (ArrayList)qname2OperationMap.get(qname);
  +        ArrayList overloads = (ArrayList)qname2OperationsMap.get(qname);
   
           if (overloads == null) {
               if ((style == STYLE_RPC) && (name2OperationsMap != null)) {
  @@ -376,18 +375,18 @@
       }
   
       private synchronized void initQNameMap() {
  -        if (qname2OperationMap == null) {
  +        if (qname2OperationsMap == null) {
               loadServiceDescByIntrospection();
   
  -            qname2OperationMap = new HashMap();
  +            qname2OperationsMap = new HashMap();
               for (Iterator i = operations.iterator(); i.hasNext();) {
                   OperationDesc operationDesc = (OperationDesc) i.next();
                   ArrayList list = 
  -                        (ArrayList)qname2OperationMap.get(operationDesc.
  +                        (ArrayList)qname2OperationsMap.get(operationDesc.
                                                             getElementQName());
                   if (list == null) {
                       list = new ArrayList();
  -                    qname2OperationMap.put(operationDesc.getElementQName(),
  +                    qname2OperationsMap.put(operationDesc.getElementQName(),
                                              list);
                   }
                   list.add(operationDesc);
  @@ -438,9 +437,14 @@
                           param.setJavaType(type);
                           param.setTypeQName(typeQName);
                       } else {
  -                        // A type was specified - see if they match
  -                        Class paramClass = tm.getClassForQName(
  -                                param.getTypeQName());
  +                        // A type qname was specified - see if they match
  +                        
  +                        // Use the specified javaType or get one 
  +                        // from the type mapping registry.
  +                        Class paramClass = param.getJavaType();
  +                        if (paramClass == null) {
  +                            paramClass = tm.getClassForQName(param.getTypeQName());
  +                        }
   
                           // This is a match if the paramClass is somehow
                           // convertable to the "real" parameter type.  If not,
  @@ -589,11 +593,15 @@
                   }
               }
               try {
  -                OperationDesc skelDesc =
  -                        (OperationDesc)skelMethod.invoke(implClass,
  +                List skelList =
  +                        (List)skelMethod.invoke(implClass,
                                   new Object [] { methodName });
  -                if (skelDesc != null)
  -                    addOperationDesc(skelDesc);
  +                if (skelList != null) {
  +                    Iterator i = skelList.iterator();
  +                    while (i.hasNext()) {
  +                        addOperationDesc((OperationDesc)i.next());
  +                    }
  +                }
               } catch (IllegalAccessException e) {
                   return;
               } catch (IllegalArgumentException e) {
  
  
  
  1.27      +35 -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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- JavaSkelWriter.java       17 May 2002 19:09:33 -0000      1.26
  +++ JavaSkelWriter.java       31 May 2002 13:47:44 -0000      1.27
  @@ -75,10 +75,12 @@
   import org.apache.axis.utils.JavaUtils;
   
   import org.apache.axis.wsdl.symbolTable.BindingEntry;
  +import org.apache.axis.wsdl.symbolTable.Element;
   import org.apache.axis.wsdl.symbolTable.Parameter;
   import org.apache.axis.wsdl.symbolTable.Parameters;
   import org.apache.axis.wsdl.symbolTable.PortTypeEntry;
   import org.apache.axis.wsdl.symbolTable.SymbolTable;
  +import org.apache.axis.wsdl.symbolTable.TypeEntry;
   
   /**
   * This is Wsdl2java's skeleton writer.  It writes the <BindingName>Skeleton.java
  @@ -124,14 +126,21 @@
   
           // Declare private impl and skeleton base delegates
           pw.println("    private " + implType + ";");
  -        pw.println("    private static java.util.Hashtable _myOperations = new 
java.util.Hashtable();");
  +        pw.println("    private static java.util.Map _myOperations = new 
java.util.Hashtable();");
  +        pw.println("    private static java.util.Collection _myOperationsList = new 
java.util.ArrayList();");
           pw.println();
  -        pw.println("    public static org.apache.axis.description.OperationDesc 
getOperationDescByName(String methodName) {");
  -        pw.println("        return 
(org.apache.axis.description.OperationDesc)_myOperations.get(methodName);");
  +        pw.println("    /**");
  +        pw.println("    * Returns List of OperationDesc objects with this name");
  +        pw.println("    */");
  +        pw.println("    public static java.util.List getOperationDescByName(String 
methodName) {");
  +        pw.println("        return (java.util.List)_myOperations.get(methodName);");
           pw.println("    }");
           pw.println();
  +        pw.println("    /**");
  +        pw.println("    * Returns Collection of OperationDescs");
  +        pw.println("    */");
           pw.println("    public static java.util.Collection getOperationDescs() {");
  -        pw.println("        return _myOperations.values();");
  +        pw.println("        return _myOperationsList;");
           pw.println("    }");
           pw.println();
   
  @@ -167,9 +176,23 @@
                           default:
                               throw new IOException();
                       }
  -                    pw.println("            new 
org.apache.axis.description.ParameterDesc(" +
  -                       Utils.getNewQName(Utils.getAxisQName(p.getQName())) +
  -                       ", " + modeStr + ", null),");
  +                    // Construct a parameter with the parameter name, mode, type 
qname
  +                    // a type javaType.
  +                    TypeEntry paramType = p.getType();
  +                    if (paramType instanceof Element && 
  +                        paramType.getRefType() != null) {
  +                        paramType = paramType.getRefType();
  +                    }
  +                    pw.println("            " +
  +                        "new org.apache.axis.description.ParameterDesc(" +
  +                        Utils.getNewQName(
  +                             Utils.getAxisQName(p.getQName())) +
  +                        ", " + modeStr + "," +
  +                        Utils.getNewQName(
  +                             Utils.getAxisQName(paramType.getQName()))
  +                        +","+
  +                        p.getType().getName() + ".class" 
  +                        +"),");
                   }
   
                   pw.println("        };");
  @@ -224,7 +247,11 @@
                       }
                   }
   
  -                pw.println("        _myOperations.put(\"" + javaOpName + "\", 
_oper);");
  +                pw.println("        _myOperationsList.add(_oper);");
  +                pw.println("        if (_myOperations.get(\"" + javaOpName + 
"\")==null) {");
  +                pw.println("            _myOperations.put(\"" + javaOpName + "\", 
new java.util.ArrayList());");
  +                pw.println("        }");
  +                pw.println("        ((java.util.List)_myOperations.get(\"" + 
javaOpName + "\")).add(_oper);");
               }
           }
           pw.println("    }");
  
  
  
  1.102     +0 -9      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.101
  retrieving revision 1.102
  diff -u -r1.101 -r1.102
  --- Wsdl2javaTestSuite.xml    30 May 2002 18:55:21 -0000      1.101
  +++ Wsdl2javaTestSuite.xml    31 May 2002 13:47:45 -0000      1.102
  @@ -145,20 +145,11 @@
       <!-- Delete the intermediate files so we recreate over a clean slate -->
       <delete dir="${build.dir}/classes/test/wsdl/roundtrip"/>
       <!-- Recreate Java files from the new WSDL -->
  -    <!-- Temporarily changed to remove skeletonDeploy...Scheu
       <wsdl2java url="build/work/test/wsdl/roundtrip/Roundtrip.wsdl"
                  output="build/work"
                  deployscope="session"
                  serverSide="yes"
                  skeletonDeploy="yes"
  -               noimports="no"
  -               verbose="no"
  -               testcase="no">
  -    -->
  -    <wsdl2java url="build/work/test/wsdl/roundtrip/Roundtrip.wsdl"
  -               output="build/work"
  -               deployscope="session"
  -               serverSide="yes"
                  noimports="no"
                  verbose="no"
                  testcase="no">
  
  
  


Reply via email to