Author: karthick
Date: Thu Dec 11 14:07:21 2008
New Revision: 725835
URL: http://svn.apache.org/viewvc?rev=725835&view=rev
Log:
Cache XSLT Style Sheets By Bundle (ODE-439)
Modified:
ode/trunk/Buildfile
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ResourceFinder.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/BpelCompilerImpl.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/CompilerContext.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath10/JaxenBpelHandler.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/JaxpFunctionResolver.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/CompilerContext.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath10/JaxenBpelHandler.java
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/JaxpFunctionResolver.java
ode/trunk/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler/XPathTest.java
ode/trunk/engine/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/JaxenContexts.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpFunctionResolver.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpFunctionResolver.java
ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
Modified: ode/trunk/Buildfile
URL:
http://svn.apache.org/viewvc/ode/trunk/Buildfile?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
--- ode/trunk/Buildfile (original)
+++ ode/trunk/Buildfile Thu Dec 11 14:07:21 2008
@@ -361,7 +361,7 @@
desc "ODE BPEL Compiler"
define "bpel-compiler" do
compile.with projects("bpel-api", "runtimes", "bpel-schemas", "utils"),
- COMMONS.logging, JAVAX.stream, JAXEN, SAXON, WSDL4J, XALAN, XERCES
+ COMMONS.logging, COMMONS.collections, JAVAX.stream, JAXEN, SAXON,
WSDL4J, XALAN, XERCES
test.resources {
filter(project("bpel-scripts").path_to("src/main/resources")).into(test.resources.target).run
}
package :jar
end
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
Thu Dec 11 14:07:21 2008
@@ -29,5 +29,11 @@
void addWsdlImport(URI from, URI wsdlImport, SourceLocation sloc);
ProcessModel compile(Process p, ResourceFinder rf);
-
+
+ /**
+ * Retrieves the base URI that the BPEL Process execution context is
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ */
+ public URI getBaseResourceURI();
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java
Thu Dec 11 14:07:21 2008
@@ -103,4 +103,7 @@
return new FileInputStream(f);
}
+ public URI getBaseResourceURI() {
+ return _absoluteDir.toURI();
+ }
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ResourceFinder.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ResourceFinder.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ResourceFinder.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ResourceFinder.java
Thu Dec 11 14:07:21 2008
@@ -38,6 +38,14 @@
* @throws IOException in case of read error
*/
InputStream openResource(URI uri) throws MalformedURLException,
IOException;
+
+
+ /**
+ * Retrieves the base URI that the BPEL Process execution context is
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ */
+ public URI getBaseResourceURI();
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/BpelCompilerImpl.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/BpelCompilerImpl.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/BpelCompilerImpl.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/BpelCompilerImpl.java
Thu Dec 11 14:07:21 2008
@@ -1749,4 +1749,17 @@
public void setExtensionValidators(Map<QName, ExtensionValidator>
validators) {
}
+
+
+ /**
+ * Retrieves the base URI that the BPEL Process execution contextis
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ * @throws IOException
+ * @throws MalformedURLException
+ */
+ public URI getBaseResourceURI() {
+ return _resourceFinder.getBaseResourceURI();
+ }
+
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/CompilerContext.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/CompilerContext.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/CompilerContext.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/CompilerContext.java
Thu Dec 11 14:07:21 2008
@@ -140,4 +140,10 @@
Map<URI, Source> getSchemaSources();
+ /**
+ * Retrieves the base URI that the BPEL Process execution contextis
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ */
+ URI getBaseResourceURI();
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath10/JaxenBpelHandler.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath10/JaxenBpelHandler.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath10/JaxenBpelHandler.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath10/JaxenBpelHandler.java
Thu Dec 11 14:07:21 2008
@@ -223,7 +223,7 @@
String xslUri = getLiteralFromExpression((Expr)params.get(0));
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(xslSheet.uri,
xslSheet.sheetBody,
+
XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(),
xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new CompilationException(
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/JaxpFunctionResolver.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/JaxpFunctionResolver.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/JaxpFunctionResolver.java
Thu Dec 11 14:07:21 2008
@@ -146,7 +146,7 @@
String xslUri = (String) params.get(0);
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(xslSheet.uri,
xslSheet.sheetBody,
+
XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(),
xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new
CompilationException(__msgs.errXslCompilation(xslUri, e.toString()));
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java
Thu Dec 11 14:07:21 2008
@@ -1706,6 +1706,16 @@
return schemaSources;
}
+
+ /**
+ * Retrieves the base URI that the BPEL Process execution context is
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ */
+ public URI getBaseResourceURI() {
+ return _resourceFinder.getBaseResourceURI();
+ }
+
/**
* Compile external variable declaration.
* @param src variable object
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/CompilerContext.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/CompilerContext.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/CompilerContext.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/CompilerContext.java
Thu Dec 11 14:07:21 2008
@@ -144,4 +144,11 @@
//void setExtensionValidators(Map<QName, ExtensionValidator>
extensionValidators);
ExtensionValidator getExtensionValidator(QName extensionElementName);
+
+ /**
+ * Retrieves the base URI that the BPEL Process execution contextis
running relative to.
+ *
+ * @return URI - the URI representing the absolute physical file path
location that this process is defined within.
+ */
+ URI getBaseResourceURI();
}
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath10/JaxenBpelHandler.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath10/JaxenBpelHandler.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath10/JaxenBpelHandler.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath10/JaxenBpelHandler.java
Thu Dec 11 14:07:21 2008
@@ -224,7 +224,7 @@
String xslUri = getLiteralFromExpression((Expr)params.get(0));
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(xslSheet.uri,
xslSheet.sheetBody,
+
XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(),
xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new CompilationException(
Modified:
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/JaxpFunctionResolver.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/JaxpFunctionResolver.java
(original)
+++
ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/JaxpFunctionResolver.java
Thu Dec 11 14:07:21 2008
@@ -146,7 +146,7 @@
String xslUri = (String) params.get(0);
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(xslSheet.uri,
xslSheet.sheetBody,
+
XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(),
xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new
CompilationException(__msgs.errXslCompilation(xslUri, e.toString()));
Modified:
ode/trunk/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler/XPathTest.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler/XPathTest.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler/XPathTest.java
(original)
+++
ode/trunk/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler/XPathTest.java
Thu Dec 11 14:07:21 2008
@@ -267,4 +267,8 @@
public Map<URI, Source> getSchemaSources() {
return null;
}
+
+ public URI getBaseResourceURI() {
+ return null;
+ }
}
Modified:
ode/trunk/engine/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
URL:
http://svn.apache.org/viewvc/ode/trunk/engine/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/engine/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
(original)
+++
ode/trunk/engine/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
Thu Dec 11 14:07:21 2008
@@ -206,4 +206,8 @@
public Map<URI, Source> getSchemaSources() {
return null;
}
+
+ public URI getBaseResourceURI() {
+ return null;
+ }
}
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/JaxenContexts.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/JaxenContexts.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/JaxenContexts.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/JaxenContexts.java
Thu Dec 11 14:07:21 2008
@@ -336,9 +336,9 @@
Object result;
DOMSource source = new DOMSource(varDoc);
XslRuntimeUriResolver resolver = new
XslRuntimeUriResolver(_oxpath, _xpathEvalCtx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(xslUri,
xslSheet.sheetBody, resolver);
+
XslTransformHandler.getInstance().cacheXSLSheet(_xpathEvalCtx.getBaseResourceURI(),
xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(xslUri,
source, parametersMap, resolver);
+ result =
XslTransformHandler.getInstance().transform(_xpathEvalCtx.getBaseResourceURI(),
xslUri, source, parametersMap, resolver);
} catch (Exception e) {
throw new WrappedFaultException.JaxenFunctionException(
new
FaultException(_oxpath.getOwner().constants.qnSubLanguageExecutionFault,
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpFunctionResolver.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpFunctionResolver.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath20/JaxpFunctionResolver.java
Thu Dec 11 14:07:21 2008
@@ -283,9 +283,9 @@
Object result;
DOMSource source = new DOMSource(varDoc);
XslRuntimeUriResolver resolver = new
XslRuntimeUriResolver(_oxpath, _ectx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(xslUri,
xslSheet.sheetBody, resolver);
+
XslTransformHandler.getInstance().cacheXSLSheet(_ectx.getBaseResourceURI(),
xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(xslUri,
source, parametersMap, resolver);
+ result =
XslTransformHandler.getInstance().transform(_ectx.getBaseResourceURI(), xslUri,
source, parametersMap, resolver);
} catch (Exception e) {
e.printStackTrace();
throw new XPathFunctionException(
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java
Thu Dec 11 14:07:21 2008
@@ -330,9 +330,9 @@
Object result;
DOMSource source = new DOMSource(varDoc);
XslRuntimeUriResolver resolver = new
XslRuntimeUriResolver(_oxpath, _xpathEvalCtx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(xslUri,
xslSheet.sheetBody, resolver);
+
XslTransformHandler.getInstance().cacheXSLSheet(_xpathEvalCtx.getBaseResourceURI(),
xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(xslUri,
source, parametersMap, resolver);
+ result =
XslTransformHandler.getInstance().transform(_xpathEvalCtx.getBaseResourceURI(),
xslUri, source, parametersMap, resolver);
} catch (Exception e) {
throw new
org.apache.ode.bpel.rtrep.v1.xpath10.WrappedFaultException.JaxenFunctionException(
new
FaultException(_oxpath.getOwner().constants.qnSubLanguageExecutionFault,
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpFunctionResolver.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpFunctionResolver.java
(original)
+++
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/JaxpFunctionResolver.java
Thu Dec 11 14:07:21 2008
@@ -284,9 +284,9 @@
Object result;
DOMSource source = new DOMSource(varDoc);
XslRuntimeUriResolver resolver = new
XslRuntimeUriResolver(_oxpath, _ectx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(xslUri,
xslSheet.sheetBody, resolver);
+
XslTransformHandler.getInstance().cacheXSLSheet(_ectx.getBaseResourceURI(),
xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(xslUri,
source, parametersMap, resolver);
+ result =
XslTransformHandler.getInstance().transform(_ectx.getBaseResourceURI(), xslUri,
source, parametersMap, resolver);
} catch (Exception e) {
e.printStackTrace();
throw new XPathFunctionException(
Modified:
ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
URL:
http://svn.apache.org/viewvc/ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java?rev=725835&r1=725834&r2=725835&view=diff
==============================================================================
---
ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
(original)
+++
ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
Thu Dec 11 14:07:21 2008
@@ -19,12 +19,14 @@
package org.apache.ode.utils.xsl;
-import org.w3c.dom.Node;
-import org.w3c.dom.Document;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
@@ -33,13 +35,12 @@
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.URIResolver;
import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.collections.keyvalue.MultiKey;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
/**
* Singleton wrapping the basic <code>javax.xml.transform</code> operations.
The
@@ -55,7 +56,7 @@
private static XslTransformHandler __singleton;
private TransformerFactory _transformerFactory = null;
- private final HashMap<URI,Templates> _templateCache = new HashMap<URI,
Templates>();
+ private final HashMap<MultiKey, Templates> _templateCache = new
HashMap<MultiKey, Templates>();
/**
* Singleton access.
@@ -84,7 +85,7 @@
* @param body of the XSL document
* @param resolver used to resolve includes and imports
*/
- public void parseXSLSheet(URI uri, String body, URIResolver resolver) {
+ public void parseXSLSheet(URI baseUri, URI uri, String body, URIResolver
resolver) {
Templates tm;
try {
_transformerFactory.setURIResolver(resolver);
@@ -93,7 +94,7 @@
throw new XslTransformException(e);
}
synchronized(_templateCache) {
- _templateCache.put(uri, tm);
+ _templateCache.put(new MultiKey(baseUri, uri), tm);
}
}
@@ -104,12 +105,12 @@
* @param body of the XSL document
* @param resolver used to resolve includes and imports
*/
- public void cacheXSLSheet(URI uri, String body, URIResolver resolver) {
+ public void cacheXSLSheet(URI baseUri, URI uri, String body, URIResolver
resolver) {
Templates tm;
synchronized (_templateCache) {
- tm = _templateCache.get(uri);
+ tm = _templateCache.get(new MultiKey(baseUri, uri));
}
- if (tm == null) parseXSLSheet(uri, body, resolver);
+ if (tm == null) parseXSLSheet(baseUri, uri, body, resolver);
}
/**
@@ -120,11 +121,11 @@
* @param parameters passed to the stylesheet
* @param resolver used to resolve includes and imports
*/
- public Object transform(URI uri, Source source,
+ public Object transform(URI baseUri, URI uri, Source source,
Map<QName, Object> parameters, URIResolver resolver) {
Templates tm;
synchronized (_templateCache) {
- tm = _templateCache.get(uri);
+ tm = _templateCache.get(new MultiKey(baseUri, uri));
}
if (tm == null)
throw new XslTransformException("XSL sheet" + uri + " has not been
parsed before transformation!");
@@ -137,7 +138,7 @@
}
}
String method = tf.getOutputProperties().getProperty("method");
- if(method.equals("xml") || method.equals("html")) {
+ if (method == null || method.equals("xml") || method.equals("html")) {
DOMResult result = new DOMResult();
tf.transform(source, result);
Node node = result.getNode();