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