blob: 4c4f899296713b0bcd72e40f9c2b537502f419e1 [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 javax.xml.namespace.QName;
import org.eclipse.bpel.validator.model.ARule;
import org.eclipse.bpel.validator.model.IFilter;
import org.eclipse.bpel.validator.model.IModelQueryLookups;
import org.eclipse.bpel.validator.model.INode;
import org.eclipse.bpel.validator.model.IProblem;
import org.eclipse.bpel.validator.model.NodeNameFilter;
import org.eclipse.bpel.validator.model.Validator;
/**
* Validates Exit nodes.
*
*
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Oct 5, 2006
*
*/
@SuppressWarnings("nls")
public class ConditionValidator extends CValidator {
/** list of my parents */
static public final IFilter<INode> PARENTS = new NodeNameFilter (
ND_WHILE,
ND_IF,
ND_ELSEIF,
ND_WHILE,
ND_REPEAT_UNTIL
);
Validator fExprValidator;
protected String fExpressionLanguage;
/**
* @see org.eclipse.bpel.validator.model.Validator#start()
*/
@Override
protected void start () {
super.start();
}
/**
* Checks the expression language attribute for support in the model.
*/
@ARule(
author = "michal.chmielewski@oracle.com",
desc = "Checks the expression language for support in the BPEL model",
date = "10/2/2006",
sa = 4
)
public void rule_CheckExpressionLanguageSupport_20 () {
fExpressionLanguage = getLanguage(mNode,AT_EXPRESSIONLANGUAGE);
IProblem problem;
if ( mModelQuery.hasSupport(IModelQueryLookups.SUPPORT_EXPRESSION_LANGUAGE,
fExpressionLanguage) == false ) {
problem = createError();
problem.fill(
"BPELC__UNSUPPORTED_XML_LANG",
AT_EXPRESSIONLANGUAGE,
fExpressionLanguage);
disableRules( 20,1000 );
return ;
}
}
/**
* Check the condition expression. This expression
* must be a boolean expression.
*/
@ARule(
author = "michal.chmielewski@oracle.com",
desc = "Checks the actual expression using the expression language validator.",
date = "10/2/2006",
sa = 0,
order = 100
)
public void CheckExpression () {
if (fExprValidator == null) {
fExprValidator = createExpressionValidator ( new QName( fExpressionLanguage, mNode.nodeName().getLocalPart() ) );
if (fExprValidator == null) {
return ;
}
attach ( fExprValidator );
}
}
}