Author: lwaterman
Date: Mon Sep 18 19:03:13 2006
New Revision: 447677
URL: http://svn.apache.org/viewvc?view=rev&rev=447677
Log:
Add test to check part type
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpVariableResolver.java
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=447677&r1=447676&r2=447677
==============================================================================
---
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 Sep 18 19:03:13 2006
@@ -29,8 +29,10 @@
import org.apache.ode.bpel.o.OMessageVarType;
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;
import javax.xml.namespace.QName;
@@ -92,27 +94,36 @@
Node variableNode = _ectx.readVariable(variable, part);
if (variableNode == null)
throw new
FaultException(variable.getOwner().constants.qnSelectionFailure, "Unknown
variable " + variableName.getLocalPart());
- if (variable.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)variable.type).simple) {
- String text = variableNode.getTextContent();
- try {
- return
XSTypes.toJavaObject(((OXsdTypeVarType)variable.type).xsdType,
- text);
- } catch (Exception e) { }
- // Elegant way failed, trying brute force
- try {
- return Integer.valueOf(text);
- } catch (NumberFormatException e) { }
- try {
- return Double.valueOf(text);
- } catch (NumberFormatException e) { }
- return text;
- } else {
- // Saxon expects a nodelist, everything else will result
in a wrong result...
- return variableNode.getChildNodes();
- }
+ if (variable.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)variable.type).simple)
+ return
getSimpleContent(variableNode.getTextContent(),((OXsdTypeVarType)variable.type).xsdType);
+ if (part.type instanceof OXsdTypeVarType &&
((OXsdTypeVarType)part.type).simple)
+ return
getSimpleContent(variableNode.getTextContent(),((OXsdTypeVarType)part.type).xsdType);
+
+ // Saxon expects a nodelist, everything else will result in a
wrong result...
+ //Document doc = DOMUtils.newDocument();
+ //doc.appendChild(doc.importNode(variableNode, true));
+ //return doc.getChildNodes();
+
+ return variableNode.getChildNodes();
+
}catch(FaultException e){
throw new WrappedResolverException(e);
}
}
}
+
+ private Object getSimpleContent(String text, QName type) {
+ try {
+ return XSTypes.toJavaObject(type,text);
+ } catch (Exception e) { }
+ // Elegant way failed, trying brute force
+ try {
+ return Integer.valueOf(text);
+ } catch (NumberFormatException e) { }
+ try {
+ return Double.valueOf(text);
+ } catch (NumberFormatException e) { }
+ return text;
+ }
+
}