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;
+    }
+
 }


Reply via email to