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 Glen Daniels <gd...@macromedia.com> on 2002/03/22 05:55:05 UTC

RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava Emi tter.java JavaBeanWriter.java JavaTypeWriter.java JavaWriter.java NoopWri terFactory.java

Hi Rich!

Hm... I think you perhaps forgot to add the JavaBeanHelperWriter class to CVS....?

--Glen

> -----Original Message-----
> From: scheu@apache.org [mailto:scheu@apache.org]
> Sent: Thursday, March 21, 2002 5:27 PM
> To: xml-axis-cvs@apache.org
> Subject: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava
> Emitter.java JavaBeanWriter.java JavaTypeWriter.java JavaWriter.java
> NoopWriterFactory.java
> 
> 
> 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.pr
> operties,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/JavaBe
> anWriter.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/JavaTy
> peWriter.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/JavaWr
> iter.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/NoopWr
> iterFactory.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();
>        }
>   
>   
>   
>