1 16 package org.apache.cocoon.woody.datatype.validationruleimpl; 17 18 import org.apache.cocoon.woody.datatype.ValidationError; 19 import org.apache.cocoon.woody.formmodel.CannotYetResolveWarning; 20 import org.outerj.expression.ExpressionContext; 21 import org.outerj.expression.ExpressionException; 22 import org.outerj.expression.Expression; 23 24 30 public class AssertValidationRule extends AbstractValidationRule { 31 private Expression testExpression; 32 33 public AssertValidationRule(Expression testExpression) { 34 this.testExpression = testExpression; 35 } 36 37 public ValidationError validate(Object value, ExpressionContext expressionContext) { 38 Object expressionResult; 39 try { 40 expressionResult = testExpression.evaluate(expressionContext); 41 } catch (CannotYetResolveWarning w) { 42 return null; 43 } catch (ExpressionException e) { 44 return new ValidationError("Error evaluating expression on assert validation rule.", false); 45 } 46 47 if (!(expressionResult instanceof Boolean )) 48 return new ValidationError("Got non-boolean result from expression on assert validation rule.", false); 49 50 if (((Boolean )expressionResult).booleanValue()) 51 return null; 52 else 53 return hasFailMessage() ? getFailMessage() : new ValidationError("Assertion validation rule failed.", false); 54 } 55 56 public boolean supportsType(Class clazz, boolean arrayType) { 57 return true; 58 } 59 } 60 | Popular Tags |