[hibernate-commits] Hibernate SVN: r17177 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jul 21 06:53:12 EDT 2009


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;
 	}
 }



More information about the hibernate-commits mailing list