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();
> }
>
>
>
>