butek       02/05/20 13:07:29

  Modified:    java/src/org/apache/axis/wsdl/toJava JavaBindingWriter.java
                        JavaImplWriter.java JavaStubWriter.java
                        JavaTestCaseWriter.java JavaWriter.java Utils.java
  Log:
  JavaWriter has become too brittle for good extensibility.  It assumes that
  each extension writes ONE file (extensions may not write any file at all);
  it's geared toward writing .java files and gets ugly when we write other
  things (like deploy.wsdd).
  
  This is only the first step in cleaning up JavaWriter.  In this step, I simply
  move the utility-like methods from JavaWriter to Utils so future work isn't
  cluttered and confused by this stuff:
  fileExists,
  isPrimitiveType,
  getResponseString,
  wrapPrimitiveType.
  
  A future step will place more behavior on extensions.  Right now
  JavaWriter places a very simple behavior on extensions:  it calls
  writeFileHeader and writeFileBody.  That's it.  This is not sufficient (though
  I'm still trying to figure out what is).  I'll probably pull a lot of the ugliness
  out of constructor calls into another method.  And revamp some of the
  javaisms (should JavaWriter really have the variables:  classname?
  packageName?  qname?  type?)
  
  Revision  Changes    Path
  1.11      +3 -3      
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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JavaBindingWriter.java    17 May 2002 02:22:40 -0000      1.10
  +++ JavaBindingWriter.java    20 May 2002 20:07:28 -0000      1.11
  @@ -183,9 +183,9 @@
                   String fileName = Utils.getJavaLocalName(bEntry.getName())
                           + "Impl.java";
                   try {
  -                // NOTE:  Where does the fileExists method really belong?
  -                    if (!((JavaWriter) stubWriter).fileExists (fileName,
  -                            binding.getQName().getNamespaceURI())) {
  +                    if (!Utils.fileExists(fileName,
  +                            binding.getQName().getNamespaceURI(),
  +                            emitter.getNamespaces())) {
                           implWriter = getJavaImplWriter(
                                   emitter, bEntry, symbolTable);
                       }
  
  
  
  1.22      +2 -2      
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.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- JavaImplWriter.java       17 May 2002 19:09:32 -0000      1.21
  +++ JavaImplWriter.java       20 May 2002 20:07:28 -0000      1.22
  @@ -176,7 +176,7 @@
               if (param.getMode() == Parameter.OUT) {
                   pw.print("        " + Utils.xmlNameToJava(param.getName())
                           + ".value = ");
  -                if ( isPrimitiveType(param.getType()) ) {
  +                if ( Utils.isPrimitiveType(param.getType()) ) {
                       if ( "boolean".equals(paramType) ) {
                           pw.print("false");
                       } else if ("byte".equals(paramType)) {
  @@ -239,7 +239,7 @@
           if (parms.returnType != null) {
               pw.print("        return ");
   
  -            if (isPrimitiveType(parms.returnType)) {
  +            if (Utils.isPrimitiveType(parms.returnType)) {
                   String returnType = parms.returnType.getName();
                   if ("boolean".equals(returnType)) {
                       pw.println("false;");
  
  
  
  1.61      +8 -5      
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.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- JavaStubWriter.java       17 May 2002 19:09:33 -0000      1.60
  +++ JavaStubWriter.java       20 May 2002 20:07:28 -0000      1.61
  @@ -607,10 +607,13 @@
                       needComma = true;
                   }
                   if (p.getMode() == Parameter.IN) {
  -                    pw.print(wrapPrimitiveType(p.getType(), javifiedName));
  +                    pw.print(Utils.wrapPrimitiveType(p.getType(),
  +                            javifiedName));
                   }
                   else { 
  -                    pw.print(wrapPrimitiveType(p.getType(), javifiedName + 
".value"));
  +                    pw.print(
  +                            Utils.wrapPrimitiveType(p.getType(),
  +                            javifiedName + ".value"));
                   }
               }
           }
  @@ -693,17 +696,17 @@
               // If that fails, use JavaUtils.convert()
               pw.println("            try {");
               pw.println("                " + target +
  -                       getResponseString(type, source));
  +                       Utils.getResponseString(type, source));
               pw.println("            } catch (java.lang.Exception e) {");
               pw.println("                " + target +
  -                       getResponseString(type, 
  +                       Utils.getResponseString(type, 
                                            "org.apache.axis.utils.JavaUtils.convert(" 
+
                                            source + ", " + 
                                            type.getName() + ".class)"));
               pw.println("            }"); 
           } else {
               pw.println("              " + target +
  -                       getResponseString(type, source));
  +                       Utils.getResponseString(type, source));
           }
       }
   } // class JavaStubWriter
  
  
  
  1.27      +2 -2      
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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- JavaTestCaseWriter.java   16 May 2002 19:34:17 -0000      1.26
  +++ JavaTestCaseWriter.java   20 May 2002 20:07:29 -0000      1.27
  @@ -188,7 +188,7 @@
                   pw.print(params.returnType.getName());
                   pw.print(" value = ");
   
  -                if (  isPrimitiveType( params.returnType ) ) {
  +                if ( Utils.isPrimitiveType( params.returnType ) ) {
                       if ( "boolean".equals( params.returnType.getName() ) ) {
                           pw.println("false;");
                       } else {
  @@ -230,7 +230,7 @@
                   }
   
                   if (param.getMode() != Parameter.OUT) {
  -                    if ( isPrimitiveType(param.getType()) ) {
  +                    if ( Utils.isPrimitiveType(param.getType()) ) {
                           if ( "boolean".equals(paramType) ) {
                               pw.print("true");
                           } else if ("byte".equals(paramType)) {
  
  
  
  1.13      +0 -67     xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriter.java
  
  Index: JavaWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JavaWriter.java   10 May 2002 13:30:35 -0000      1.12
  +++ JavaWriter.java   20 May 2002 20:07:29 -0000      1.13
  @@ -59,8 +59,6 @@
   import java.io.IOException;
   import java.io.PrintWriter;
   
  -import java.util.HashMap;
  -
   import javax.wsdl.QName;
   
   import org.apache.axis.utils.JavaUtils;
  @@ -263,61 +261,6 @@
       } // writeComment
   
       /**
  -     * A simple map of the primitive types and their holder objects
  -     */
  -    private static HashMap TYPES = new HashMap(7);
  -
  -    static {
  -        TYPES.put("int", "Integer");
  -        TYPES.put("float", "Float");
  -        TYPES.put("boolean", "Boolean");
  -        TYPES.put("double", "Double");
  -        TYPES.put("byte", "Byte");
  -        TYPES.put("short", "Short");
  -        TYPES.put("long", "Long");
  -    }
  -
  -    /**
  -     * Return a string with "var" wrapped as an Object type if needed
  -     */
  -    protected String wrapPrimitiveType(TypeEntry type, String var) {
  -        String objType = type == null ? null : (String) TYPES.get(type.getName());
  -        if (objType != null) {
  -            return "new " + objType + "(" + var + ")";
  -        } else if (type != null && 
  -                   type.getName().equals("byte[]") &&
  -                   type.getQName().getLocalPart().equals("hexBinary")) {
  -            // Need to wrap byte[] in special Hex object to get the correct 
serialization
  -            return "new org.apache.axis.encoding.Hex(" + var + ")";
  -        } else {
  -            return var;
  -        }
  -    } // wrapPrimitiveType
  -
  -    /**
  -     * Return the Object variable 'var' cast to the appropriate type
  -     * doing the right thing for the primitive types.
  -     */
  -    protected String getResponseString(TypeEntry type, String var) {
  -        if (type == null) {
  -            return ";";
  -        }
  -        else {
  -            String objType = (String) TYPES.get(type.getName());
  -            if (objType != null) {
  -                return "((" + objType + ") " + var + ")." + type.getName() + 
"Value();";
  -            }
  -            else {
  -                return "(" + type.getName() + ") " + var + ";";
  -            }
  -        }
  -    } // getResponseString
  -
  -    protected boolean isPrimitiveType(TypeEntry type) {
  -        return TYPES.get(type.getName()) != null;
  -    }
  -
  -    /**
        * Initialize the deployment document, spit out preamble comments
        * and opening tag.
        */
  @@ -356,16 +299,6 @@
               pw.println("    xmlns=\"" + Constants.URI_WSDD +"\">");
           }
       } // initializeDeploymentDoc
  -
  -    /**
  -     * Does the given file already exist?
  -     */
  -    protected boolean fileExists (String name, String namespace) throws IOException
  -    {
  -        String packageName = emitter.getNamespaces().getAsDir(namespace);
  -        String fullName = packageName + name;
  -        return new File (fullName).exists();
  -    } // fileExists
   
       /**
        * Write the body of the file.  This is what extenders of this class must
  
  
  
  1.31      +70 -0     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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Utils.java        14 May 2002 23:46:34 -0000      1.30
  +++ Utils.java        20 May 2002 20:07:29 -0000      1.31
  @@ -54,9 +54,13 @@
    */
   package org.apache.axis.wsdl.toJava;
   
  +import java.io.File;
  +import java.io.IOException;
  +
   import java.net.MalformedURLException;
   import java.net.URL;
   
  +import java.util.HashMap;
   import java.util.StringTokenizer;
   import java.util.Vector;
   
  @@ -378,5 +382,71 @@
               return "";
           }
       } // getJavaPackageName
  +
  +    /**
  +     * Does the given file already exist in the given namespace?
  +     */
  +    public static boolean fileExists(String name, String namespace,
  +            Namespaces namespaces) throws IOException
  +    {
  +        String packageName = namespaces.getAsDir(namespace);
  +        String fullName = packageName + name;
  +        return new File (fullName).exists();
  +    } // fileExists
  +
  +    /**
  +     * A simple map of the primitive types and their holder objects
  +     */
  +    private static HashMap TYPES = new HashMap(7);
  +
  +    static {
  +        TYPES.put("int", "Integer");
  +        TYPES.put("float", "Float");
  +        TYPES.put("boolean", "Boolean");
  +        TYPES.put("double", "Double");
  +        TYPES.put("byte", "Byte");
  +        TYPES.put("short", "Short");
  +        TYPES.put("long", "Long");
  +    }
  +
  +    /**
  +     * Return a string with "var" wrapped as an Object type if needed
  +     */
  +    public static String wrapPrimitiveType(TypeEntry type, String var) {
  +        String objType = type == null ? null : (String) TYPES.get(type.getName());
  +        if (objType != null) {
  +            return "new " + objType + "(" + var + ")";
  +        } else if (type != null && 
  +                   type.getName().equals("byte[]") &&
  +                   type.getQName().getLocalPart().equals("hexBinary")) {
  +            // Need to wrap byte[] in special Hex object to get the correct 
serialization
  +            return "new org.apache.axis.encoding.Hex(" + var + ")";
  +        } else {
  +            return var;
  +        }
  +    } // wrapPrimitiveType
  +
  +    /**
  +     * Return the Object variable 'var' cast to the appropriate type
  +     * doing the right thing for the primitive types.
  +     */
  +    public static String getResponseString(TypeEntry type, String var) {
  +        if (type == null) {
  +            return ";";
  +        }
  +        else {
  +            String objType = (String) TYPES.get(type.getName());
  +            if (objType != null) {
  +                return "((" + objType + ") " + var + ")." + type.getName() + 
"Value();";
  +            }
  +            else {
  +                return "(" + type.getName() + ") " + var + ";";
  +            }
  +        }
  +    } // getResponseString
  +
  +    public static boolean isPrimitiveType(TypeEntry type) {
  +        return TYPES.get(type.getName()) != null;
  +    } // isPrimitiveType
   
   } // class Utils
  
  
  


Reply via email to