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"));
+ }
+
+}