Author: mriou
Date: Mon Mar 3 11:49:51 2008
New Revision: 633249
URL: http://svn.apache.org/viewvc?rev=633249&view=rev
Log:
Yet another date related bug. Saxon doesn't help us much here.
Modified:
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
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=633249&r1=633248&r2=633249&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 Mar 3 11:49:51 2008
@@ -142,7 +142,7 @@
}
public Calendar evaluateAsDate(OExpression cexp, EvaluationContext
context) throws FaultException {
- List literal = (List) evaluate(cexp, context, XPathConstants.NODESET);
+ List literal = DOMUtils.toList(evaluate(cexp, context,
XPathConstants.NODESET));
if (literal.size() == 0)
throw new
FaultException(cexp.getOwner().constants.qnSelectionFailure, "No results for
expression: " + cexp);
if (literal.size() > 1)
@@ -155,6 +155,7 @@
cal.setTime((Date) date);
return cal;
}
+ if (date instanceof Element) date = ((Element)date).getTextContent();
try {
return ISO8601DateParser.parseCal(date.toString());
Modified:
ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
URL:
http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java?rev=633249&r1=633248&r2=633249&view=diff
==============================================================================
---
ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
(original)
+++
ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
Mon Mar 3 11:49:51 2008
@@ -58,5 +58,8 @@
@Test public void testDate() throws Throwable {
go("/bpel/2.0/TestAssignDate");
}
+ @Test public void testMsgDate() throws Throwable {
+ go("/bpel/2.0/TestMsgDate");
+ }
}
Modified: ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
URL:
http://svn.apache.org/viewvc/ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java?rev=633249&r1=633248&r2=633249&view=diff
==============================================================================
--- ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java (original)
+++ ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java Mon Mar 3
11:49:51 2008
@@ -998,4 +998,20 @@
return builder;
}
+ /**
+ * Somewhat eases the pain of dealing with both Lists and Nodelists by
converting either
+ * passed as parameter to a List.
+ * @param nl a NodeList or a List
+ * @return a List
+ */
+ public static List<Node> toList(Object nl) {
+ if (nl == null) return null;
+ if (nl instanceof List) return (List<Node>) nl;
+
+ NodeList cnl = (NodeList) nl;
+ LinkedList<Node> ll = new LinkedList<Node>();
+ for (int m = 0; m < cnl.getLength(); m++) ll.add(cnl.item(m));
+ return ll;
+ }
+
}