You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2015/06/09 19:46:48 UTC

ode git commit: fixing ODE-1031, thanks to Igor Vorobiov for the patch.

Repository: ode
Updated Branches:
  refs/heads/ode-1.3.x f82281446 -> daa933610


fixing ODE-1031, thanks to Igor Vorobiov for the patch.


Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/daa93361
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/daa93361
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/daa93361

Branch: refs/heads/ode-1.3.x
Commit: daa933610f61ce53fa2a200b119ea4792055fa21
Parents: f822814
Author: Tammo van Lessen <tv...@gmail.com>
Authored: Tue Jun 9 19:46:41 2015 +0200
Committer: Tammo van Lessen <tv...@gmail.com>
Committed: Tue Jun 9 19:46:41 2015 +0200

----------------------------------------------------------------------
 .../apache/ode/bpel/compiler/WSDLRegistry.java  | 58 +++++++++++++++-----
 1 file changed, 45 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/daa93361/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/WSDLRegistry.java
----------------------------------------------------------------------
diff --git a/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/WSDLRegistry.java b/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/WSDLRegistry.java
index 319666d..6f0ae26 100644
--- a/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/WSDLRegistry.java
+++ b/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/WSDLRegistry.java
@@ -18,6 +18,28 @@
  */
 package org.apache.ode.bpel.compiler;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Import;
+import javax.wsdl.Message;
+import javax.wsdl.PortType;
+import javax.wsdl.Types;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamSource;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.compiler.api.CompilationException;
@@ -37,19 +59,6 @@ import org.apache.ode.utils.xsd.XsdException;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
-import javax.wsdl.*;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.xml.namespace.QName;
-import javax.xml.transform.Source;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamSource;
-
-import java.io.ByteArrayInputStream;
-import java.io.StringReader;
-import java.io.IOException;
-import java.net.URI;
-import java.util.*;
-
 
 /**
  * A parsed collection of WSDL definitions, including BPEL-specific extensions.
@@ -213,6 +222,8 @@ class WSDLRegistry {
         Types types = def.getTypes();
 
         if (types != null) {
+            addAllInternalSchemas(def);
+
             int localSchemaId = 0;
             for (Iterator<ExtensibilityElement> iter =
                     ((List<ExtensibilityElement>)def.getTypes().getExtensibilityElements()).iterator();
@@ -270,6 +281,27 @@ class WSDLRegistry {
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private void addAllInternalSchemas(Definition def) {
+        for (Iterator<ExtensibilityElement> iter = ((List<ExtensibilityElement>) def.getTypes().getExtensibilityElements()).iterator(); iter.hasNext();) {
+            ExtensibilityElement ee = iter.next();
+
+            if (ee instanceof XMLSchemaType) {
+                byte[] schema = ((XMLSchemaType) ee).getXMLSchema();
+                try {
+                    Document doc = DOMUtils.parse(new InputSource(new ByteArrayInputStream(schema)));
+                    String schemaTargetNS = doc.getDocumentElement().getAttribute("targetNamespace");
+                    if (schemaTargetNS != null && schemaTargetNS.length() > 0) {
+                        _internalSchemas.put(new URI(schemaTargetNS), schema);
+                        _documentSchemas.put(new URI(schemaTargetNS), doc);
+                    }
+                } catch (Exception e) {
+                    throw new RuntimeException("Couldn't parse schema in " + def.getTargetNamespace(), e);
+                }
+            }
+        }
+    }
+
     public org.apache.ode.bpel.compiler.bom.Property getProperty(QName name) {
         ArrayList<Definition4BPEL> defs = _definitions.get(name.getNamespaceURI());
         if (defs == null) return null;