scheu       02/03/21 14:27:02

  Modified:    java/src/org/apache/axis/utils resources.properties
               java/src/org/apache/axis/wsdl/toJava Emitter.java
                        JavaBeanWriter.java JavaTypeWriter.java
                        JavaWriter.java NoopWriterFactory.java
  Log:
  I restructured some of the code in the parser.
  
  JavaBeanHelperWriter - This is a new class that
     is used to emit the Bean Meta data.  The
     meta data code was moved to this class from
     JavaBeanWriter.  Currently this code is emitted
     into the bean class.  In the future, this will
     be changed so that it can be emitted into the
     bean class or a separate helper class.
  
  JavaBeanWriter - This class has been changed so
     that it now contains the code to emit only the
     bean logical methods.  It then invokes
     the JavaBeanHelperWriter to emit the meta data.
  
  I also cleaned up some up some of this code to make the
  classes a little easier to extend.
  
  Revision  Changes    Path
  1.82      +1 -0      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.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- resources.properties      21 Mar 2002 19:10:10 -0000      1.81
  +++ resources.properties      21 Mar 2002 22:27:02 -0000      1.82
  @@ -199,6 +199,7 @@
   genStub00=Generating client-side stub
   genTest00=Generating service test case
   genType00=Generating type implementation
  +genHelper00=Generating helper implementation
   genUndeploy00=Generating undeployment document
   genUndeployFail00=Failed to write undeployment document
   getProxy00=Use to get a proxy class for {0}
  
  
  
  1.27      +1 -0      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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Emitter.java      19 Mar 2002 15:42:02 -0000      1.26
  +++ Emitter.java      21 Mar 2002 22:27:02 -0000      1.27
  @@ -134,6 +134,7 @@
       } // ctor
   
       public SymbolTable getSymbolTable() { return symbolTable;}
  +    public WriterFactory getWriterFactory() { return writerFactory;}
       /**
        * Call this method if you have a uri for the WSDL document
        * @param String wsdlURI the location of the WSDL file.
  
  
  
  1.3       +16 -99    
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
  
  Index: JavaBeanWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JavaBeanWriter.java       20 Mar 2002 21:43:52 -0000      1.2
  +++ JavaBeanWriter.java       21 Mar 2002 22:27:02 -0000      1.3
  @@ -71,7 +71,8 @@
       private Vector elements;
       private Vector attributes;
       private TypeEntry extendType;
  -    private HashMap elementMappings = null;
  +    protected JavaWriter helper;
  +    protected Vector names = new Vector();
   
       /**
        * Constructor.
  @@ -79,19 +80,23 @@
        * @param type        The type representing this class
        * @param elements    Vector containing the Type and name of each property
        * @param extendType  The type representing the extended class (or null)
  +     * @param attributes  Vector containing the attribute types and names    
  +     * @param helper      Helper class writer                                
        */
       protected JavaBeanWriter(
               Emitter emitter,
               TypeEntry type,
               Vector elements,
               TypeEntry extendType,
  -            Vector attributes) {
  +            Vector attributes,
  +            JavaWriter helper) {
           super(emitter, type, "", "java",
                 JavaUtils.getMessage("genType00"), "complexType");
           this.type = type;
           this.elements = elements;
           this.attributes = attributes;
           this.extendType = extendType;
  +        this.helper = helper;
       } // ctor
   
       /**
  @@ -110,21 +115,12 @@
           }
   
           // We are only interested in the java names of the types, so create a names 
list
  -        Vector names = new Vector();
           if (elements != null) {
               for (int i = 0; i < elements.size(); i++) {
                   ElementDecl elem = (ElementDecl)elements.get(i);
                   TypeEntry type = elem.getType();
                   String elemName = elem.getName().getLocalPart();
                   String javaName = Utils.xmlNameToJava(elemName);
  -                if (!javaName.equals(elemName)) {
  -                    // If we did some mangling, make sure we'll write out the XML
  -                    // the correct way.
  -                    if (elementMappings == null)
  -                        elementMappings = new HashMap();
  -
  -                    elementMappings.put(javaName, elem.getName());
  -                }
                   names.add(type.getName());
                   names.add(javaName);
               }
  @@ -170,27 +166,6 @@
           pw.println("    public " + className + "() {");
           pw.println("    }");
   
  -        // The code used to generate a constructor that set
  -        // all of the properties.  
  -        boolean fullConstructorGen = false;
  -        if (fullConstructorGen) {
  -            pw.println();
  -            if (names.size() > 0) {
  -                pw.print("    public " + className + "(");
  -                for (int i = 0; i < names.size(); i += 2) {
  -                    if (i != 0) pw.print(", ");
  -                    String variable = (String) names.get(i + 1);
  -                    pw.print((String) names.get(i) + " " + variable);
  -                }
  -                pw.println(") {");
  -                for (int i = 1; i < names.size(); i += 2) {
  -                    String variable = (String) names.get(i);
  -                    pw.println("        this." + variable + " = " + variable + ";");
  -                }
  -                pw.println("    }");
  -            }
  -        }
  -
           pw.println();
           int j = 0; 
           for (int i = 0; i < names.size(); i += 2, j++) {
  @@ -251,68 +226,6 @@
               }
           }
          
  -        // if we have attributes, create metadata function which returns the
  -        // list of properties that are attributes instead of elements
  -
  -        if (attributes != null || elementMappings != null) {
  -            boolean wroteFieldType = false;
  -            pw.println("    // " + JavaUtils.getMessage("typeMeta"));
  -            pw.println("    private static org.apache.axis.description.TypeDesc 
typeDesc =");
  -            pw.println("        new org.apache.axis.description.TypeDesc();");
  -            pw.println();
  -            pw.println("    static {");
  -
  -            if (attributes != null) {
  -                for (int i = 0; i < attributes.size(); i += 2) {
  -                    String attrName = (String) attributes.get(i + 1);
  -                    String fieldName = Utils.xmlNameToJava(attrName);
  -                    pw.print("        ");
  -                    if (!wroteFieldType) {
  -                        pw.print("org.apache.axis.description.FieldDesc ");
  -                        wroteFieldType = true;
  -                    }
  -                    pw.println("field = new 
org.apache.axis.description.AttributeDesc();");
  -                    pw.println("        field.setFieldName(\"" + fieldName + 
"\");");
  -                    if (!fieldName.equals(attrName)) {
  -                        pw.print("        field.setXmlName(");
  -                        pw.print("new javax.xml.rpc.namespace.QName(null, \"");
  -                        pw.println(attrName + "\"));");
  -                    }
  -                    pw.println("        typeDesc.addFieldDesc(field);");
  -                }
  -            }
  -
  -            if (elementMappings != null) {
  -                Iterator i = elementMappings.keySet().iterator();
  -                while (i.hasNext()) {
  -                    String fieldName = (String)i.next();
  -                    QName xmlName = (QName)elementMappings.get(fieldName);
  -                    pw.print("        ");
  -                    if (!wroteFieldType) {
  -                        pw.print("org.apache.axis.description.FieldDesc ");
  -                        wroteFieldType = true;
  -                    }
  -                    pw.println("field = new 
org.apache.axis.description.ElementDesc();");
  -                    pw.println("        field.setFieldName(\"" + fieldName + 
"\");");
  -                    pw.print(  "        field.setXmlName(new 
javax.xml.rpc.namespace.QName(\"");
  -                    pw.println(xmlName.getNamespaceURI() + "\", \"" +
  -                               xmlName.getLocalPart() + "\"));");
  -                    pw.println("        typeDesc.addFieldDesc(field);");
  -                }
  -            }
  -
  -            pw.println("    };");
  -            pw.println();
  -
  -            pw.println("    /**");
  -            pw.println("     * " + JavaUtils.getMessage("returnTypeMeta"));
  -            pw.println("     */");
  -            pw.println("    public static org.apache.axis.description.TypeDesc 
getTypeDesc() {");
  -            pw.println("        return typeDesc;");
  -            pw.println("    }");
  -            pw.println();
  -        }
  -        
           // if this is a simple type, we need to emit a toString and a string
           // constructor
           if (type.isSimpleType() && valueType != null) {
  @@ -329,6 +242,14 @@
               pw.println();
           }
   
  +        writeEqualsMethod();
  +
  +        helper.write(pw);
  +        pw.println("}");
  +        pw.close();
  +    } // writeFileBody
  +
  +    protected void writeEqualsMethod() {
           pw.println("    public boolean equals(Object obj) {");
           pw.println("        // compare elements");
           pw.println("        " +  className + " other = (" + className + ") obj;");
  @@ -372,9 +293,5 @@
               }
           }
           pw.println("    }");
  -
  -        pw.println("}");
  -        pw.close();
  -    } // writeOperation
  -
  +    }
   } // class JavaBeanWriter
  
  
  
  1.9       +40 -5     
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JavaTypeWriter.java       19 Mar 2002 23:38:31 -0000      1.8
  +++ JavaTypeWriter.java       21 Mar 2002 22:27:02 -0000      1.9
  @@ -95,7 +95,7 @@
                   Vector v = SchemaUtils.getEnumerationBaseAndValues(
                           node, symbolTable);
                   if (v != null) {
  -                    typeWriter = new JavaEnumTypeWriter(emitter, type, v);
  +                    typeWriter = getEnumTypeWriter(emitter, type, v);
                   }
                   else {
                       TypeEntry base = SchemaUtils.getComplexElementExtensionBase(
  @@ -108,8 +108,7 @@
                           }
                       }
   
  -                    typeWriter = new 
  -                        JavaBeanWriter(
  +                    typeWriter = getBeanWriter(
                               emitter, 
                               type, 
                               SchemaUtils.getContainedElementDeclarations(
  @@ -125,7 +124,7 @@
               // If the holder is needed (ie., something uses this type as an out or 
inout
               // parameter), instantiate the holder writer.
               if (holderIsNeeded(type)) {
  -                holderWriter = new JavaHolderWriter(emitter, type);
  +                holderWriter = getHolderWriter(emitter, type);
               }
           }
       } // ctor
  @@ -134,8 +133,9 @@
        * Write all the service bindnigs:  service and testcase.
        */
       public void write() throws IOException {
  -        if (typeWriter != null)
  +        if (typeWriter != null) {
               typeWriter.write();
  +        }
           if (holderWriter != null) {
               holderWriter.write();
           }
  @@ -149,4 +149,39 @@
                   (Boolean) entry.getDynamicVar(HOLDER_IS_NEEDED);
           return (holderIsNeeded != null && holderIsNeeded.booleanValue());
       } // holderIsNeeded
  +
  +    /**
  +     * getEnumWriter
  +     **/
  +    protected JavaWriter getEnumTypeWriter(Emitter emitter, TypeEntry type, Vector 
v) {
  +        return new JavaEnumTypeWriter(emitter, type, v);
  +    }
  +
  +    /**
  +     * getBeanWriter
  +     **/
  +    protected JavaWriter getBeanWriter(Emitter emitter, TypeEntry type, 
  +                                   Vector elements, TypeEntry base,
  +                                   Vector attributes) {
  +        JavaWriter helperWriter = getBeanHelperWriter(emitter, type, elements, base,
  +                                                  attributes);
  +        return new JavaBeanWriter(emitter, type, elements, base, attributes, 
  +                                  helperWriter);
  +    }
  +
  +    /**
  +     * getHelperWriter
  +     **/
  +    protected JavaWriter getBeanHelperWriter(Emitter emitter, TypeEntry type,
  +                                         Vector elements, TypeEntry base, 
  +                                         Vector attributes) {
  +        return new JavaBeanHelperWriter(emitter, type, elements, base, attributes); 
  +    }
  +
  +    /**
  +     * getHolderWriter
  +     **/
  +    protected Writer getHolderWriter(Emitter emitter, TypeEntry type) {
  +        return new JavaHolderWriter(emitter, type);
  +    }
   } // class JavaTypeWriter
  
  
  
  1.8       +21 -0     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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JavaWriter.java   12 Mar 2002 16:34:54 -0000      1.7
  +++ JavaWriter.java   21 Mar 2002 22:27:02 -0000      1.8
  @@ -145,6 +145,27 @@
       } // ctor
   
       /**
  +     * Generate as an inner class
  +     */
  +    public void write(PrintWriter pw) throws IOException {
  +        String packageDirName = namespaces.toDir(packageName);
  +        String path = packageDirName + fileName;
  +        String fqClass = packageName + "." + className;
  +        
  +        // Check for duplicates, probably the result of namespace mapping
  +        if (emitter.fileInfo.getClassNames().contains(fqClass)) {
  +            throw new IOException(JavaUtils.getMessage("duplicateClass00", 
fqClass));
  +        }
  +        if (emitter.fileInfo.getFileNames().contains(path)) {
  +            throw new IOException(JavaUtils.getMessage("duplicateFile00", path));
  +        }
  +        
  +        emitter.fileInfo.add(path, fqClass, type);
  +        this.pw = pw;
  +        writeFileBody();
  +    }
  +
  +    /**
        * Create the file, write the header, write the body.
        */
       public void write() throws IOException {
  
  
  
  1.2       +1 -1      
xml-axis/java/src/org/apache/axis/wsdl/toJava/NoopWriterFactory.java
  
  Index: NoopWriterFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/NoopWriterFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NoopWriterFactory.java    20 Feb 2002 17:17:36 -0000      1.1
  +++ NoopWriterFactory.java    21 Mar 2002 22:27:02 -0000      1.2
  @@ -107,7 +107,7 @@
       public Writer getWriter(TypeEntry type, SymbolTable symbolTable) {
           return new NoopWriter();
       }
  -    
  +
       public Writer getWriter(Definition definition, SymbolTable symbolTable) {
           return new NoopWriter();
       }
  
  
  


Reply via email to