package org.jentrata.ebms.cpa.validation; import org.apache.camel.Exchange; import org.jentrata.ebms.EbmsConstants; import org.w3c.dom.Document; /** * */ public abstract class AbstractXPathPredicate extends AbstractValidationPredicate { @Override public boolean matches(Exchange exchange) { try { Document body = exchange.getIn().getBody(Document.class); if(matches(body,expression)) { return true; } else { exchange.getIn().setHeader(EbmsConstants.VALIDATION_ERROR_DESC,getValidationError()); } } catch (Exception ex) { exchange.getIn().setHeader(EbmsConstants.VALIDATION_ERROR_DESC,name + " validation failed:" + ex); } return false; } protected abstract String getValidationError(); abstract boolean matches(Document body, String expression) throws Exception; }