Author: mriou
Date: Fri Aug 10 12:48:38 2007
New Revision: 564734

URL: http://svn.apache.org/viewvc?view=rev&rev=564734
Log:
Checking for unknown parts in Jaxen xpath evaluation.

Modified:
    
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java

Modified: 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java?view=diff&rev=564734&r1=564733&r2=564734
==============================================================================
--- 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
 (original)
+++ 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
 Fri Aug 10 12:48:38 2007
@@ -170,9 +170,18 @@
                 Node variableNode = _xpathEvalCtx.readVariable(variable, part);
                 if (variableNode == null)
                     throw new WrappedFaultException.JaxenUnresolvableException(
-                            new 
FaultException(variable.getOwner().constants.qnSelectionFailure, "Unknown 
variable " + localName));
+                            new 
FaultException(variable.getOwner().constants.qnSelectionFailure,
+                                    "Unknown variable " + localName));
                 OVarType type = variable.type;
-                if (type instanceof OMessageVarType) type = 
((OMessageVarType)type).parts.get(partName).type;
+                if (type instanceof OMessageVarType) {
+                    OMessageVarType.Part typePart = 
((OMessageVarType)type).parts.get(partName);
+                    if (typePart == null) {
+                        throw new 
WrappedFaultException.JaxenUnresolvableException(
+                                new 
FaultException(variable.getOwner().constants.qnSelectionFailure,
+                                        "Unknown part " + partName + " for 
variable " + localName));
+                    }
+                    type = typePart.type;
+                }
 
                 if (type instanceof OXsdTypeVarType && 
((OXsdTypeVarType)type).simple) {
                     String text = variableNode.getTextContent();


Reply via email to