Author: vanto
Date: Sun Jan  9 18:47:42 2011
New Revision: 1056999

URL: http://svn.apache.org/viewvc?rev=1056999&view=rev
Log:
fixes ODE-904: document() in XSLT can now load remote URLs.

Added:
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/XslRuntimeUriResolver.java
      - copied, changed from r1056151, 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XslRuntimeUriResolver.java
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/URIResolverTest.java
Removed:
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XslRuntimeUriResolver.java
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XslRuntimeUriResolver.java
Modified:
    ode/branches/ode-1.3.5.x/Rakefile
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
    
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java

Modified: ode/branches/ode-1.3.5.x/Rakefile
URL: 
http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/Rakefile?rev=1056999&r1=1056998&r2=1056999&view=diff
==============================================================================
--- ode/branches/ode-1.3.5.x/Rakefile (original)
+++ ode/branches/ode-1.3.5.x/Rakefile Sun Jan  9 18:47:42 2011
@@ -220,7 +220,7 @@ define "ode" do
 
 
     test.with projects("scheduler-simple", "dao-jpa", "dao-hibernate", 
"bpel-epr"),
-        BACKPORT, COMMONS.pool, COMMONS.lang, DERBY, JAVAX.connector, 
JAVAX.transaction,
+        BACKPORT, COMMONS.pool, COMMONS.lang, COMMONS.io, DERBY, 
JAVAX.connector, JAVAX.transaction,
         GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, TRANQL, 
HSQLDB, JAVAX.ejb,
         OPENJPA, XERCES, XALAN, LOG4J, SLF4J,
         DOM4J, HIBERNATE,

Copied: 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/XslRuntimeUriResolver.java
 (from r1056151, 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XslRuntimeUriResolver.java)
URL: 
http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/XslRuntimeUriResolver.java?p2=ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/XslRuntimeUriResolver.java&p1=ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XslRuntimeUriResolver.java&r1=1056151&r2=1056999&rev=1056999&view=diff
==============================================================================
--- 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XslRuntimeUriResolver.java
 (original)
+++ 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/XslRuntimeUriResolver.java
 Sun Jan  9 18:47:42 2011
@@ -17,27 +17,25 @@
  * under the License.
  */
 
-package org.apache.ode.bpel.elang.xpath20.runtime;
+package org.apache.ode.bpel.elang;
 
-import org.apache.ode.bpel.compiler.api.CompilationException;
-import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
-import org.apache.ode.bpel.o.OXslSheet;
-import org.apache.ode.utils.StreamUtils;
-import org.apache.ode.utils.fs.FileUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
 
-import javax.xml.transform.URIResolver;
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
 import javax.xml.transform.stream.StreamSource;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
