1 16 package org.apache.cocoon.forms.datatype.validationruleimpl; 17 18 import org.apache.cocoon.forms.datatype.ValidationRule; 19 import org.apache.cocoon.forms.formmodel.CannotYetResolveWarning; 20 import org.apache.cocoon.forms.validation.ValidationError; 21 import org.apache.excalibur.xml.sax.XMLizable; 22 import org.outerj.expression.Expression; 23 import org.outerj.expression.ExpressionContext; 24 import org.outerj.expression.ExpressionException; 25 26 import java.math.BigDecimal ; 27 28 34 public abstract class AbstractValidationRule implements ValidationRule { 35 private XMLizable failMessage; 36 37 44 public void setFailMessage(XMLizable object) { 45 this.failMessage = object; 46 } 47 48 51 public ValidationError getFailMessage() { 52 return new ValidationError(failMessage); 53 } 54 55 58 public boolean hasFailMessage() { 59 return failMessage != null; 60 } 61 62 70 protected Object evaluateNumeric(Expression expression, ExpressionContext expressionContext, String exprName, String ruleName) { 71 Object expressionResult; 72 try { 73 expressionResult = expression.evaluate(expressionContext); 74 } catch (CannotYetResolveWarning w) { 75 return w; 76 } catch (ExpressionException e) { 77 return new ValidationError("Error evaluating \"" + exprName + "\" expression on \"" + 78 ruleName + "\" validation rule", false); 79 } 80 81 if (!(expressionResult instanceof BigDecimal )) { 82 return new ValidationError("Got non-numeric result from \"" + exprName + "\" expression on \"" + 83 ruleName + "\" validation rule", false); 84 } 85 86 return expressionResult; 87 } 88 89 97 protected Object evaluateComparable(Expression expression, ExpressionContext expressionContext, String exprName, String ruleName) { 98 Object expressionResult; 99 try { 100 expressionResult = expression.evaluate(expressionContext); 101 } catch (CannotYetResolveWarning w) { 102 return w; 103 } catch (ExpressionException e) { 104 return new ValidationError("Error evaluating \"" + exprName + "\" expression on \"" + 105 ruleName + "\" validation rule", false); 106 } 107 108 if (!(expressionResult instanceof Comparable )) { 109 return new ValidationError("Got non-comparable result from \"" + exprName + "\" expression on \"" + 110 ruleName + "\" validation rule", false); 111 } 112 113 return expressionResult; 114 } 115 } 116 | Popular Tags |