You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2010/12/06 17:01:36 UTC
svn commit: r1042692 - in /ode/trunk/bpel-runtime/src:
main/java/org/apache/ode/bpel/elang/xpath20/runtime/
main/java/org/apache/ode/bpel/elang/xquery10/runtime/
test/java/org/apache/ode/bpel/elang/xpath20/runtime/
Author: vanto
Date: Mon Dec 6 16:01:36 2010
New Revision: 1042692
URL: http://svn.apache.org/viewvc?rev=1042692&view=rev
Log:
ODE-876: performance improvements, thanks to Mateusz Nowakowski!
Modified:
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xquery10/runtime/XQuery10ExpressionRuntime.java
ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XsdTypesTest.java
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java?rev=1042692&r1=1042691&r2=1042692&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java Mon Dec 6 16:01:36 2010
@@ -82,7 +82,9 @@ public class JaxpFunctionResolver implem
}
public XPathFunction resolveFunction(QName functionName, int arity) {
- __log.debug("Resolving function " + functionName);
+ if (__log.isDebugEnabled()) {
+ __log.debug("Resolving function " + functionName);
+ }
if (functionName.getNamespaceURI() == null) {
throw new NullPointerException("Undeclared namespace for " + functionName);
} else if (functionName.getNamespaceURI().equals(Namespaces.WS_BPEL_20_NS) ||
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java?rev=1042692&r1=1042691&r2=1042692&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java Mon Dec 6 16:01:36 2010
@@ -19,13 +19,10 @@
package org.apache.ode.bpel.elang.xpath20.runtime;
-import java.util.Calendar;
-
import javax.xml.namespace.QName;
import javax.xml.xpath.XPathVariableResolver;
import net.sf.saxon.Configuration;
-import net.sf.saxon.om.Item;
import net.sf.saxon.type.AtomicType;
import net.sf.saxon.type.SchemaType;
import net.sf.saxon.type.ValidationException;
@@ -46,8 +43,6 @@ import org.apache.ode.bpel.o.OScope;
import org.apache.ode.bpel.o.OXsdTypeVarType;
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.Namespaces;
-import org.apache.ode.utils.xsd.XSTypes;
-import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
@@ -68,7 +63,9 @@ public class JaxpVariableResolver implem
}
public Object resolveVariable(QName variableName) {
- __log.debug("Resolving variable " + variableName);
+ if (__log.isDebugEnabled()) {
+ __log.debug("Resolving variable " + variableName);
+ }
if (!(_oxpath instanceof OXPath10ExpressionBPEL20)) {
throw new IllegalStateException("XPath variables not supported for bpel 1.1");
@@ -128,7 +125,7 @@ public class JaxpVariableResolver implem
}
}
- public static Value convertSimpleTypeToSaxon(QName type, String value, Configuration _config) {
+ public Value convertSimpleTypeToSaxon(QName type, String value) {
int fp = _config.getNamePool().allocate("", type.getNamespaceURI(), type.getLocalPart());
SchemaType type2 = _config.getSchemaType(fp);
if (type2 == null || !type2.isAtomicType()) {
@@ -148,11 +145,12 @@ public class JaxpVariableResolver implem
}
}
- public static Object getSimpleContent(Node simpleNode, QName type) {
- Document doc = (simpleNode instanceof Document) ? ((Document) simpleNode) : simpleNode.getOwnerDocument();
+ public Object getSimpleContent(Node simpleNode, QName type) {
String text = simpleNode.getTextContent();
- Object o = convertSimpleTypeToSaxon(type, text, Configuration.makeConfiguration(null, null));
- __log.debug("getSimpleContent for " + DOMUtils.domToString(simpleNode) + " " + type + " returned " + o);
+ Object o = convertSimpleTypeToSaxon(type, text);
+ if (__log.isDebugEnabled()) {
+ __log.debug("getSimpleContent for " + DOMUtils.domToString(simpleNode) + " " + type + " returned " + o);
+ }
return o;
}
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java?rev=1042692&r1=1042691&r2=1042692&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java Mon Dec 6 16:01:36 2010
@@ -33,8 +33,8 @@ import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
-import net.sf.saxon.om.NamespaceConstant;
-import net.sf.saxon.trans.DynamicError;
+import net.sf.saxon.Configuration;
+import net.sf.saxon.trans.XPathException;
import net.sf.saxon.value.DurationValue;
import net.sf.saxon.xpath.XPathFactoryImpl;
@@ -73,6 +73,8 @@ public class XPath20ExpressionRuntime im
/** Class-level logger. */
private static final Log __log = LogFactory.getLog(XPath20ExpressionRuntime.class);
+
+ private final XPathFactory _xpf = new XPathFactoryImpl();
public XPath20ExpressionRuntime(){
}
@@ -114,7 +116,9 @@ public class XPath20ExpressionRuntime im
}
if (someRes instanceof List) {
result = (List) someRes;
- __log.debug("Returned list of size " + result.size());
+ if (__log.isDebugEnabled()) {
+ __log.debug("Returned list of size " + result.size());
+ }
if ((result.size() == 1) && !(result.get(0) instanceof Node)) {
// Dealing with a Java class
Object simpleType = result.get(0);
@@ -139,7 +143,9 @@ public class XPath20ExpressionRuntime im
}
} else if (someRes instanceof NodeList) {
NodeList retVal = (NodeList) someRes;
- __log.debug("Returned node list of size " + retVal.getLength());
+ if (__log.isDebugEnabled()) {
+ __log.debug("Returned node list of size " + retVal.getLength());
+ }
result = new ArrayList(retVal.getLength());
for(int m = 0; m < retVal.getLength(); ++m) {
Node val = retVal.item(m);
@@ -172,11 +178,11 @@ public class XPath20ExpressionRuntime im
} else {
msg.append(cexp.toString());
}
- msg.append("'");
+ msg.append('\'');
if (ctx.getRootNode() != null) {
msg.append(" against '");
msg.append(DOMUtils.domToString(ctx.getRootNode()));
- msg.append("'");
+ msg.append('\'');
}
if (retVal.size() == 0)
@@ -228,21 +234,22 @@ public class XPath20ExpressionRuntime im
private Object evaluate(OExpression cexp, EvaluationContext ctx, QName type) throws FaultException, EvaluationException {
try {
OXPath20ExpressionBPEL20 oxpath20 = ((OXPath20ExpressionBPEL20) cexp);
- XPathFactory xpf = new XPathFactoryImpl();
- JaxpFunctionResolver funcResolver = new JaxpFunctionResolver(
- ctx, oxpath20);
- JaxpVariableResolver varResolver = new JaxpVariableResolver(ctx, oxpath20, ((XPathFactoryImpl) xpf).getConfiguration());
- xpf.setXPathFunctionResolver(funcResolver);
- xpf.setXPathVariableResolver(varResolver);
- XPath xpe = xpf.newXPath();
+ JaxpFunctionResolver funcResolver = new JaxpFunctionResolver(ctx, oxpath20);
+ JaxpVariableResolver varResolver = new JaxpVariableResolver(ctx, oxpath20, ((XPathFactoryImpl) _xpf).getConfiguration());
+ XPath xpe = _xpf.newXPath();
+ xpe.setXPathFunctionResolver(funcResolver);
+ xpe.setXPathVariableResolver(varResolver);
xpe.setNamespaceContext(oxpath20.namespaceCtx);
String xpath = ((OXPath10Expression)cexp).xpath;
XPathExpression expr = xpe.compile(xpath);
- Node contextNode = ctx.getRootNode() == null ? DOMUtils.newDocument() : ctx.getRootNode();
+ Node contextNode = ctx.getRootNode();
+ if (contextNode == null) {
+ contextNode = DOMUtils.newDocument();
+ }
// Create step nodes in XPath in case it is incompletely instantiated
if (oxpath20.insertMissingData) {
- XPath20ExpressionModifier modifier = new XPath20ExpressionModifier(oxpath20.namespaceCtx, ((XPathFactoryImpl) xpf).getConfiguration().getNamePool());
+ XPath20ExpressionModifier modifier = new XPath20ExpressionModifier(oxpath20.namespaceCtx, ((XPathFactoryImpl) _xpf).getConfiguration().getNamePool());
modifier.insertMissingData(expr, ctx.getRootNode());
}
Object evalResult = expr.evaluate(contextNode, type);
@@ -256,8 +263,8 @@ public class XPath20ExpressionRuntime im
} catch (XPathExpressionException e) {
// Extracting the real cause from all this wrapping isn't a simple task
Throwable cause = e.getCause() != null ? e.getCause() : e;
- if (cause instanceof DynamicError) {
- Throwable th = ((DynamicError)cause).getException();
+ if (cause instanceof XPathException) {
+ Throwable th = ((XPathException)cause).getException();
if (th != null) {
cause = th;
if (cause.getCause() != null) cause = cause.getCause();
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xquery10/runtime/XQuery10ExpressionRuntime.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xquery10/runtime/XQuery10ExpressionRuntime.java?rev=1042692&r1=1042691&r2=1042692&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xquery10/runtime/XQuery10ExpressionRuntime.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xquery10/runtime/XQuery10ExpressionRuntime.java Mon Dec 6 16:01:36 2010
@@ -162,7 +162,9 @@ public class XQuery10ExpressionRuntime i
if (someRes instanceof List) {
result = (List) someRes;
- __log.debug("Returned list of size " + result.size());
+ if (__log.isDebugEnabled()) {
+ __log.debug("Returned list of size " + result.size());
+ }
if ((result.size() == 1) && !(result.get(0) instanceof Node)) {
// Dealing with a Java class
@@ -191,7 +193,9 @@ public class XQuery10ExpressionRuntime i
}
} else if (someRes instanceof NodeList) {
NodeList retVal = (NodeList) someRes;
- __log.debug("Returned node list of size " + retVal.getLength());
+ if (__log.isDebugEnabled()) {
+ __log.debug("Returned node list of size " + retVal.getLength());
+ }
result = new ArrayList(retVal.getLength());
for (int m = 0; m < retVal.getLength(); ++m) {
Modified: ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XsdTypesTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XsdTypesTest.java?rev=1042692&r1=1042691&r2=1042692&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XsdTypesTest.java (original)
+++ ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/XsdTypesTest.java Mon Dec 6 16:01:36 2010
@@ -20,6 +20,10 @@
package org.apache.ode.bpel.elang.xpath20.runtime;
import javax.xml.namespace.QName;
+import javax.xml.xpath.XPathFactory;
+
+import net.sf.saxon.Configuration;
+import net.sf.saxon.xpath.XPathFactoryImpl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,15 +35,18 @@ public class XsdTypesTest extends TestCa
private static Log __log = LogFactory.getLog(XsdTypesTest.class);
public void testDateTime() throws Exception {
- Object o = JaxpVariableResolver.getSimpleContent(DOMUtils.stringToDOM("<temporary-simple-type-wrapper>2010-01-25T15:38:54.82Z</temporary-simple-type-wrapper>"), QName.valueOf("{http://www.w3.org/2001/XMLSchema}dateTime"));
+ XPathFactoryImpl xpf = new XPathFactoryImpl();
+ JaxpVariableResolver jvr = new JaxpVariableResolver(null, null, xpf.getConfiguration());
+ Object o = jvr.getSimpleContent(DOMUtils.stringToDOM("<temporary-simple-type-wrapper>2010-01-25T15:38:54.82Z</temporary-simple-type-wrapper>"), QName.valueOf("{http://www.w3.org/2001/XMLSchema}dateTime"));
__log.debug(o);
assertTrue(o.toString().contains("2010-01-25T15:38:54.82Z"));
}
public void testEmptyDateTime() throws Exception {
- Object o = JaxpVariableResolver.getSimpleContent(DOMUtils.stringToDOM("<temporary-simple-type-wrapper></temporary-simple-type-wrapper>"), QName.valueOf("{http://www.w3.org/2001/XMLSchema}dateTime"));
+ XPathFactoryImpl xpf = new XPathFactoryImpl();
+ JaxpVariableResolver jvr = new JaxpVariableResolver(null, null, xpf.getConfiguration());
+ Object o = jvr.getSimpleContent(DOMUtils.stringToDOM("<temporary-simple-type-wrapper></temporary-simple-type-wrapper>"), QName.valueOf("{http://www.w3.org/2001/XMLSchema}dateTime"));
__log.debug(o);
assertTrue(o.toString().equals(""));
}
-
}