You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ka...@apache.org on 2009/04/09 02:16:14 UTC
svn commit: r763467 - in /ode/branches/APACHE_ODE_1.X:
bpel-api/src/main/java/org/apache/ode/bpel/explang/
bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/
bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/
bpel-compiler/s...
Author: karthick
Date: Thu Apr 9 00:16:13 2009
New Revision: 763467
URL: http://svn.apache.org/viewvc?rev=763467&view=rev
Log:
ODE-574 Memory leak when Un-deploying processes that contain XSL stylesheets
Modified:
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelC.java
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/JaxenBpelHandler.java
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PropertyAliasEvaluationContext.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntimeTest.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
Modified: ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java Thu Apr 9 00:16:13 2009
@@ -97,6 +97,12 @@
Long getProcessId();
/**
+ * Reads the current process's name.
+ * @return process name
+ */
+ QName getProcessQName();
+
+ /**
* Indicates whether simple types should be narrowed to a Java type when
* using this evaluation context.
*/
Modified: ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelC.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelC.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelC.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelC.java Thu Apr 9 00:16:13 2009
@@ -18,6 +18,17 @@
*/
package org.apache.ode.bpel.compiler;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.compiler.api.CompilationException;
@@ -30,19 +41,10 @@
import org.apache.ode.bpel.o.Serializer;
import org.apache.ode.utils.StreamUtils;
import org.apache.ode.utils.msg.MessageBundle;
+import org.apache.ode.utils.xsl.XslTransformHandler;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
-import javax.xml.namespace.QName;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URI;
-import java.util.Map;
-
/**
* <p>
* Wrapper for {@link org.apache.ode.bpel.compiler.BpelCompiler} implementations,
@@ -83,6 +85,7 @@
this.setResourceFinder(null);
this.setCompileListener(null);
this.setOutputStream(null);
+ XslTransformHandler.getInstance().setErrorListener(null);
}
/**
Modified: ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/JaxenBpelHandler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/JaxenBpelHandler.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/JaxenBpelHandler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath10/compiler/JaxenBpelHandler.java Thu Apr 9 00:16:13 2009
@@ -226,7 +226,7 @@
String xslUri = getLiteralFromExpression((Expr)params.get(0));
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(), xslSheet.uri, xslSheet.sheetBody,
+ XslTransformHandler.getInstance().parseXSLSheet(_cctx.getOProcess().getQName(), xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new CompilationException(
Modified: ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java Thu Apr 9 00:16:13 2009
@@ -153,7 +153,7 @@
String xslUri = (String) params.get(0);
OXslSheet xslSheet = _cctx.compileXslt(xslUri);
try {
- XslTransformHandler.getInstance().parseXSLSheet(_cctx.getBaseResourceURI(), xslSheet.uri, xslSheet.sheetBody,
+ XslTransformHandler.getInstance().parseXSLSheet(_cctx.getOProcess().getQName(), xslSheet.uri, xslSheet.sheetBody,
new XslCompileUriResolver(_cctx, _out));
} catch (Exception e) {
throw new CompilationException(__msgs.errXslCompilation(xslUri, e.toString()));
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java Thu Apr 9 00:16:13 2009
@@ -355,9 +355,9 @@
DOMSource source = new DOMSource(varDoc);
Object result;
XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(_oxpath, _xpathEvalCtx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(_xpathEvalCtx.getBaseResourceURI(), xslUri, xslSheet.sheetBody, resolver);
+ XslTransformHandler.getInstance().cacheXSLSheet(_xpathEvalCtx.getProcessQName(), xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(_xpathEvalCtx.getBaseResourceURI(), xslUri, source, parametersMap, resolver);
+ result = XslTransformHandler.getInstance().transform(_xpathEvalCtx.getProcessQName(), xslUri, source, parametersMap, resolver);
} catch (Exception e) {
throw new WrappedFaultException.JaxenFunctionException(
new FaultException(_oxpath.getOwner().constants.qnSubLanguageExecutionFault,
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java Thu Apr 9 00:16:13 2009
@@ -300,9 +300,9 @@
DOMSource source = new DOMSource(varDoc);
Object result;
XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(_oxpath, _ectx.getBaseResourceURI());
- XslTransformHandler.getInstance().cacheXSLSheet(_ectx.getBaseResourceURI(), xslUri, xslSheet.sheetBody, resolver);
+ XslTransformHandler.getInstance().cacheXSLSheet(_ectx.getProcessQName(), xslUri, xslSheet.sheetBody, resolver);
try {
- result = XslTransformHandler.getInstance().transform(_ectx.getBaseResourceURI(), xslUri, source, parametersMap, resolver);
+ result = XslTransformHandler.getInstance().transform(_ectx.getProcessQName(), xslUri, source, parametersMap, resolver);
} catch (Exception e) {
e.printStackTrace();
throw new XPathFunctionException(
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Thu Apr 9 00:16:13 2009
@@ -1422,4 +1422,8 @@
public Node getProcessProperty(QName propertyName) {
return _bpelProcess.getProcessProperty(propertyName);
}
+
+ public QName getProcessQName() {
+ return _bpelProcess.getProcessType();
+ }
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Thu Apr 9 00:16:13 2009
@@ -54,6 +54,7 @@
import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
import org.apache.ode.utils.stl.MemberOfFunction;
+import org.apache.ode.utils.xsl.XslTransformHandler;
/**
* <p>
@@ -335,6 +336,7 @@
if (p != null)
{
_registeredProcesses.remove(p);
+ XslTransformHandler.getInstance().clearXSLSheets(p.getProcessType());
__log.info(__msgs.msgProcessUnregistered(pid));
}
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java Thu Apr 9 00:16:13 2009
@@ -712,6 +712,10 @@
public Node getPropertyValue(QName propertyName) {
return _ctx.getPropertyValue(propertyName);
}
+
+ public QName getProcessQName() {
+ return _ctx.getProcessQName();
+ }
}
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java Thu Apr 9 00:16:13 2009
@@ -294,4 +294,6 @@
*/
Node getProcessProperty(QName propertyName);
+ QName getProcessQName();
+
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java Thu Apr 9 00:16:13 2009
@@ -150,4 +150,8 @@
return _native.getProcessProperty(propertyName);
}
+ public QName getProcessQName() {
+ return _native.getProcessQName();
+ }
+
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PropertyAliasEvaluationContext.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PropertyAliasEvaluationContext.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PropertyAliasEvaluationContext.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PropertyAliasEvaluationContext.java Thu Apr 9 00:16:13 2009
@@ -81,6 +81,10 @@
throw new InvalidProcessException("Process execution information not available in this context.");
}
+ public QName getProcessQName() {
+ throw new InvalidProcessException("Process execution information not available in this context.");
+ }
+
public Node getPartData(Element message, Part part) throws FaultException {
// TODO Auto-generated method stub
return null;
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntimeTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntimeTest.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntimeTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntimeTest.java Thu Apr 9 00:16:13 2009
@@ -162,4 +162,8 @@
public Node getPropertyValue(QName propertyName) {
return null;
}
+
+ public QName getProcessQName() {
+ return null;
+ }
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java Thu Apr 9 00:16:13 2009
@@ -453,4 +453,9 @@
return null;
}
+ public QName getProcessQName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
Modified: ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java?rev=763467&r1=763466&r2=763467&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java (original)
+++ ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java Thu Apr 9 00:16:13 2009
@@ -19,9 +19,13 @@
package org.apache.ode.utils.xsl;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.net.URI;
+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;
@@ -32,15 +36,10 @@
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.commons.collections.keyvalue.MultiKey;
-import org.w3c.dom.Node;
+import org.apache.commons.collections.map.MultiKeyMap;
import org.w3c.dom.Document;
+import org.w3c.dom.Node;
/**
* Singleton wrapping the basic <code>javax.xml.transform</code> operations. The
@@ -56,7 +55,7 @@
private static XslTransformHandler __singleton;
private TransformerFactory _transformerFactory = null;
- private final HashMap<MultiKey, Templates> _templateCache = new HashMap<MultiKey, Templates>();
+ private final MultiKeyMap _templateCache = new MultiKeyMap();
/**
* Singleton access.
@@ -85,7 +84,7 @@
* @param body of the XSL document
* @param resolver used to resolve includes and imports
*/
- public void parseXSLSheet(URI baseUri, URI uri, String body, URIResolver resolver) {
+ public void parseXSLSheet(QName processQName, URI uri, String body, URIResolver resolver) {
Templates tm;
try {
_transformerFactory.setURIResolver(resolver);
@@ -94,7 +93,7 @@
throw new XslTransformException(e);
}
synchronized(_templateCache) {
- _templateCache.put(new MultiKey(baseUri, uri), tm);
+ _templateCache.put(processQName, uri, tm);
}
}
@@ -105,12 +104,12 @@
* @param body of the XSL document
* @param resolver used to resolve includes and imports
*/
- public void cacheXSLSheet(URI baseUri, URI uri, String body, URIResolver resolver) {
+ public void cacheXSLSheet(QName processQName, URI uri, String body, URIResolver resolver) {
Templates tm;
synchronized (_templateCache) {
- tm = _templateCache.get(new MultiKey(baseUri, uri));
+ tm = (Templates) _templateCache.get(processQName, uri);
}
- if (tm == null) parseXSLSheet(baseUri, uri, body, resolver);
+ if (tm == null) parseXSLSheet(processQName, uri, body, resolver);
}
/**
@@ -122,11 +121,11 @@
* @param resolver used to resolve includes and imports
* @return result of the transformation (XSL, HTML or text depending of the output method specified in stylesheet.
*/
- public Object transform(URI baseUri, URI uri, Source source,
+ public Object transform(QName processQName, URI uri, Source source,
Map<QName, Object> parameters, URIResolver resolver) {
Templates tm;
synchronized (_templateCache) {
- tm = _templateCache.get(new MultiKey(baseUri, uri));
+ tm = (Templates) _templateCache.get(processQName, uri);
}
if (tm == null)
throw new XslTransformException("XSL sheet" + uri + " has not been parsed before transformation!");
@@ -163,5 +162,9 @@
public void setErrorListener(ErrorListener l) {
_transformerFactory.setErrorListener(l);
}
+
+ public void clearXSLSheets(QName processQName) {
+ _templateCache.removeAll(processQName);
+ }
}