Author: dkulp
Date: Thu Apr  1 11:22:02 2010
New Revision: 929930

URL: http://svn.apache.org/viewvc?rev=929930&view=rev
Log:
Get xmlbeans databinding to support wsdl imports as well as xsd imports

Modified:
    
cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java

Modified: 
cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java?rev=929930&r1=929929&r2=929930&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java
 (original)
+++ 
cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java
 Thu Apr  1 11:22:02 2010
@@ -74,6 +74,7 @@ import org.apache.xmlbeans.impl.xb.subst
 import org.apache.xmlbeans.impl.xb.xmlconfig.ConfigDocument;
 import org.apache.xmlbeans.impl.xb.xmlconfig.Extensionconfig;
 import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument.Schema;
 
 /**
  * 
@@ -283,36 +284,9 @@ public class XMLBeansToolingDataBinding 
             options.setEntityResolver(entResolver);
             options.setGenerateJavaVersion(XmlOptions.GENERATE_JAVA_15);
 
-            
-
-            XmlObject urldoc = loader.parse(url, null, options);
             state.addSourceUri(wsdlFile, null);
+            loadWSDLDoc(loader, url, options, scontentlist, errorListener);
 
-            if (urldoc instanceof 
org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument) {
-                org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument 
wsdldoc = 
-                    
(org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument)urldoc;
-                
-                addWsdlSchemas(url.toString(),
-                               wsdldoc,
-                               errorListener, scontentlist);
-                
-                for (TImport imp : wsdldoc.getDefinitions().getImportArray()) {
-                    if (imp.getLocation().toLowerCase().endsWith(".xsd")) {
-                        URL url1 = new URL(url, imp.getLocation());
-                        XmlObject urldoc2 = loader.parse(url1, null, options);
-                        addSchema(url1.toString(), (SchemaDocument)urldoc2, 
errorListener, false,
-                                  scontentlist);
-                    }
-                }
-
-            } else if (urldoc instanceof SchemaDocument) {
-                addSchema(url.toString(), (SchemaDocument)urldoc, 
errorListener, false,
-                          scontentlist);
-            } else {
-                StscState.addError(errorListener, 
XmlErrorCodes.INVALID_DOCUMENT_TYPE, new Object[] {
-                    url, "wsdl or schema"
-                }, urldoc);
-            }
 
         } catch (XmlException e) {
             errorListener.add(e.getError());
@@ -414,7 +388,43 @@ public class XMLBeansToolingDataBinding 
     }
 
 
-    
+    private static void loadWSDLDoc(SchemaTypeLoader loader, URL url, 
+                                    XmlOptions options, 
+                                    List<Schema> scontentlist, 
+                                    XmlErrorWatcher errorListener)
+        throws XmlException, IOException {
+        XmlObject urldoc = loader.parse(url, null, options);
+
+        if (urldoc instanceof 
org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument) {
+            org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument wsdldoc 
= 
+                
(org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument)urldoc;
+            
+            addWsdlSchemas(url.toString(),
+                           wsdldoc,
+                           errorListener,
+                           scontentlist);
+            
+            for (TImport imp : wsdldoc.getDefinitions().getImportArray()) {
+                URL url1 = new URL(url, imp.getLocation());
+                if (imp.getLocation().toLowerCase().endsWith(".xsd")) {
+                    XmlObject urldoc2 = loader.parse(url1, null, options);
+                    addSchema(url1.toString(), (SchemaDocument)urldoc2, 
+                              errorListener, false,
+                              scontentlist);
+                } else {
+                    loadWSDLDoc(loader, url1, options, scontentlist, 
errorListener);
+                }
+            }
+
+        } else if (urldoc instanceof SchemaDocument) {
+            addSchema(url.toString(), (SchemaDocument)urldoc, errorListener, 
false,
+                      scontentlist);
+        } else {
+            StscState.addError(errorListener, 
XmlErrorCodes.INVALID_DOCUMENT_TYPE, new Object[] {
+                url, "wsdl or schema"
+            }, urldoc);
+        }        
+    }
   
 
     private static void addSchema(String name, SchemaDocument schemadoc, 
XmlErrorWatcher errorListener,


Reply via email to