blob: 1733b7bceace9788eaf599dffd747d67457443ed [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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.validator.rules;
import org.eclipse.bpel.validator.model.Filters;
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.ARule;
import org.eclipse.bpel.validator.model.NodeNameFilter;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Jan 18, 2007
*
*/
@SuppressWarnings({ "nls", "boxing" })
public class FaultHandlersValidator extends CValidator {
int fCatches;
int fCatchAll;
/** my parents */
static public IFilter<INode> PARENTS = Filters.SCOPE_OR_PROCESS;
/** Catches that are part of event handlers */
static IFilter<INode> CATCHES = new NodeNameFilter( ND_CATCH , ND_CATCH_ALL );
/** (non-Javadoc)
* @see org.eclipse.bpel.validator.rules.CValidator#checkChildren()
*/
@Override
public void checkChildren () {
super.checkChildren();
fCatches = checkChild(ND_CATCH, 0, Integer.MAX_VALUE);
fCatchAll = checkChild(ND_CATCH_ALL, 0, 1);
}
/**
* Start the rules for fault handlers.
* @see org.eclipse.bpel.validator.model.Validator#start()
*/
@Override
protected void start () {
super.start();
}
/**
* Check the count of the handlers to be at least 1.
*
*/
@ARule(
date = "01/10/2007",
author = "michal.chmielewski@oracle.com",
desc = "At least one catch or catchAll must be present in fault handlers.",
sa = 80 ,
errors="BPELC__AT_LEAST_ONE"
)
public void rule_CheckHandlerCount_1 () {
int count = fCatchAll+ fCatches;
IProblem problem;
if (count < 1) {
problem = createError();
problem.fill("BPELC__AT_LEAST_ONE",
toString(mNode.nodeName()),
KIND_NODE,
CATCHES,
KIND_NODE
);
}
}
}