Author: mriou
Date: Mon Oct 2 17:16:11 2006
New Revision: 452279
URL: http://svn.apache.org/viewvc?view=rev&rev=452279
Log:
[ODE-57] Fixed additional problems with nodes returned by Saxon. There's still
a problem with variable nodes though.
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.bpel
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.xsl
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/test.properties
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
(original)
+++
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
Mon Oct 2 17:16:11 2006
@@ -52,6 +52,8 @@
import java.util.HashMap;
import java.util.List;
+import net.sf.saxon.dom.NodeWrapper;
+
/**
* @author mriou <mriou at apache dot org>
*/
@@ -184,7 +186,9 @@
"element node."));
varElmt = (Element) elmts.get(0);
} else {
- varElmt = (Element) args.get(1);
+ if (args.get(1) instanceof NodeWrapper)
+ varElmt = (Element)
((NodeWrapper)args.get(1)).getUnderlyingNode();
+ else varElmt = (Element) args.get(1);
}
} catch (ClassCastException e) {
throw new XPathFunctionException(
@@ -217,7 +221,12 @@
parametersMap = new HashMap<QName, Object>();
for (int idx = 2; idx < args.size(); idx+=2) {
QName keyQName = _oxpath.namespaceCtx.derefQName((String)
args.get(idx));
- parametersMap.put(keyQName, args.get(idx + 1));
+ Object paramElmt;
+ if (args.get(idx + 1) instanceof NodeWrapper)
+ paramElmt =
((NodeWrapper)args.get(1)).getUnderlyingNode();
+ else paramElmt = args.get(1);
+
+ parametersMap.put(keyQName, paramElmt);
}
}
@@ -238,11 +247,13 @@
writerResult.flush();
String output = writerResult.toString();
+ if (__log.isDebugEnabled())
+ __log.debug("Returned by XSL Sheet: " + output);
// 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());
+ return DOMUtils.stringToDOM(output).getChildNodes();
} catch (SAXException e) {
throw new XPathFunctionException(e);
} catch (IOException e) {
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
(original)
+++
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
Mon Oct 2 17:16:11 2006
@@ -96,7 +96,7 @@
throw new
FaultException(variable.getOwner().constants.qnSelectionFailure, "Unknown
variable " + variableName.getLocalPart());
if (variable.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)variable.type).simple)
return
getSimpleContent(variableNode,((OXsdTypeVarType)variable.type).xsdType);
- if (part.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)part.type).simple)
+ if (part != null && part.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)part.type).simple)
return
getSimpleContent(variableNode,((OXsdTypeVarType)part.type).xsdType);
// Saxon expects a nodelist, everything else will result in a
wrong result...
@@ -125,7 +125,9 @@
return Double.valueOf(text);
} catch (NumberFormatException e) { }
// Remember: always a node set
- return simpleNode.getParentNode().getChildNodes();
+ if (simpleNode.getParentNode() != null)
+ return simpleNode.getParentNode().getChildNodes();
+ else return text;
}
}
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
(original)
+++
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
Mon Oct 2 17:16:11 2006
@@ -176,6 +176,9 @@
} catch (WrappedResolverException wre) {
wre.printStackTrace();
throw (FaultException)wre.getCause();
+ } catch (Throwable t) {
+ t.printStackTrace();
+ throw new EvaluationException("Error while executing an XPath
expression: ", t);
}
}
Modified:
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java
(original)
+++
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java
Mon Oct 2 17:16:11 2006
@@ -143,7 +143,8 @@
break;
case FAULT:
// TODO: handle Fault
- assertTrue(false);
+ System.out.println("=> " + mex.getFaultExplanation());
+ assertTrue(false);
break;
default:
assertTrue(false);
Modified:
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.bpel
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.bpel?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.bpel
(original)
+++
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.bpel
Mon Oct 2 17:16:11 2006
@@ -5,7 +5,9 @@
xmlns:tns="http://pxe/bpel/unit-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:types="http://pxe/bpel/types"
- xmlns:test="http://pxe/bpel/unit-test.wsdl">
+ xmlns:test="http://pxe/bpel/unit-test.wsdl"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
<import location="HelloXslWorld.wsdl"
namespace="http://pxe/bpel/unit-test.wsdl"
@@ -19,7 +21,7 @@
<variables>
<variable name="myVar" messageType="test:HelloXslMessage"/>
- <variable name="xslVar" type="xsd:string"/>
+ <variable name="otherVar" messageType="test:HelloXslMessage"/>
</variables>
<sequence>
@@ -32,12 +34,12 @@
createInstance="yes"/>
<assign name="assign1">
<copy>
- <from><literal>Xsl</literal></from>
- <to>$xslVar</to>
+ <from variable="myVar" part="TestPart"/>
+ <to variable="otherVar" part="TestPart"/>
</copy>
<copy>
<from>
- bpws:doXslTransform("HelloXslWorld.xsl", $myVar/TestPart,
'middle', $xslVar)
+ bpws:doXslTransform("HelloXslWorld.xsl", $myVar.TestPart,
'middle', $otherVar.TestPart)
</from>
<to variable="myVar" part="TestPart"/>
</copy>
Modified:
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.xsl
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.xsl?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.xsl
(original)
+++
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/HelloXslWorld.xsl
Mon Oct 2 17:16:11 2006
@@ -1,12 +1,12 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
- <xsl:param name = "middle"/>
+ <xsl:param name="middle"/>
<xsl:template match="content">
<!-- Per the WS-BPEL spec, only the single child of the root of the
result tree is considered (so the root element here is "suppressed"
in the engine) -->
- <xsl:element name="root">
+ <xsl:element name="root">
<xsl:element name="hello">
<xsl:value-of select="concat(text(), $middle, ' World')"/>
</xsl:element>
Modified:
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/test.properties
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/test.properties?view=diff&rev=452279&r1=452278&r2=452279
==============================================================================
---
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/test.properties
(original)
+++
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestXslTransform/test.properties
Mon Oct 2 17:16:11 2006
@@ -2,5 +2,5 @@
service=HelloXslService
operation=helloXsl
request1=<message><TestPart><content>Hello</content></TestPart></message>
-response1=.*HelloXsl World.*
+response1=.*Hello World.*