You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/11/08 22:22:07 UTC
svn commit: r712435 - in /ode/trunk:
runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/
runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/xpath10/
runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/
runtimes/src/main/java/org/apache/ode/bpel/rtrep...
Author: mriou
Date: Sat Nov 8 13:22:06 2008
New Revision: 712435
URL: http://svn.apache.org/viewvc?rev=712435&view=rev
Log:
ODE-408 BPEL process operating large data runs very slowly
Modified:
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/RuntimeInstanceImpl.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/v2/RuntimeInstanceImpl.java
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath10/JaxenContexts.java
ode/trunk/utils/src/main/java/org/apache/ode/utils/xsl/XslTransformHandler.java
Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/RuntimeInstanceImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/RuntimeInstanceImpl.java?rev=712435&r1=712434&r2=712435&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/RuntimeInstanceImpl.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/RuntimeInstanceImpl.java Sat Nov 8 13:22:06 2008
@@ -285,7 +285,8 @@
public void commitChanges(VariableInstance var, ScopeFrame scopeFrame, Node value) throws ExternalVariableModuleException {
if (var.declaration.extVar != null) /* external variable */ {
- __log.debug("Write external variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
+ if (__log.isDebugEnabled())
+ __log.debug("Write external variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
VariableInstance related = scopeFrame.resolve(var.declaration.extVar.related);
Node reference = null;
try {
@@ -296,7 +297,8 @@
VariableContext.ValueReferencePair vrp = _brc.writeExtVar(var, reference, value);
commitChanges(related, scopeFrame, vrp.reference);
} else /* normal variable */ {
- __log.debug("Write variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
+ if (__log.isDebugEnabled())
+ __log.debug("Write variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
_brc.commitChanges(var, value);
}
writeProperties(var, value);
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=712435&r1=712434&r2=712435&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 Sat Nov 8 13:22:06 2008
@@ -35,13 +35,9 @@
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 javax.xml.transform.stream.StreamResult;
-import java.io.IOException;
-import java.io.StringWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
@@ -349,36 +345,18 @@
Document varDoc = DOMUtils.newDocument();
varDoc.appendChild(varDoc.importNode(varElmt, true));
+ Object result;
DOMSource source = new DOMSource(varDoc);
- // Using a StreamResult as a DOMResult doesn't behaves properly when the result
- // of the transformation is just a string.
- StringWriter writerResult = new StringWriter();
- StreamResult result = new StreamResult(writerResult);
XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(_oxpath, _xpathEvalCtx.getBaseResourceURI());
XslTransformHandler.getInstance().cacheXSLSheet(xslUri, xslSheet.sheetBody, resolver);
try {
- XslTransformHandler.getInstance().transform(xslUri, source, result, parametersMap, resolver);
+ result = XslTransformHandler.getInstance().transform(xslUri, source, parametersMap, resolver);
} catch (Exception e) {
throw new WrappedFaultException.JaxenFunctionException(
new FaultException(_oxpath.getOwner().constants.qnSubLanguageExecutionFault,
e.toString()));
}
- writerResult.flush();
-
- String output = writerResult.toString();
- // I'm not really proud of that but hey, it does the job and I don't think there's
- // any other easy way.
- if (output.startsWith("<?xml")) {
- try {
- return DOMUtils.stringToDOM(writerResult.toString());
- } catch (SAXException e) {
- throw new FunctionCallException(e);
- } catch (IOException e) {
- throw new FunctionCallException(e);
- }
- } else {
- return output;
- }
+ return result;
}
}
Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java?rev=712435&r1=712434&r2=712435&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java Sat Nov 8 13:22:06 2008
@@ -285,7 +285,8 @@
public void commitChanges(VariableInstance var, ScopeFrame scopeFrame, Node value) throws ExternalVariableModuleException {
if (var.declaration.extVar != null) /* external variable */ {
- __log.debug("Write external variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
+ if (__log.isDebugEnabled())
+ __log.debug("Write external variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
VariableInstance related = scopeFrame.resolve(var.declaration.extVar.related);
Node reference = null;
try {
@@ -296,7 +297,8 @@
VariableContext.ValueReferencePair vrp = _brc.writeExtVar(var, reference, value);
commitChanges(related, scopeFrame, vrp.reference);
} else /* normal variable */ {
- __log.debug("Write variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
+ if (__log.isDebugEnabled())
+ __log.debug("Write variable: name="+var.declaration + " value="+DOMUtils.domToString(value));
_brc.commitChanges(var, value);
}
writeProperties(var, value);
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=712435&r1=712434&r2=712435&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 Sat Nov 8 13:22:06 2008
@@ -35,13 +35,9 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
import javax.xml.namespace.QName;
import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.IOException;
-import java.io.StringWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
@@ -343,36 +339,18 @@
Document varDoc = DOMUtils.newDocument();
varDoc.appendChild(varDoc.importNode(varElmt, true));
+ Object result;
DOMSource source = new DOMSource(varDoc);
- // Using a StreamResult as a DOMResult doesn't behaves properly when the result
- // of the transformation is just a string.
- StringWriter writerResult = new StringWriter();
- StreamResult result = new StreamResult(writerResult);
XslRuntimeUriResolver resolver = new XslRuntimeUriResolver(_oxpath, _xpathEvalCtx.getBaseResourceURI());
XslTransformHandler.getInstance().cacheXSLSheet(xslUri, xslSheet.sheetBody, resolver);
try {
- XslTransformHandler.getInstance().transform(xslUri, source, result, parametersMap, resolver);
+ result = XslTransformHandler.getInstance().transform(xslUri, source, parametersMap, resolver);
} catch (Exception e) {
- throw new WrappedFaultException.JaxenFunctionException(
+ throw new org.apache.ode.bpel.rtrep.v1.xpath10.WrappedFaultException.JaxenFunctionException(
new FaultException(_oxpath.getOwner().constants.qnSubLanguageExecutionFault,
e.toString()));
}
- writerResult.flush();
-
- String output = writerResult.toString();
- // I'm not really proud of that but hey, it does the job and I don't think there's
- // any other easy way.
- if (output.startsWith("<?xml")) {
- try {
- return DOMUtils.stringToDOM(writerResult.toString());
- } catch (SAXException e) {
- throw new FunctionCallException(e);
- } catch (IOException e) {
- throw new FunctionCallException(e);
- }
- } else {
- return output;
- }
+ return result;
}
}
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=712435&r1=712434&r2=712435&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 Sat Nov 8 13:22:06 2008
@@ -19,6 +19,9 @@
package org.apache.ode.utils.xsl;
+import org.w3c.dom.Node;
+import org.w3c.dom.Document;
+
import javax.xml.namespace.QName;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.Result;
@@ -29,8 +32,11 @@
import javax.xml.transform.TransformerException;
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;
@@ -111,11 +117,10 @@
* by the provided URI. The stylesheet MUST have been parsed previously.
* @param uri referencing the stylesheet
* @param source XML document
- * @param result of the transformation (XSL, HTML or text depending of the output method specified in stylesheet
* @param parameters passed to the stylesheet
* @param resolver used to resolve includes and imports
*/
- public void transform(URI uri, Source source, Result result,
+ public Object transform(URI uri, Source source,
Map<QName, Object> parameters, URIResolver resolver) {
Templates tm;
synchronized (_templateCache) {
@@ -131,7 +136,21 @@
tf.setParameter(param.getKey().getLocalPart(), param.getValue());
}
}
- tf.transform(source, result);
+ String method = tf.getOutputProperties().getProperty("method");
+ if(method.equals("xml") || method.equals("html")) {
+ DOMResult result = new DOMResult();
+ tf.transform(source, result);
+ Node node = result.getNode();
+ if(node.getNodeType() == Node.DOCUMENT_NODE)
+ node = ((Document)node).getDocumentElement();
+ return node;
+ } else {
+ StringWriter writerResult = new StringWriter();
+ StreamResult result = new StreamResult(writerResult);
+ tf.transform(source, result);
+ writerResult.flush();
+ return writerResult.toString();
+ }
} catch (TransformerConfigurationException e) {
throw new XslTransformException(e);
} catch (TransformerException e) {