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.*
 


Reply via email to