+import org.apache.ode.bpel.o.OXslSheet;
+import org.apache.ode.utils.StreamUtils;
+import org.apache.ode.utils.fs.FileUtils;
 
 /**
  * Used to give the Xsl processor a way to access included XSL sheets
@@ -88,15 +86,18 @@ public class XslRuntimeUriResolver imple
      * @return String - the resource contents, or null if none found.
      */
     private String getResourceAsString(URI docUri) {
-        URI resolvedURI= _baseResourceURI.resolve(docUri);
+        URI resolvedURI = _baseResourceURI.resolve(docUri);
         InputStream is = null;
+        
         try {
-            File f = new File(resolvedURI);
-            if (!f.exists()) return null;
-            is = new FileInputStream(f);
+            // treat URI as URL and try to load it.
+            URL url = resolvedURI.toURL();
+            is = url.openStream();
+
+            // and read it to a buffer.
             return new String(StreamUtils.read(is));
-        } catch (IOException e) {
-            __log.info("Couldn't load XSL resource " + docUri);
+        } catch (Exception e) {
+            __log.warn("Couldn't load XSL resource " + docUri, e);
         } finally {
             try {
                 if (is != null) is.close();
@@ -107,6 +108,4 @@ public class XslRuntimeUriResolver imple
         return null;
     }
 
-
-
 }

Modified: 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
URL: 
http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java?rev=1056999&r1=1056998&r2=1056999&view=diff
==============================================================================
--- 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
 (original)
+++ 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
 Sun Jan  9 18:47:42 2011
@@ -18,9 +18,21 @@
  */
 package org.apache.ode.bpel.elang.xpath10.runtime;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.dom.DOMSource;
+
+import net.sf.saxon.dom.NodeWrapper;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
+import org.apache.ode.bpel.elang.XslRuntimeUriResolver;
 import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
 import org.apache.ode.bpel.elang.xpath10.o.OXPath10ExpressionBPEL20;
 import org.apache.ode.bpel.explang.EvaluationContext;
@@ -33,7 +45,6 @@ import org.apache.ode.bpel.o.OVarType;
 import org.apache.ode.bpel.o.OXsdTypeVarType;
 import org.apache.ode.bpel.o.OXslSheet;
 import org.apache.ode.utils.DOMUtils;
-import org.apache.ode.utils.xsd.XSTypes;
 import org.apache.ode.utils.xsl.XslTransformHandler;
 import org.jaxen.Context;
 import org.jaxen.Function;
@@ -42,21 +53,9 @@ import org.jaxen.FunctionContext;
 import org.jaxen.UnresolvableException;
 import org.jaxen.VariableContext;
 import org.jaxen.XPathFunctionContext;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.dom.DOMSource;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import net.sf.saxon.dom.NodeWrapper;
 
 
 /**

Modified: 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
URL: 
http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java?rev=1056999&r1=1056998&r2=1056999&view=diff
==============================================================================
--- 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
 (original)
+++ 
ode/branches/ode-1.3.5.x/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
 Sun Jan  9 18:47:42 2011
@@ -46,6 +46,7 @@ import org.apache.commons.httpclient.URI
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
+import org.apache.ode.bpel.elang.XslRuntimeUriResolver;
 import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
 import org.apache.ode.bpel.elang.xpath10.o.OXPath10ExpressionBPEL20;
 import org.apache.ode.bpel.elang.xpath20.compiler.Constants;

Added: 
ode/branches/ode-1.3.5.x/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/URIResolverTest.java
URL: 
http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/URIResolverTest.java?rev=1056999&view=auto
==============================================================================
--- 
ode/branches/ode-1.3.5.x/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/URIResolverTest.java
 (added)
+++ 
ode/branches/ode-1.3.5.x/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/URIResolverTest.java
 Sun Jan  9 18:47:42 2011
@@ -0,0 +1,48 @@
+package org.apache.ode.bpel.elang;
+
+import java.net.URI;
+
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.internal.matchers.StringContains.containsString;
+
+public class URIResolverTest {
+
+    @Test
+    public void testResolveExistingFile() throws Exception {
+        OXPath10Expression expr = new OXPath10Expression(null, null, null, 
null);
+        URI baseResourceURI = getClass().getResource("/xpath20/").toURI();
+        XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(expr, 
baseResourceURI);
+        StreamSource ss = (StreamSource)resolver.resolve("variables.xml", 
null);
+        String result = IOUtils.toString(ss.getReader());
+        
+        assertThat(result, containsString("<variables>"));
+    }
+
+    @Test
+    public void testResolveNonExistingFile() throws Exception {
+        OXPath10Expression expr = new OXPath10Expression(null, null, null, 
null);
+        URI baseResourceURI = getClass().getResource("/xpath20/").toURI();
+        XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(expr, 
baseResourceURI);
+
+        assertNull(resolver.resolve("variablesa.xml", null));
+    }
+
+    @Test
+    @Ignore("automated tests should not rely on remote connections.")
+    public void testResolveURL() throws Exception {
+        OXPath10Expression expr = new OXPath10Expression(null, null, null, 
null);
+        URI baseResourceURI = getClass().getResource("/xpath20/").toURI();
+        XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(expr, 
baseResourceURI);
+        StreamSource ss = 
(StreamSource)resolver.resolve("http://ode.apache.org/";, null);
+        String result = IOUtils.toString(ss.getReader());
+        
+        assertThat(result, containsString("Orchestration Director Engine"));
+    }
+
+}


Reply via email to