### Eclipse Workspace Patch 1.0 #P org.eclipse.bpel.xpath10 #P org.eclipse.bpel.validator Index: src/org/eclipse/bpel/validator/xpath/XPathValidator.java =================================================================== --- src/org/eclipse/bpel/validator/xpath/XPathValidator.java (revision 16020) +++ src/org/eclipse/bpel/validator/xpath/XPathValidator.java (working copy) @@ -916,9 +916,9 @@ if (isEmptyOrWhitespace(prefix)) { return true; } - + String nsURI = lookupNamespace(prefix); - + if (isEmpty(nsURI)) { IProblem problem = createError(); problem.fill("XPATH_UNRESOLVED_NAMESPACE_PREFIX", //$NON-NLS-1$ Index: src/org/eclipse/bpel/validator/factory/AdapterFactory.java =================================================================== --- src/org/eclipse/bpel/validator/factory/AdapterFactory.java (revision 16020) +++ src/org/eclipse/bpel/validator/factory/AdapterFactory.java (working copy) @@ -5,6 +5,8 @@ import java.util.Locale; import java.util.Map; +import javax.xml.namespace.QName; + import org.eclipse.bpel.model.adapters.AdapterRegistry; import org.eclipse.bpel.validator.Activator; import org.eclipse.bpel.validator.IBPELMarker; @@ -220,7 +222,14 @@ // href.context refers to the problem context, expressed // in the model object space context. - props.put( "href.context", problem.getAttribute(IProblem.CONTEXT )); + Object context = problem.getAttribute(IProblem.CONTEXT ); + if( context instanceof QName){ + QName qname = (QName)context; + props.put( "href.context", qname.getLocalPart()); + } + else{ + props.put( "href.context", problem.getAttribute(IProblem.CONTEXT )); + } // do not save this marker @@ -231,7 +240,7 @@ try { marker = resource.createMarker( IBPELMarker.ID ); marker.setAttributes( props ); - } catch (CoreException ex) { + } catch (Exception ex) { // can't create marker ... ? Activator.log(ex); return null; Index: src/org/eclipse/bpel/validator/model/IConstants.java =================================================================== --- src/org/eclipse/bpel/validator/model/IConstants.java (revision 16020) +++ src/org/eclipse/bpel/validator/model/IConstants.java (working copy) @@ -128,6 +128,8 @@ public static final String REQUEST = "request"; public static final String RESPONSE = "response"; public static final String REQUEST_RESPONSE = "request-response"; + public static final String IN = "in"; + public static final String OUT = "out"; // public static final String PARTNER_ROLE = "partnerRole"; @@ -338,7 +340,7 @@ public static final String ENDPOINT_VALUES [] = { MY_ROLE, PARTNER_ROLE }; - public static final String PATTERN_VALUES [] = { REQUEST , RESPONSE, REQUEST_RESPONSE }; + public static final String PATTERN_VALUES [] = { REQUEST , RESPONSE, REQUEST_RESPONSE, IN, OUT }; public static final QName REPEATABLE_NODES [] = { ND_WHILE, ND_REPEAT_UNTIL, ND_FOR_EACH, ND_EVENT_HANDLERS, ND_COMPENSATION_HANDLER }; Index: src/org/eclipse/bpel/validator/XSDUtils.java =================================================================== --- src/org/eclipse/bpel/validator/XSDUtils.java (revision 16020) +++ src/org/eclipse/bpel/validator/XSDUtils.java (working copy) @@ -224,7 +224,12 @@ */ public static List getChildElements (XSDComplexTypeDefinition bo) { - return getChildElements( getModelGroup(bo) ); + List children = new ArrayList(); + children.addAll(getChildElements(getModelGroup(bo))); + if(bo.getBaseTypeDefinition() instanceof XSDComplexTypeDefinition){ + children.addAll(getChildElements(getModelGroup((XSDComplexTypeDefinition)bo.getBaseTypeDefinition()))); + } + return children;//getChildElements( getModelGroup(bo) ); } /** Index: src/org/eclipse/bpel/validator/xpath/XPathVisitor.java =================================================================== --- src/org/eclipse/bpel/validator/xpath/XPathVisitor.java (revision 16020) +++ src/org/eclipse/bpel/validator/xpath/XPathVisitor.java (working copy) @@ -394,7 +394,7 @@ */ public void visit ( Object obj ) { - if (obj instanceof PathExpr) { + if (obj instanceof PathExpr) {; visit((PathExpr) obj); } else if (obj instanceof LocationPath) { visit((LocationPath) obj); Index: src/org/eclipse/bpel/validator/rules/ReplyValidator.java =================================================================== --- src/org/eclipse/bpel/validator/rules/ReplyValidator.java (revision 16020) +++ src/org/eclipse/bpel/validator/rules/ReplyValidator.java (working copy) @@ -122,7 +122,7 @@ * 4) operation -> "input" message must be set. */ - INode fInputMessage ; + INode fOutMessage ; /** * Checks the Input Message for the receive. This just makes @@ -132,8 +132,8 @@ public void rule_CheckOutputMessage_12 () { - fInputMessage = findMessageType (fPortTypeFromRole,fOperation,WSDL_ND_INPUT, true ); - setValue("input.message.type", fInputMessage); + fOutMessage = findMessageType (fPortTypeFromRole,fOperation,WSDL_ND_OUTPUT, true ); + setValue("input.message.type", fOutMessage); } @@ -155,7 +155,7 @@ { IProblem problem; - if (isUndefined(fInputMessage) || isUndefined(fVariable )) { + if (isUndefined(fOutMessage) || isUndefined(fVariable )) { return ; } @@ -167,14 +167,14 @@ } // source -> destination - if (mModelQuery.check( IModelQueryLookups.TEST_COMPATIBLE_PARTNER_ACTIVITY_MESSAGE, varType, fInputMessage ) == false) { + if (mModelQuery.check( IModelQueryLookups.TEST_COMPATIBLE_PARTNER_ACTIVITY_MESSAGE, varType, fOutMessage ) == false) { problem = createError( ); problem.fill( "BPELC_PA__MESSAGE_TYPE_MISMATCH", //$NON-NLS-1$ toString(mNode.nodeName()), AT_VARIABLE, fVariable.getAttribute( AT_NAME ), - fInputMessage, + fOutMessage, varType ); } Index: src/org/eclipse/bpel/validator/xpath/Query.java =================================================================== --- src/org/eclipse/bpel/validator/xpath/Query.java (revision 16020) +++ src/org/eclipse/bpel/validator/xpath/Query.java (working copy) @@ -10,14 +10,19 @@ *******************************************************************************/ package org.eclipse.bpel.validator.xpath; +import java.util.Iterator; +import java.util.Map; + import org.eclipse.bpel.validator.model.ARule; import org.eclipse.bpel.validator.model.INode; import org.eclipse.bpel.validator.model.IProblem; - +import org.eclipse.bpel.validator.model.Problem; import org.eclipse.bpel.xpath10.Expr; import org.eclipse.bpel.xpath10.FunctionCallExpr; import org.eclipse.bpel.xpath10.LocationPath; +import org.eclipse.bpel.xpath10.UnaryExpr; import org.eclipse.bpel.xpath10.VariableReferenceExpr; +import org.eclipse.bpel.xpath10.parser.XPath10Parser.unaryExpr_return; /** * @author Michal Chmielewski (michal.chmielewski@oracle.com) @@ -60,7 +65,8 @@ IProblem problem; Expr expr = xpathExpr ; - if (expr instanceof LocationPath) { + if (expr instanceof UnaryExpr && ((UnaryExpr)expr).getExpr() instanceof LocationPath) { + expr = ((UnaryExpr)expr).getExpr(); Object obj = mVisitor.contextPeek(); if (obj instanceof INode) { @@ -78,7 +84,9 @@ exprStringTrimmed, toString(mNode.nodeName()) ); + repointOffsets(problem, expr); + } // Don't run anything else.