owenb 2002/06/14 05:17:37
Modified: java/src/org/apache/wsif/compiler/schema/tools
Schema2JROM.java Schema2Java.java
java/src/org/apache/wsif/base WSIFServiceImpl.java
WSIFDefaultOperation.java
java/src/org/apache/wsif WSIFServiceFactory.java
WSIFClientProxy.java
java/src/org/apache/wsif/util WSIFUtils.java
Log:
Performance improvements:
- Added new methods on WSIFUtils to create a map of simple schema types to Java
equivalents
- Changed methods in Schema2Java and Schema2JROM to use Maps and HashMaps rather
than Hashtable
Revision Changes Path
1.2 +144 -43
xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2JROM.java
Index: Schema2JROM.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2JROM.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Schema2JROM.java 6 Jun 2002 08:28:49 -0000 1.1
+++ Schema2JROM.java 14 Jun 2002 12:17:36 -0000 1.2
@@ -58,7 +58,9 @@
package org.apache.wsif.compiler.schema.tools;
import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
import java.util.Vector;
import javax.wsdl.QName;
@@ -78,10 +80,10 @@
*/
public class Schema2JROM {
- private Hashtable registry = new Hashtable();
- private Hashtable namespaceRegistry = new Hashtable();
+ private HashMap registry = new HashMap();
+ private HashMap namespaceRegistry = new HashMap();
- private Hashtable undefinedRegistry = new Hashtable();
+ private HashMap undefinedRegistry = new HashMap();
private Vector schemaElementList = new Vector();
private String packageName = "";
@@ -94,23 +96,99 @@
* Creation date: (6/22/00 10:08:16 AM)
*/
public Schema2JROM(String schemaURI) {
- registry.put(new QName(schemaURI, "string"),
"com.ibm.jrom.JROMStringValue");
- registry.put(new QName(schemaURI, "float"), "com.ibm.jrom.JROMFloatValue");
- registry.put(new QName(schemaURI, "double"),
"com.ibm.jrom.JROMDoubleValue");
- registry.put(new QName(schemaURI, "integer"),
"com.ibm.jrom.JROMIntegerValue");
- registry.put(new QName(schemaURI, "int"), "com.ibm.jrom.JROMIntegerValue");
- registry.put(new QName(schemaURI, "boolean"),
"com.ibm.jrom.JROMBooleanValue");
- registry.put(new QName(schemaURI, "byte"), "com.ibm.jrom.JROMByteValue");
- registry.put(new QName(schemaURI, "short"), "com.ibm.jrom.JROMShortValue");
- registry.put(new QName(schemaURI, "long"), "com.ibm.jrom.JROMLongValue");
- registry.put(new QName(schemaURI, "decimal"),
"com.ibm.jrom.JROMDecimalValue");
- registry.put(new QName(schemaURI, "QName"), "com.ibm.jrom.JROMQNameValue");
- registry.put(new QName(schemaURI, "date"), "com.ibm.jrom.JROMDateValue");
+ registry.put(
+ new QName(schemaURI, "string"),
+ "com.ibm.jrom.JROMStringValue");
+ registry.put(
+ new QName(schemaURI, "float"),
+ "com.ibm.jrom.JROMFloatValue");
+ registry.put(
+ new QName(schemaURI, "double"),
+ "com.ibm.jrom.JROMDoubleValue");
+ registry.put(
+ new QName(schemaURI, "integer"),
+ "com.ibm.jrom.JROMIntegerValue");
+ registry.put(
+ new QName(schemaURI, "int"),
+ "com.ibm.jrom.JROMIntegerValue");
+ registry.put(
+ new QName(schemaURI, "boolean"),
+ "com.ibm.jrom.JROMBooleanValue");
+ registry.put(
+ new QName(schemaURI, "byte"),
+ "com.ibm.jrom.JROMByteValue");
+ registry.put(
+ new QName(schemaURI, "short"),
+ "com.ibm.jrom.JROMShortValue");
+ registry.put(
+ new QName(schemaURI, "long"),
+ "com.ibm.jrom.JROMLongValue");
+ registry.put(
+ new QName(schemaURI, "decimal"),
+ "com.ibm.jrom.JROMDecimalValue");
+ registry.put(
+ new QName(schemaURI, "QName"),
+ "com.ibm.jrom.JROMQNameValue");
+ registry.put(
+ new QName(schemaURI, "date"),
+ "com.ibm.jrom.JROMDateValue");
+ // Register dateTime or timeInstant depending on schema
+ if (schemaURI.equals(Constants.NS_URI_2001_SCHEMA_XSD)) {
+ registry.put(
+ new QName(schemaURI, "dateTime"),
+ "com.ibm.jrom.JROMTimeValue");
+ } else {
+ registry.put(
+ new QName(schemaURI, "timeInstant"),
+ "com.ibm.jrom.JROMTimeValue");
+ }
+
+ // SOAP encoding simple types
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "string"),
+ "com.ibm.jrom.JROMStringValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "float"),
+ "com.ibm.jrom.JROMFloatValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "double"),
+ "com.ibm.jrom.JROMDoubleValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "integer"),
+ "com.ibm.jrom.JROMIntegerValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "int"),
+ "com.ibm.jrom.JROMIntegerValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "boolean"),
+ "com.ibm.jrom.JROMBooleanValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "byte"),
+ "com.ibm.jrom.JROMByteValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "short"),
+ "com.ibm.jrom.JROMShortValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "long"),
+ "com.ibm.jrom.JROMLongValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "decimal"),
+ "com.ibm.jrom.JROMDecimalValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "QName"),
+ "com.ibm.jrom.JROMQNameValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "date"),
+ "com.ibm.jrom.JROMDateValue");
// Register dateTime or timeInstant depending on schema
if (schemaURI.equals(Constants.NS_URI_2001_SCHEMA_XSD)) {
- registry.put(new QName(schemaURI, "dateTime"),
"com.ibm.jrom.JROMTimeValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "dateTime"),
+ "com.ibm.jrom.JROMTimeValue");
} else {
- registry.put(new QName(schemaURI, "timeInstant"),
"com.ibm.jrom.JROMTimeValue");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "timeInstant"),
+ "com.ibm.jrom.JROMTimeValue");
}
//Mapping for SOAP array types.
@@ -120,16 +198,16 @@
}
/**
- * This method takes inputs of an Schema Element, a Hashtable and returns the
same Hashtable filled with
+ * This method takes inputs of an Schema Element, a HashMap and returns the
same HashMap filled with
* the mappings from schema QNames to JROM class names.
* Repeatedly call this method on the same object will have cumulative effect.
That is, the registry
* returned will have all the mappings for every DOM elements processed.
*
- * @return java.util.Hashtable
+ * @return java.util.HashMap
* @param root org.w3c.dom.Element
- * @param registry java.util.Hashtable
+ * @param registry java.util.HashMap
*/
- public Hashtable createJROMMapping(Element root, Hashtable reg)
+ public Map createJROMMapping(Element root, Map reg)
throws SchemaException {
if (root == null || reg == null)
throw new IllegalArgumentException(
@@ -189,7 +267,9 @@
if (namespaceURI == null)
throw new IllegalArgumentException(
- "Argument to " + "'getNamespaceURIMapping' " + "cannot be null.");
+ "Argument to "
+ + "'getNamespaceURIMapping' "
+ + "cannot be null.");
if (namespaceURI.compareTo("") == 0)
return "";
@@ -208,16 +288,16 @@
return javaPath;
}
-
+
/**
* Insert the method's description here.
* Creation date: (7/2/00 4:06:35 PM)
- * @return java.util.Hashtable
- * @param reg java.util.Hashtable
+ * @return java.util.HashMap
+ * @param reg java.util.HashMap
*/
- public Hashtable getRegistry(Hashtable reg) {
- for (Enumeration e = registry.keys(); e.hasMoreElements();) {
- QName key = (QName) e.nextElement();
+ public Map getRegistry(Map reg) {
+ for (Iterator it = registry.keySet().iterator(); it.hasNext();) {
+ QName key = (QName) it.next();
reg.put(key, new TypeMapping(key, (String) registry.get(key)));
}
return reg;
@@ -257,11 +337,23 @@
QName base = null;
Vector children = parseSchemaRoot(element, targetURI);
elements.addElement(
- new SchemaComplexType(name, base, isAbstract, isFinal,
children, targetURI));
+ new SchemaComplexType(
+ name,
+ base,
+ isAbstract,
+ isFinal,
+ children,
+ targetURI));
} else if (elementType.equals("element")) {
QName ref = null;
elements.addElement(
- new SchemaElement(name, ref, type, isArray, null,
targetURI));
+ new SchemaElement(
+ name,
+ ref,
+ type,
+ isArray,
+ null,
+ targetURI));
} else {
// Ignore any other element types and continue parsing the tree
below
return parseSchemaRoot(element, targetURI);
@@ -284,7 +376,9 @@
if (namespaceURI == null || javaPath == null)
throw new IllegalArgumentException(
- "Argument to " + "'setNamespaceURIMapping' " + "cannot be null.");
+ "Argument to "
+ + "'setNamespaceURIMapping' "
+ + "cannot be null.");
namespaceRegistry.put(namespaceURI, javaPath);
}
@@ -302,8 +396,8 @@
* schema element list.
*
* Creation date: (6/22/00 10:15:25 AM)
- * @return java.util.Hashtable
- * @param registry java.util.Hashtable
+ * @return java.util.HashMap
+ * @param registry java.util.HashMap
* @param elements java.util.Vector
*/
private void updateRegistry(Vector elements) throws SchemaException {
@@ -312,7 +406,7 @@
throw new IllegalArgumentException(
"Argument to 'updateRegistry' " + "cannot be null.");
- Hashtable simpleTypeTable = new Hashtable();
+ HashMap simpleTypeTable = new HashMap();
for (int i = 0; i < elements.size(); i++) {
SchemaType element = (SchemaType) elements.elementAt(i);
@@ -330,10 +424,13 @@
while (changed) {
changed = false;
- for (Enumeration e = simpleTypeTable.keys(); e.hasMoreElements();) {
- QName qName = (QName) e.nextElement();
+ for (Iterator it = simpleTypeTable.keySet().iterator();
+ it.hasNext();
+ ) {
+ QName qName = (QName) it.next();
- SchemaSimpleType simpleType = (SchemaSimpleType)
simpleTypeTable.get(qName);
+ SchemaSimpleType simpleType =
+ (SchemaSimpleType) simpleTypeTable.get(qName);
QName base = simpleType.getBase();
boolean isList = simpleType.isList();
@@ -356,8 +453,8 @@
}
}
- for (Enumeration e = simpleTypeTable.keys(); e.hasMoreElements();) {
- if (!registry.contains((QName) e.nextElement()))
+ for (Iterator it2 = simpleTypeTable.keySet().iterator(); it2.hasNext();) {
+ if (!registry.containsKey((QName) it2.next()))
throw new SchemaException(
"'simpleType' definitions have cyclic " + "dependency.");
}
@@ -407,15 +504,19 @@
registry.put(qName, javaType);
} else if (child != null) {
if (child.getElementType() == SchemaType.SIMPLETYPE) {
- QName base = (QName) ((SchemaSimpleType)
child).getBase();
+ QName base =
+ (QName) ((SchemaSimpleType) child).getBase();
String javaType = (String) registry.get(base);
if (javaType != null) {
if (((SchemaSimpleType) child).isList())
javaType = javaType + "[]";
registry.put(qName, javaType);
}
- } else if (child.getElementType() ==
SchemaType.COMPLEXTYPE) {
- registry.put(qName, "com.ibm.jrom.JROMComplexValue");
+ } else if (
+ child.getElementType() == SchemaType.COMPLEXTYPE) {
+ registry.put(
+ qName,
+ "com.ibm.jrom.JROMComplexValue");
}
}
break;
1.2 +210 -82
xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2Java.java
Index: Schema2Java.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2Java.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Schema2Java.java 6 Jun 2002 08:28:49 -0000 1.1
+++ Schema2Java.java 14 Jun 2002 12:17:36 -0000 1.2
@@ -63,10 +63,14 @@
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
import java.util.Vector;
import javax.wsdl.QName;
+
+import org.apache.soap.Constants;
import org.apache.soap.util.xml.DOMUtils;
import org.apache.wsif.compiler.schema.SchemaException;
import org.apache.wsif.compiler.util.StreamFactory;
@@ -81,11 +85,11 @@
*/
public class Schema2Java {
- private Hashtable registry = new Hashtable();
+ private HashMap registry = new HashMap();
private String workingDirectory = System.getProperty("user.dir");
- private Hashtable namespaceRegistry = new Hashtable();
+ private HashMap namespaceRegistry = new HashMap();
- private Hashtable undefinedRegistry = new Hashtable();
+ private HashMap undefinedRegistry = new HashMap();
private Vector schemaElementList = new Vector();
private String packageName = "";
@@ -110,6 +114,28 @@
registry.put(new QName(schemaURI, "byte"), "byte");
registry.put(new QName(schemaURI, "void"), "void");
registry.put(new QName(schemaURI, "ur-type"), "java.lang.Object");
+
+ // SOAP encoding simple types
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "string"),
+ "java.lang.String");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "integer"),
+ "java.lang.Integer");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "boolean"),
+ "boolean");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "float"), "float");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "double"), "double");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "binary"), "byte[]");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "long"), "long");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "int"), "int");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "short"), "short");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "byte"), "byte");
+ registry.put(new QName(Constants.NS_URI_SOAP_ENC, "void"), "void");
+ registry.put(
+ new QName(Constants.NS_URI_SOAP_ENC, "ur-type"),
+ "java.lang.Object");
}
/**
@@ -133,7 +159,7 @@
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/24/00 3:07:11 PM)
@@ -156,7 +182,7 @@
false));
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 11:48:17 AM)
@@ -181,29 +207,36 @@
field =
new ClassField(
getJavaType(ref, targetURI, "attribute"),
- Conventions.schema2JavaName("attribute", ref.getLocalPart(),
false),
+ Conventions.schema2JavaName(
+ "attribute",
+ ref.getLocalPart(),
+ false),
false);
file.addField(field);
} else if (type != null) {
field =
new ClassField(
getJavaType(type, targetURI, "simpleType"),
- Conventions.schema2JavaName("attribute", attr.getName(), false),
+ Conventions.schema2JavaName(
+ "attribute",
+ attr.getName(),
+ false),
false);
file.addField(field);
} else if (simp != null) {
- String name = Conventions.schema2JavaName("attribute", attr.getName(),
false);
+ String name =
+ Conventions.schema2JavaName("attribute", attr.getName(), false);
file = simpleType2Field(name, false, simp, file);
}
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 10:01:42 AM)
* @return org.apache.wsif.compiler.schema.tools.ClassFile
- * @param registry java.util.Hashtable
+ * @param registry java.util.HashMap
* @param elm org.apache.wsif.compiler.schema.tools.SchemaComplexType
* @param targetURI java.lang.String
*/
@@ -215,7 +248,10 @@
"Argument to 'attributeGroup2Class' " + "cannot be null.");
String className =
- Conventions.schema2JavaName("attributeGroup", attrGp.getName(), true);
+ Conventions.schema2JavaName(
+ "attributeGroup",
+ attrGp.getName(),
+ true);
ClassFile file = new ClassFile(className);
Vector children = attrGp.getChildren();
@@ -223,7 +259,10 @@
SchemaType child = (SchemaType) children.elementAt(i);
switch (child.getElementType()) {
case SchemaType.ATTRIBUTEGROUP :
- file = attributeGroup2Field((SchemaAttributeGroup) child, file);
+ file =
+ attributeGroup2Field(
+ (SchemaAttributeGroup) child,
+ file);
break;
case SchemaType.ATTRIBUTE :
file = attribute2Field((SchemaAttribute) child, file);
@@ -234,7 +273,7 @@
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 11:31:18 AM)
@@ -257,7 +296,10 @@
field =
new ClassField(
getJavaType(ref, attrGp.getTargetURI(), "attributeGroup"),
- Conventions.schema2JavaName("attributeGroup",
ref.getLocalPart(), false),
+ Conventions.schema2JavaName(
+ "attributeGroup",
+ ref.getLocalPart(),
+ false),
false);
else {
throw new SchemaException(
@@ -268,15 +310,17 @@
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 10:01:42 AM)
* @return org.apache.wsif.compiler.schema.tools.ClassFile
- * @param registry java.util.Hashtable
+ * @param registry java.util.HashMap
* @param elm org.apache.wsif.compiler.schema.tools.SchemaComplexType
*/
- private ClassFile complexType2Class(String className, SchemaComplexType elm)
+ private ClassFile complexType2Class(
+ String className,
+ SchemaComplexType elm)
throws SchemaException {
if (className == null || elm == null)
@@ -287,7 +331,8 @@
ClassFile file = new ClassFile(className);
if (base != null)
- file.superClassName = getJavaType(base, elm.getTargetURI(),
"complexType");
+ file.superClassName =
+ getJavaType(base, elm.getTargetURI(), "complexType");
// This just covers the case when the base is a undefined complexType.
// If it is a undefined simpleType, there is nothing we can do anyway.
@@ -306,7 +351,10 @@
file = attribute2Field((SchemaAttribute) child, file);
break;
case SchemaType.ATTRIBUTEGROUP :
- file = attributeGroup2Field((SchemaAttributeGroup) child, file);
+ file =
+ attributeGroup2Field(
+ (SchemaAttributeGroup) child,
+ file);
break;
case SchemaType.ANY :
file = any2Field((SchemaAny) child, file);
@@ -324,9 +372,9 @@
return file;
}
-
+
/**
- * This method takes inputs of an Schema Element, a Hashtable and returns the
same Hashtable filled with
+ * This method takes inputs of an Schema Element, a HashMap and returns the
same HashMap filled with
* the mappings from schema QNames to Java class names or primitive types.
* Repeatedly call this method on the same object will have cumulative effect.
That is, the registry
* returned will have all the mappings for every DOM elements processed.
@@ -335,11 +383,11 @@
* have been processed.
*
* Creation date: (6/22/00 6:04:35 PM)
- * @return java.util.Hashtable
+ * @return java.util.HashMap
* @param root org.w3c.dom.Element
- * @param registry java.util.Hashtable
+ * @param registry java.util.HashMap
*/
- public Hashtable createJavaMapping(Element root, Hashtable reg)
+ public Map createJavaMapping(Element root, Map reg)
throws SchemaException {
if (root == null || reg == null)
@@ -360,7 +408,7 @@
return getRegistry(reg);
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 6:09:47 PM)
@@ -389,7 +437,10 @@
file.addField(
new ClassField(
javaType,
- Conventions.schema2JavaName("element", ref.getLocalPart(),
false),
+ Conventions.schema2JavaName(
+ "element",
+ ref.getLocalPart(),
+ false),
elm.isArray()));
} else if (type != null) {
// I just guess arbitrarily that the type attribute refers to a
complexType and
@@ -402,7 +453,12 @@
throw new SchemaException(
"The type of this element is unknown: '" + name + "'.");
} else if (child.getElementType() == SchemaType.SIMPLETYPE) {
- file = simpleType2Field(name, elm.isArray(), (SchemaSimpleType) child,
file);
+ file =
+ simpleType2Field(
+ name,
+ elm.isArray(),
+ (SchemaSimpleType) child,
+ file);
} else if (child.getElementType() == SchemaType.COMPLEXTYPE) {
throw new SchemaException(
"Inner complex-types are not supported: '" + name + "'.");
@@ -414,7 +470,7 @@
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/22/00 12:07:49 AM)
@@ -445,7 +501,7 @@
return new QName(uri, name);
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/22/00 4:56:42 PM)
@@ -484,15 +540,18 @@
return javaName;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 9:42:50 AM)
* @return java.lang.String
- * @param Registry java.util.Hashtable
+ * @param Registry java.util.HashMap
* @param name org.apache.soap.util.xml.QName
*/
- private String getJavaType(QName name, String targetURI, String elementType)
+ private String getJavaType(
+ QName name,
+ String targetURI,
+ String elementType)
throws SchemaException {
if (name == null)
@@ -502,14 +561,16 @@
String type = (String) registry.get(name);
if (type == null) {
- throw new SchemaException("Basic type '" + name + "' not supported.");
+ throw new SchemaException(
+ "Basic type '" + name + "' not supported.");
// type = getGenericJavaName (name, elementType);
}
String targetNS = getNamespaceURIMapping(targetURI);
- if (type.startsWith(targetNS) /* || type.startsWith (baseTypeDefinitionNS)*/
+ if (type.startsWith(targetNS)
+ /* || type.startsWith (baseTypeDefinitionNS)*/
)
type = type.substring(type.lastIndexOf(".") + 1);
@@ -534,7 +595,9 @@
if (namespaceURI == null)
throw new IllegalArgumentException(
- "Argument to " + "'getNamespaceURIMapping' " + "cannot be null.");
+ "Argument to "
+ + "'getNamespaceURIMapping' "
+ + "cannot be null.");
if (namespaceURI.compareTo("") == 0)
return "";
@@ -553,17 +616,17 @@
return javaPath;
}
-
+
/**
* Insert the method's description here.
* Creation date: (7/2/00 4:06:35 PM)
- * @return java.util.Hashtable
- * @param reg java.util.Hashtable
+ * @return java.util.HashMap
+ * @param reg java.util.HashMap
*/
- public Hashtable getRegistry(Hashtable reg) {
+ public Map getRegistry(Map reg) {
- for (Enumeration e = registry.keys(); e.hasMoreElements();) {
- QName key = (QName) e.nextElement();
+ for (Iterator i = registry.keySet().iterator(); i.hasNext();) {
+ QName key = (QName) i.next();
reg.put(key, new TypeMapping(key, (String) registry.get(key)));
}
return reg;
@@ -577,13 +640,14 @@
"Argument to 'group2Class' " + "cannot be null.");
SchemaMGS child = gp.getChild();
- String className = Conventions.schema2JavaName("group", gp.getName(), true);
+ String className =
+ Conventions.schema2JavaName("group", gp.getName(), true);
ClassFile file = new ClassFile(className);
file = mgs2Field(child, file);
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/23/00 6:46:55 PM)
@@ -605,7 +669,10 @@
file.addField(
new ClassField(
javaType,
- Conventions.schema2JavaName("group", ref.getLocalPart(), false),
+ Conventions.schema2JavaName(
+ "group",
+ ref.getLocalPart(),
+ false),
gp.isArray()));
}
@@ -641,7 +708,7 @@
return file;
}
-
+
/**
* Insert the method's description here.
* Creation date: (6/24/00 2:24:48 PM)
@@ -698,7 +765,10 @@
case SchemaType.COMPLEXTYPE :
SchemaComplexType cmp = (SchemaComplexType) element;
String className =
- Conventions.schema2JavaName("complexType", cmp.getName(),
true);
+ Conventions.schema2JavaName(
+ "complexType",
+ cmp.getName(),
+ true);
file = complexType2Class(className, cmp);
break;
case SchemaType.GROUP :
@@ -710,14 +780,23 @@
case SchemaType.ELEMENT :
SchemaElement el = (SchemaElement) element;
SchemaType child = el.getChild();
- if (child != null && child.getElementType() ==
SchemaType.COMPLEXTYPE) {
- className = Conventions.schema2JavaName("element",
el.getName(), true);
- file = complexType2Class(className, (SchemaComplexType)
el.getChild());
+ if (child != null
+ && child.getElementType() == SchemaType.COMPLEXTYPE) {
+ className =
+ Conventions.schema2JavaName(
+ "element",
+ el.getName(),
+ true);
+ file =
+ complexType2Class(
+ className,
+ (SchemaComplexType) el.getChild());
}
break;
}
if (file != null) {
- file.packageName = getNamespaceURIMapping(element.getTargetURI());
+ file.packageName =
+ getNamespaceURIMapping(element.getTargetURI());
classFileList.addElement(file);
}
}
@@ -727,12 +806,18 @@
StreamFactory streamFactory = new StreamFactory();
for (int classIndex = 0; classIndex < classCount; classIndex++) {
- ClassFile classFile = (ClassFile) classFileList.elementAt(classIndex);
+ ClassFile classFile =
+ (ClassFile) classFileList.elementAt(classIndex);
String javaPathName =
- Conventions.getJavaPathName(workingDirectory,
classFile.packageName);
+ Conventions.getJavaPathName(
+ workingDirectory,
+ classFile.packageName);
String javaFileName = classFile.className + ".java";
OutputStream os =
- streamFactory.getOutputStream(javaPathName, javaFileName,
overwrite);
+ streamFactory.getOutputStream(
+ javaPathName,
+ javaFileName,
+ overwrite);
Writer classWriter = new OutputStreamWriter(os);
classWriter.write(
@@ -749,12 +834,14 @@
classWriter.flush();
classWriter.close();
- fileNames[classIndex] = new File(javaPathName,
javaFileName).getAbsolutePath();
+ fileNames[classIndex] =
+ new File(javaPathName, javaFileName).getAbsolutePath();
}
if (javac) {
for (int i = 0; i < classCount; i++) {
- if (Conventions.JDKcompile(fileNames[i], workingDirectory) &&
verbose) {
+ if (Conventions.JDKcompile(fileNames[i], workingDirectory)
+ && verbose) {
System.out.println("Compiled file '" + fileNames[i] + "'.");
}
}
@@ -795,11 +882,23 @@
QName base = null;
Vector children = parseSchemaRoot(element, targetURI);
elements.addElement(
- new SchemaComplexType(name, base, isAbstract, isFinal,
children, targetURI));
+ new SchemaComplexType(
+ name,
+ base,
+ isAbstract,
+ isFinal,
+ children,
+ targetURI));
} else if (elementType.equals("element")) {
QName ref = null;
elements.addElement(
- new SchemaElement(name, ref, type, isArray, null,
targetURI));
+ new SchemaElement(
+ name,
+ ref,
+ type,
+ isArray,
+ null,
+ targetURI));
} else {
// Ignore any other element types and continue parsing the tree
below
return parseSchemaRoot(element, targetURI);
@@ -820,7 +919,10 @@
* @param tab java.lang.String
* @exception java.io.IOException The exception description.
*/
- private void printJavaFile(Writer classWriter, ClassFile classFile, String tab)
+ private void printJavaFile(
+ Writer classWriter,
+ ClassFile classFile,
+ String tab)
throws java.io.IOException {
String className = classFile.className;
@@ -838,7 +940,8 @@
else if (classFile.isFinal)
classWriter.write("final");
if (superClassName != null)
- classWriter.write("class " + className + " extends " + superClassName +
"{\n");
+ classWriter.write(
+ "class " + className + " extends " + superClassName + "{\n");
else
classWriter.write("class " + className + "{\n");
@@ -892,11 +995,14 @@
classWriter.write("\n" + tab + "\tpublic ");
if (classField.isArray)
classWriter.write("[]");
- classWriter.write(classField.fieldType + " get" + propertyName + "()
{\n");
- classWriter.write(tab + "\t\treturn " + classField.fieldName + ";\n");
+ classWriter.write(
+ classField.fieldType + " get" + propertyName + "() {\n");
+ classWriter.write(
+ tab + "\t\treturn " + classField.fieldName + ";\n");
classWriter.write(tab + "\t}\n");
classWriter.write("\n" + tab + "\tpublic ");
- classWriter.write(" void set" + propertyName + "(" +
classField.fieldType);
+ classWriter.write(
+ " void set" + propertyName + "(" + classField.fieldType);
if (classField.isArray)
classWriter.write("[]");
classWriter.write(" " + classField.fieldName + ") {\n");
@@ -933,14 +1039,15 @@
for (int innerClassIndex = 0;
innerClassIndex < innerClassCount;
innerClassIndex++) {
- ClassFile innerClassFile = classFile.getInnerClass(innerClassIndex);
+ ClassFile innerClassFile =
+ classFile.getInnerClass(innerClassIndex);
printJavaFile(classWriter, innerClassFile, tab + "\t");
}
}
classWriter.write("\n" + tab + "}");
}
-
+
/**
* Set the mapping between namespace URI and the java package name used in the
generated class files.
* Creation date: (6/22/00 12:20:21 PM)
@@ -951,7 +1058,9 @@
if (namespaceURI == null || javaPath == null)
throw new IllegalArgumentException(
- "Argument to " + "'setNamespaceURIMapping' " + "cannot be null.");
+ "Argument to "
+ + "'setNamespaceURIMapping' "
+ + "cannot be null.");
namespaceRegistry.put(namespaceURI, javaPath);
}
@@ -961,7 +1070,8 @@
* Creation date: (5/30/00 9:17:36 PM)
* @param dir java.lang.String
*/
- public void setWorkingDirectory(String dir) throws IllegalArgumentException {
+ public void setWorkingDirectory(String dir)
+ throws IllegalArgumentException {
if (dir == null)
throw new IllegalArgumentException(
@@ -1017,14 +1127,14 @@
return file;
}
-
+
/**
* This method takes a list of schema elements, target uri and update the
registry content based on the
* schema element list.
*
* Creation date: (6/22/00 10:15:25 AM)
- * @return java.util.Hashtable
- * @param registry java.util.Hashtable
+ * @return java.util.HashMap
+ * @param registry java.util.HashMap
* @param elements java.util.Vector
*/
private void updateRegistry(Vector elements) throws SchemaException {
@@ -1033,7 +1143,7 @@
throw new IllegalArgumentException(
"Argument to 'updateRegistry' " + "cannot be null.");
- Hashtable simpleTypeTable = new Hashtable();
+ HashMap simpleTypeTable = new HashMap();
for (int i = 0; i < elements.size(); i++) {
SchemaType element = (SchemaType) elements.elementAt(i);
@@ -1051,10 +1161,13 @@
while (changed) {
changed = false;
- for (Enumeration e = simpleTypeTable.keys(); e.hasMoreElements();) {
- QName qName = (QName) e.nextElement();
+ for (Iterator it = simpleTypeTable.keySet().iterator();
+ it.hasNext();
+ ) {
+ QName qName = (QName) it.next();
- SchemaSimpleType simpleType = (SchemaSimpleType)
simpleTypeTable.get(qName);
+ SchemaSimpleType simpleType =
+ (SchemaSimpleType) simpleTypeTable.get(qName);
QName base = simpleType.getBase();
boolean isList = simpleType.isList();
@@ -1076,8 +1189,8 @@
}
}
- for (Enumeration e = simpleTypeTable.keys(); e.hasMoreElements();) {
- if (!registry.contains((QName) e.nextElement()))
+ for (Iterator it2 = simpleTypeTable.keySet().iterator(); it2.hasNext();) {
+ if (!registry.containsKey((QName) it2.next()))
throw new SchemaException(
"'simpleType' definitions have cyclic " + "dependency.");
}
@@ -1096,17 +1209,26 @@
case SchemaType.COMPLEXTYPE :
registry.put(
qName,
- targetNSPrefix + Conventions.schema2JavaName("complexType",
name, true));
+ targetNSPrefix
+ + Conventions.schema2JavaName(
+ "complexType",
+ name,
+ true));
break;
case SchemaType.GROUP :
registry.put(
qName,
- targetNSPrefix + Conventions.schema2JavaName("group", name,
true));
+ targetNSPrefix
+ + Conventions.schema2JavaName("group", name, true));
break;
case SchemaType.ATTRIBUTEGROUP :
registry.put(
qName,
- targetNSPrefix +
Conventions.schema2JavaName("attributeGroup", name, true));
+ targetNSPrefix
+ + Conventions.schema2JavaName(
+ "attributeGroup",
+ name,
+ true));
break;
}
}
@@ -1132,17 +1254,23 @@
registry.put(qName, javaType);
} else if (child != null) {
if (child.getElementType() == SchemaType.SIMPLETYPE) {
- QName base = (QName) ((SchemaSimpleType)
child).getBase();
+ QName base =
+ (QName) ((SchemaSimpleType) child).getBase();
String javaType = (String) registry.get(base);
if (javaType != null) {
if (((SchemaSimpleType) child).isList())
javaType = javaType + "[]";
registry.put(qName, javaType);
}
- } else if (child.getElementType() ==
SchemaType.COMPLEXTYPE) {
+ } else if (
+ child.getElementType() == SchemaType.COMPLEXTYPE) {
registry.put(
qName,
- targetNSPrefix +
Conventions.schema2JavaName("complexType", name, true));
+ targetNSPrefix
+ + Conventions.schema2JavaName(
+ "complexType",
+ name,
+ true));
}
}
break;
1.3 +7 -3 xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceImpl.java
Index: WSIFServiceImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSIFServiceImpl.java 12 Jun 2002 15:34:23 -0000 1.2
+++ WSIFServiceImpl.java 14 Jun 2002 12:17:37 -0000 1.3
@@ -1056,7 +1056,7 @@
* in the wsdl
*/
private Iterator getDefaultTypeMappings() {
- Hashtable typeReg = new Hashtable();
+ HashMap typeReg = new HashMap();
List typesElList = Utils.getAllTypesElements(def);
if (typesElList.size() > 0) {
String schemaURI1999 = Constants.NS_URI_1999_SCHEMA_XSD;
@@ -1110,9 +1110,13 @@
&& !namespaceURI.equals(Constants.NS_URI_1999_SCHEMA_XSD)
&& !namespaceURI.equals(Constants.NS_URI_2000_SCHEMA_XSD)
&& !namespaceURI.equals(Constants.NS_URI_2001_SCHEMA_XSD)
+ && !namespaceURI.equals(Constants.NS_URI_SOAP_ENC)
&& tm.javaType != null) {
- String className =
- Utils.getPackageName(tm.javaType) + "." +
Utils.getClassName(tm.javaType);
+ String packageName = Utils.getPackageName(tm.javaType);
+ if (packageName != null && !packageName.equals("")) {
+ packageName += ".";
+ }
+ String className = packageName +
Utils.getClassName(tm.javaType);
Class clazz = null;
try {
1.3 +3 -10
xml-axis-wsif/java/src/org/apache/wsif/base/WSIFDefaultOperation.java
Index: WSIFDefaultOperation.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/base/WSIFDefaultOperation.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSIFDefaultOperation.java 14 Jun 2002 10:17:41 -0000 1.2
+++ WSIFDefaultOperation.java 14 Jun 2002 12:17:37 -0000 1.3
@@ -58,21 +58,20 @@
package org.apache.wsif.base;
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import javax.wsdl.QName;
-import org.apache.soap.Constants;
import org.apache.wsif.WSIFCorrelationId;
import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFMessage;
import org.apache.wsif.WSIFOperation;
import org.apache.wsif.WSIFResponseHandler;
-import org.apache.wsif.compiler.schema.tools.Schema2Java;
import org.apache.wsif.compiler.util.TypeMapping;
import org.apache.wsif.logging.Tr;
+import org.apache.wsif.util.WSIFUtils;
import org.apache.wsif.wsdl.extensions.jms.JMSProperty;
import org.apache.wsif.wsdl.extensions.jms.JMSPropertyValue;
@@ -293,13 +292,7 @@
*/
protected HashMap makeSomeKindOfJmsMap(List list) throws WSIFException {
Tr.entry(this, list);
- Hashtable simpleTypeReg = new Hashtable();
- new Schema2Java(Constants.NS_URI_1999_SCHEMA_XSD).getRegistry(
- simpleTypeReg);
- new Schema2Java(Constants.NS_URI_2000_SCHEMA_XSD).getRegistry(
- simpleTypeReg);
- new Schema2Java(Constants.NS_URI_2001_SCHEMA_XSD).getRegistry(
- simpleTypeReg);
+ Map simpleTypeReg = WSIFUtils.getSimpleTypesMap();
HashMap props = new HashMap(list.size());
for (Iterator it = list.iterator(); it.hasNext();) {
Object ee = it.next();
1.3 +4 -0 xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceFactory.java
Index: WSIFServiceFactory.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSIFServiceFactory.java 12 Jun 2002 10:27:24 -0000 1.2
+++ WSIFServiceFactory.java 14 Jun 2002 12:17:37 -0000 1.3
@@ -63,6 +63,7 @@
import org.apache.wsif.base.WSIFServiceImpl;
import org.apache.wsif.logging.Tr;
+import org.apache.wsif.util.WSIFUtils;
/**
* Factory class to create WSIFService's.
@@ -84,6 +85,9 @@
Tr.entry(null);
WSIFServiceFactory wsf = new WSIFServiceFactory();
+
+ // Create the simple types map for use by other WSIF classes
+ WSIFUtils.createSimpleTypesMap();
Tr.exit(wsf);
return wsf;
1.5 +3 -6 xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java
Index: WSIFClientProxy.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- WSIFClientProxy.java 12 Jun 2002 10:27:24 -0000 1.4
+++ WSIFClientProxy.java 14 Jun 2002 12:17:37 -0000 1.5
@@ -60,7 +60,7 @@
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
-import java.util.Hashtable;
+import java.util.Map;
import java.util.Iterator;
import java.util.List;
@@ -95,7 +95,7 @@
protected String portTypeNS = null;
protected String portTypeName = null;
protected WSIFDynamicTypeMap typeMap = null;
- protected Hashtable simpleTypeReg = null;
+ protected Map simpleTypeReg = null;
protected PortType portType = null;
protected WSIFPort wsifport = null;
protected Object proxy = null;
@@ -186,10 +186,7 @@
this.typeMap = typeMap;
this.portType = WSIFUtils.selectPortType(def, portTypeNS, portTypeName);
- simpleTypeReg = new Hashtable();
- new
Schema2Java(Constants.NS_URI_1999_SCHEMA_XSD).getRegistry(simpleTypeReg);
- new
Schema2Java(Constants.NS_URI_2000_SCHEMA_XSD).getRegistry(simpleTypeReg);
- new
Schema2Java(Constants.NS_URI_2001_SCHEMA_XSD).getRegistry(simpleTypeReg);
+ simpleTypeReg = WSIFUtils.getSimpleTypesMap();
Tr.exit();
}
1.4 +33 -2 xml-axis-wsif/java/src/org/apache/wsif/util/WSIFUtils.java
Index: WSIFUtils.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/util/WSIFUtils.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- WSIFUtils.java 12 Jun 2002 16:42:19 -0000 1.3
+++ WSIFUtils.java 14 Jun 2002 12:17:37 -0000 1.4
@@ -88,10 +88,12 @@
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.wsdl.xml.WSDLWriter;
+
import org.apache.wsif.WSIFConstants;
import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFService;
import org.apache.wsif.base.WSIFServiceImpl;
+import org.apache.wsif.compiler.schema.tools.Schema2Java;
import org.apache.wsif.format.WSIFFormatHandler;
import org.apache.wsif.logging.MessageLogger;
import org.apache.wsif.logging.Tr;
@@ -126,6 +128,9 @@
private static final String lookupPrefix = "java:comp/env/";
private static final String emptyString = "";
+ private static Boolean providersInitialized = new Boolean(false);
+ private static Boolean simpleTypesMapCreated = new Boolean(false);
+ private static HashMap simpleTypesMap = new HashMap();
/**
* This checks whether JNDI classes are available at runtime.
@@ -755,8 +760,6 @@
return def;
}
- private static Boolean providersInitialized = new Boolean(false);
-
/**
* Initialize the WSIF providers. Each provider initializes its WSDL
* extension registries. This has no effect if AutoLoad providers has
@@ -770,6 +773,34 @@
providersInitialized = new Boolean(true);
}
}
+ }
+
+ /**
+ * Create a map of all schema simple types and there Java equivalents.
+ */
+ public static void createSimpleTypesMap() {
+ synchronized (simpleTypesMapCreated) {
+ if (!simpleTypesMapCreated.booleanValue()) {
+ new
Schema2Java(org.apache.soap.Constants.NS_URI_1999_SCHEMA_XSD).getRegistry(
+ simpleTypesMap);
+ new
Schema2Java(org.apache.soap.Constants.NS_URI_2000_SCHEMA_XSD).getRegistry(
+ simpleTypesMap);
+ new
Schema2Java(org.apache.soap.Constants.NS_URI_2001_SCHEMA_XSD).getRegistry(
+ simpleTypesMap);
+ simpleTypesMapCreated = new Boolean(true);
+ }
+ }
+ }
+
+ /**
+ * Get a map of all schema simple types and there Java equivalents.
+ * @return The map of simple types
+ */
+ public static Map getSimpleTypesMap() {
+ if (simpleTypesMap.size() == 0) {
+ createSimpleTypesMap();
+ }
+ return simpleTypesMap;
}
// the following code copied from JCAUtils