/* * Copyright 2005-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wamblee.xmlrouter.config; import org.wamblee.xml.XMLDocument; import org.wamblee.xml.XMLException; import org.wamblee.xml.XMLProcessor; import org.wamblee.xml.XPathExpression; /** * Basic rule for XML routing. * * @author Erik Brakkee */ public class Rule { private XPathExpression condition; private XMLProcessor processor; private String destination; /** * Constructs the rule. * @param aCondition Condition to be satisfied. * @param aProcessor XML Processor to be applied when the condition is valid. * @param aDestination Destination for the result of this rule. */ public Rule(XPathExpression aCondition, XMLProcessor aProcessor, String aDestination) { condition = aCondition; processor = aProcessor; destination = aDestination; } /** * Applies the rule to a document. * @param aDocument Document to apply rule ot. * @return Transformed document or null if the rule did not apply. * @throws XMLException In case the application of the rule gives an error. */ public XMLDocument apply(XMLDocument aDocument) throws XMLException { if ( !condition.booleanEval(aDocument)) { return null; } return aDocument.process(processor); } public String getDestination() { return destination; } }