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 aj...@apache.org on 2006/04/21 19:32:21 UTC
svn commit: r395956 -
/webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
Author: ajith
Date: Fri Apr 21 10:32:20 2006
New Revision: 395956
URL: http://svn.apache.org/viewcvs?rev=395956&view=rev
Log:
Fixing XMLBeans mutual recursion problem
Modified:
webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
Modified: webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java?rev=395956&r1=395955&r2=395956&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java (original)
+++ webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java Fri Apr 21 10:32:20 2006
@@ -51,6 +51,8 @@
import org.w3c.dom.Document;
import com.ibm.wsdl.util.xml.DOM2Writer;
+import javax.xml.namespace.QName;
+
/**
* Framework-linked code used by XMLBeans data binding support. This is accessed
* via reflection from the XMLBeans code generation extension when XMLBeans data
@@ -204,6 +206,11 @@
return base64ElementQNamesList;
}
+ /**
+ *
+ * @param sts
+ * @return
+ */
private static List findPlainBase64Types(SchemaTypeSystem sts) {
ArrayList allSeenTypes = new ArrayList();
@@ -214,28 +221,42 @@
for (Iterator iterator = allSeenTypes.iterator(); iterator.hasNext();) {
SchemaType stype = (SchemaType) iterator.next();
- findPlainBase64Types(stype, base64Types);
+ findPlainBase64Types(stype, base64Types,new ArrayList());
}
return base64Types;
}
- private static void findPlainBase64Types(SchemaType stype, ArrayList base64Types) {
+ /**
+ *
+ * @param stype
+ * @param base64Types
+ */
+ private static void findPlainBase64Types(SchemaType stype,
+ ArrayList base64Types,
+ ArrayList processedTypes) {
SchemaProperty[] elementProperties = stype.getElementProperties();
-
+ QName name;
+ SchemaType schemaType;
for (int i = 0; i < elementProperties.length; i++) {
- SchemaType schemaType = elementProperties[i].getType();
- if (schemaType.isPrimitiveType()) {
- SchemaType primitiveType = schemaType.getPrimitiveType();
- if (Constants.BASE_64_CONTENT_QNAME.equals(primitiveType.getName())) {
- //todo fix the recursive problem here
- base64Types.add(elementProperties[i].getName());
+ schemaType = elementProperties[i].getType();
+ name = elementProperties[i].getName();
+ if (!base64Types.contains(name) && !processedTypes.contains(schemaType.getName())){
+ processedTypes.add(stype.getName());
+ if (schemaType.isPrimitiveType()) {
+ SchemaType primitiveType = schemaType.getPrimitiveType();
+ if (Constants.BASE_64_CONTENT_QNAME.equals(primitiveType.getName())) {
+ base64Types.add(name);
+ }
+
+ } else {
+ findPlainBase64Types(schemaType, base64Types,processedTypes);
}
- } else {
- findPlainBase64Types(schemaType, base64Types);
}
}
+
+
}
private static XmlObject[] convertToXMLObjectArray(Vector vec) {