Author: hardy.ferentschik
Date: 2009-07-21 06:53:12 -0400 (Tue, 21 Jul 2009)
New Revision: 17177
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
Log:
HV-187 added approproate try/catch clauses
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
===================================================================
---
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2009-07-21
10:52:39 UTC (rev 17176)
+++
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2009-07-21
10:53:12 UTC (rev 17177)
@@ -429,7 +429,7 @@
private <T> void validateCascadedConstraint(GlobalExecutionContext<T>
context, Iterator<?> iter, boolean isIndexable, Class<?> currentGroup,
PathImpl currentPath) {
Object value;
Integer index;
- Object mapKey = null;
+ Object mapKey;
int i = 0;
while ( iter.hasNext() ) {
value = iter.next();
@@ -737,36 +737,60 @@
return new SingleThreadCachedTraversableResolver( traversableResolver );
}
- @SuppressWarnings("SimplifiableIfStatement")
private boolean isValidationRequired(GlobalExecutionContext globalContext,
LocalExecutionContext localContext, MetaConstraint metaConstraint) {
if ( !metaConstraint.getGroupList().contains( localContext.getCurrentGroup() ) ) {
return false;
}
- return globalContext.getTraversableResolver().isReachable(
- localContext.getCurrentBean(),
- localContext.getPropertyPath().getLeafNode(),
- globalContext.getRootBeanClass(),
- localContext.getPropertyPath().getPathWithoutLeafNode(),
- metaConstraint.getElementType()
- );
+ boolean isReachable;
+
+ try {
+ isReachable = globalContext.getTraversableResolver().isReachable(
+ localContext.getCurrentBean(),
+ localContext.getPropertyPath().getLeafNode(),
+ globalContext.getRootBeanClass(),
+ localContext.getPropertyPath().getPathWithoutLeafNode(),
+ metaConstraint.getElementType()
+ );
+ }
+ catch ( RuntimeException e ) {
+ throw new ValidationException( "Call to TraversableResolver.isReachable() threw
an exception", e );
+ }
+
+ return isReachable;
}
private boolean isCascadeRequired(GlobalExecutionContext globalContext,
LocalExecutionContext localContext, Member member) {
final ElementType type = member instanceof Field ? ElementType.FIELD :
ElementType.METHOD;
- return globalContext.getTraversableResolver().isReachable(
- localContext.getCurrentBean(),
- localContext.getPropertyPath().getLeafNode(),
- globalContext.getRootBeanClass(),
- localContext.getPropertyPath().getPathWithoutLeafNode(),
- type
- )
- && globalContext.getTraversableResolver().isCascadable(
- localContext.getCurrentBean(),
- localContext.getPropertyPath().getLeafNode(),
- globalContext.getRootBeanClass(),
- localContext.getPropertyPath().getPathWithoutLeafNode(),
- type
- );
+ boolean isReachable;
+ boolean isCascadable;
+
+ try {
+ isReachable = globalContext.getTraversableResolver().isReachable(
+ localContext.getCurrentBean(),
+ localContext.getPropertyPath().getLeafNode(),
+ globalContext.getRootBeanClass(),
+ localContext.getPropertyPath().getPathWithoutLeafNode(),
+ type
+ );
+ }
+ catch ( RuntimeException e ) {
+ throw new ValidationException( "Call to TraversableResolver.isReachable() threw
an exception", e );
+ }
+
+ try {
+ isCascadable = globalContext.getTraversableResolver().isCascadable(
+ localContext.getCurrentBean(),
+ localContext.getPropertyPath().getLeafNode(),
+ globalContext.getRootBeanClass(),
+ localContext.getPropertyPath().getPathWithoutLeafNode(),
+ type
+ );
+ }
+ catch ( RuntimeException e ) {
+ throw new ValidationException( "Call to TraversableResolver.isCascadable() threw
an exception", e );
+ }
+
+ return isReachable && isCascadable;
}
}
Show replies by date