blob: 2feca1f91caa92e6cac2e5c9324b3b97e355aef1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.validator.rules;
import java.util.List;
import org.eclipse.bpel.validator.model.ARule;
import org.eclipse.bpel.validator.model.IFilter;
import org.eclipse.bpel.validator.model.INode;
import org.eclipse.bpel.validator.model.IProblem;
import org.eclipse.bpel.validator.model.NodeNameFilter;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Dec 7, 2006
*
*/
@SuppressWarnings("nls")
public class ToPartsValidator extends CContainerValidator {
/** Nodes which can be our parents */
static public IFilter<INode> PARENTS = new NodeNameFilter( ND_REPLY, ND_INVOKE );
/** (non-Javadoc)
* @see org.eclipse.bpel.validator.rules.CContainerValidator#checkChildren()
*/
@Override
public void checkChildren () {
super.checkChildren();
checkChild(ND_TO_PART, 1, Integer.MAX_VALUE);
}
/**
*
*
*/
@ARule(
sa = 50,
desc = "Check to make sure that every to part is used",
author = "michal.chmielewski@oracle.com",
date = "03/10/2007",
tag = "pass2",
errors="BPELC_PART__MISSING_PART"
)
public void rule_CheckEveryPartUsed_10 () {
INode inputMessageType = getValue(fParentNode,"input.message.type",null);
if (isUndefined(inputMessageType)) {
return ;
}
// we do this for invoke only
if (ND_INVOKE.equals(fParentNode.nodeName()) == false) {
return ;
}
IProblem problem ;
List<INode> nodes = mSelector.selectNodes(inputMessageType, WSDL_ND_PART);
for(INode n : nodes) {
String name = n.getAttribute(AT_NAME);
if (containsValueKey("part." + name) == false) {
problem = createError();
problem.fill("BPELC_PART__MISSING_PART",
toString(mNode.nodeName()),
fParentNode.nodeName(),
ND_TO_PARTS,
name
);
}
}
}
}