You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2015/01/06 03:17:25 UTC

svn commit: r1649714 - in /bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr: ConstraintDefaults.java ConstraintDescriptorImpl.java ConstraintFinderImpl.java ConstraintValidation.java

Author: mbenson
Date: Tue Jan  6 02:17:24 2015
New Revision: 1649714

URL: http://svn.apache.org/r1649714
Log:
cleanup

Modified:
    bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
    bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDescriptorImpl.java
    bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintFinderImpl.java
    bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java

Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1649714&r1=1649713&r2=1649714&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java Tue Jan  6 02:17:24 2015
@@ -23,15 +23,16 @@ import java.io.InputStream;
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.StringTokenizer;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.validation.ConstraintValidator;
 
 import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.weaver.privilizer.Privilizing;
 import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
 
@@ -42,13 +43,12 @@ import org.apache.commons.weaver.privili
 @Privilizing(@CallTo(Reflection.class))
 public class ConstraintDefaults {
     private static final Logger log = Logger.getLogger(ConstraintDefaults.class.getName());
-    private static final String DEFAULT_CONSTRAINTS =
-          "org/apache/bval/jsr/DefaultConstraints.properties";
+    private static final String DEFAULT_CONSTRAINTS = "org/apache/bval/jsr/DefaultConstraints.properties";
     
     /**
      * The default constraint data stored herein.
      */
-    protected Map<String, Class<? extends ConstraintValidator<?, ?>>[]> defaultConstraints;
+    private Map<String, Class<? extends ConstraintValidator<?, ?>>[]> defaultConstraints;
 
     /**
      * Create a new ConstraintDefaults instance.
@@ -78,10 +78,12 @@ public class ConstraintDefaults {
 
     @SuppressWarnings("unchecked")
     private Map<String, Class<? extends ConstraintValidator<?, ?>>[]> loadDefaultConstraints(String resource) {
-        Properties constraintProperties = new Properties();
+        final Properties constraintProperties = new Properties();
         final ClassLoader classloader = getClassLoader();
-        InputStream stream = classloader.getResourceAsStream(resource);
-        if (stream != null) {
+        final InputStream stream = classloader.getResourceAsStream(resource);
+        if (stream == null) {
+            log.log(Level.WARNING, String.format("Cannot find %s", resource));
+        } else {
             try {
                 constraintProperties.load(stream);
             } catch (IOException e) {
@@ -93,33 +95,27 @@ public class ConstraintDefaults {
                     // no-op
                 }
             }
-        } else {
-            log.log(Level.WARNING, String.format("Cannot find %s", resource));
         }
 
-        final Map<String, Class<? extends ConstraintValidator<?, ?>>[]> loadedConstraints = new HashMap<String, Class<? extends ConstraintValidator<?,?>>[]>();
-        for (final Map.Entry<Object, Object> entry : constraintProperties.entrySet()) {
-
-            final StringTokenizer tokens = new StringTokenizer((String) entry.getValue(), ", ");
-            final LinkedList<Class<?>> classes = new LinkedList<Class<?>>();
-            while (tokens.hasMoreTokens()) {
-                final String eachClassName = tokens.nextToken();
+        final Map<String, Class<? extends ConstraintValidator<?, ?>>[]> loadedConstraints =
+            new HashMap<String, Class<? extends ConstraintValidator<?, ?>>[]>();
 
+        for (final Map.Entry<Object, Object> entry : constraintProperties.entrySet()) {
+            final List<Class<?>> classes = new LinkedList<Class<?>>();
+            for (String className : StringUtils.split((String) entry.getValue(), ',')) {
                 try {
-                    classes.add(Reflection.getClass(classloader, eachClassName));
+                    classes.add(Reflection.getClass(classloader, className.trim()));
                 } catch (Exception e) {
-                    log.log(Level.SEVERE, String.format("Cannot find class %s", eachClassName), e);
+                    log.log(Level.SEVERE, String.format("Cannot find class %s", className), e);
                 }
             }
-
             loadedConstraints.put((String) entry.getKey(), classes.toArray(new Class[classes.size()]));
         }
         return loadedConstraints;
     }
 
     private ClassLoader getClassLoader() {
-        ClassLoader classloader = Thread.currentThread().getContextClassLoader();
-        if (classloader == null) classloader = getClass().getClassLoader();
-        return classloader;
+        final ClassLoader classloader = Thread.currentThread().getContextClassLoader();
+        return classloader == null ? getClass().getClassLoader() : classloader;
     }
 }

Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDescriptorImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDescriptorImpl.java?rev=1649714&r1=1649713&r2=1649714&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDescriptorImpl.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDescriptorImpl.java Tue Jan  6 02:17:24 2015
@@ -21,6 +21,10 @@ package org.apache.bval.jsr;
 import javax.validation.ConstraintTarget;
 import javax.validation.Payload;
 import javax.validation.metadata.ConstraintDescriptor;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.util.List;
@@ -28,8 +32,8 @@ import java.util.Map;
 import java.util.Set;
 
 /**
- * Description: immutable, serializable implementation of ConstraintDescriptor
- * interface of JSR303<br>
+ * Immutable, {@link Serializable} {@link ConstraintDescriptor} implementation.
+ *
  * User: roman.stumm<br>
  * Date: 22.04.2010<br>
  * Time: 10:21:23<br>
@@ -147,24 +151,27 @@ public class ConstraintDescriptorImpl<T
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || !getClass().equals(o.getClass())) {
+            return false;
+        }
 
+        @SuppressWarnings("rawtypes")
         final ConstraintDescriptorImpl that = (ConstraintDescriptorImpl) o;
 
-        if (reportAsSingleViolation != that.reportAsSingleViolation) return false;
-        if (!annotation.annotationType().equals(that.annotation.annotationType())) return false;
-        if (attributes != null ? !attributes.equals(that.attributes) : that.attributes != null) return false;
-        if (composingConstraints != null ? !composingConstraints.equals(that.composingConstraints) : that.composingConstraints != null)
-            return false;
-        if (constraintValidatorClasses != null ? !constraintValidatorClasses.equals(that.constraintValidatorClasses) : that.constraintValidatorClasses != null)
-            return false;
-        if (groups != null ? !groups.equals(that.groups) : that.groups != null) return false;
-        if (payload != null ? !payload.equals(that.payload) : that.payload != null) return false;
-        if (template != null ? !template.equals(that.template) : that.template != null) return false;
-        if (validationAppliesTo != that.validationAppliesTo) return false;
-
-        return true;
+        return new EqualsBuilder()
+            .append(reportAsSingleViolation, that.reportAsSingleViolation)
+            .append(annotation.annotationType(), that.annotation.annotationType())
+            .append(attributes, that.attributes)
+            .append(composingConstraints, that.composingConstraints)
+            .append(constraintValidatorClasses, that.constraintValidatorClasses)
+            .append(groups, that.groups)
+            .append(payload, that.payload)
+            .append(template, that.template)
+            .append(validationAppliesTo, that.validationAppliesTo)
+            .build();
     }
 
     @Override
@@ -172,16 +179,17 @@ public class ConstraintDescriptorImpl<T
         return hashCode;
     }
 
-    public int computeHashCode() {
-        int result = annotation.annotationType().hashCode();
-        result = 31 * result + (groups != null ? groups.hashCode() : 0);
-        result = 31 * result + (payload != null ? payload.hashCode() : 0);
-        result = 31 * result + (constraintValidatorClasses != null ? constraintValidatorClasses.hashCode() : 0);
-        result = 31 * result + (attributes != null ? attributes.hashCode() : 0);
-        result = 31 * result + (composingConstraints != null ? composingConstraints.hashCode() : 0);
-        result = 31 * result + (reportAsSingleViolation ? 1 : 0);
-        result = 31 * result + (validationAppliesTo != null ? validationAppliesTo.hashCode() : 0);
-        result = 31 * result + (template != null ? template.hashCode() : 0);
-        return result;
+    private int computeHashCode() {
+        return new HashCodeBuilder(1, 31)
+            .append(annotation.annotationType())
+            .append(groups)
+            .append(payload)
+            .append(constraintValidatorClasses)
+            .append(attributes)
+            .append(composingConstraints)
+            .append(reportAsSingleViolation)
+            .append(validationAppliesTo)
+            .append(template)
+            .build();
     }
 }

Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintFinderImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintFinderImpl.java?rev=1649714&r1=1649713&r2=1649714&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintFinderImpl.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintFinderImpl.java Tue Jan  6 02:17:24 2015
@@ -59,14 +59,13 @@ final class ConstraintFinderImpl impleme
      * {@inheritDoc}
      */
     public ElementDescriptor.ConstraintFinder unorderedAndMatchingGroups(Class<?>... groups) {
-        Set<ConstraintValidation<?>> matchingDescriptors =
+        final Set<ConstraintValidation<?>> matchingDescriptors =
             new HashSet<ConstraintValidation<?>>(constraintDescriptors.size());
-        Groups groupChain = new GroupsComputer().computeGroups(groups);
+        final Groups groupChain = new GroupsComputer().computeGroups(groups);
         for (Group group : groupChain.getGroups()) {
             if (group.isDefault()) {
                 // If group is default, check if it gets redefined
-                List<Group> expandedDefaultGroup = metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE);
-                for (Group defaultGroupMember : expandedDefaultGroup) {
+                for (Group defaultGroupMember : metaBean.<List<Group>>getFeature(JsrFeatures.Bean.GROUP_SEQUENCE)) {
                     for (ConstraintValidation<?> descriptor : constraintDescriptors) {
                         if (isInScope(descriptor) && isInGroup(descriptor, defaultGroupMember)) {
                             matchingDescriptors.add(descriptor);
@@ -88,11 +87,10 @@ final class ConstraintFinderImpl impleme
      * {@inheritDoc}
      */
     public ElementDescriptor.ConstraintFinder lookingAt(Scope scope) {
-        if (scope.equals(Scope.LOCAL_ELEMENT)) {
+        if (scope == Scope.LOCAL_ELEMENT) {
             findInScopes.remove(Scope.HIERARCHY);
             for (Iterator<ConstraintValidation<?>> it = constraintDescriptors.iterator(); it.hasNext();) {
-                ConstraintValidation<?> cv = it.next();
-                if (cv.getOwner() != metaBean.getBeanClass()) {
+                if (!it.next().getOwner().equals(metaBean.getBeanClass())) {
                     it.remove();
                 }
             }
@@ -104,7 +102,7 @@ final class ConstraintFinderImpl impleme
      * {@inheritDoc}
      */
     public ElementDescriptor.ConstraintFinder declaredOn(ElementType... elementTypes) {
-        Set<ConstraintValidation<?>> matchingDescriptors =
+        final Set<ConstraintValidation<?>> matchingDescriptors =
             new HashSet<ConstraintValidation<?>>(constraintDescriptors.size());
         for (ElementType each : elementTypes) {
             for (ConstraintValidation<?> descriptor : constraintDescriptors) {
@@ -122,19 +120,23 @@ final class ConstraintFinderImpl impleme
 
     private boolean isInScope(ConstraintValidation<?> descriptor) {
         if (findInScopes.size() == Scope.values().length)
+         {
             return true; // all scopes
+        }
         if (metaBean != null) {
-            Class<?> owner = descriptor.getOwner();
+            final boolean isOwner = descriptor.getOwner().equals(metaBean.getBeanClass());
             for (Scope scope : findInScopes) {
                 switch (scope) {
-                case LOCAL_ELEMENT:
-                    if (owner.equals(metaBean.getBeanClass()))
-                        return true;
-                    break;
-                case HIERARCHY:
-                    if (!owner.equals(metaBean.getBeanClass()))
-                        return true;
-                    break;
+                    case LOCAL_ELEMENT:
+                        if (isOwner) {
+                            return true;
+                        }
+                        break;
+                    case HIERARCHY:
+                        if (!isOwner) {
+                            return true;
+                        }
+                        break;
                 }
             }
         }
@@ -157,7 +159,7 @@ final class ConstraintFinderImpl impleme
         if (constraintDescriptors.isEmpty()) {
             return Collections.emptySet();
         }
-        return Collections.<ConstraintDescriptor<?>>unmodifiableSet(constraintDescriptors);
+        return Collections.<ConstraintDescriptor<?>> unmodifiableSet(constraintDescriptors);
     }
 
     /**

Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1649714&r1=1649713&r2=1649714&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java Tue Jan  6 02:17:24 2015
@@ -26,6 +26,7 @@ import org.apache.bval.model.ValidationL
 import org.apache.bval.util.AccessStrategy;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.reflect.TypeUtils;
 
 import javax.validation.ConstraintDefinitionException;
@@ -38,6 +39,7 @@ import javax.validation.ValidationExcept
 import javax.validation.constraintvalidation.SupportedValidationTarget;
 import javax.validation.constraintvalidation.ValidationTarget;
 import javax.validation.metadata.ConstraintDescriptor;
+
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Array;
@@ -179,7 +181,7 @@ public class ConstraintValidation<T exte
         if (!isMemberOf(context.getCurrentGroup().getGroup())) {
             return; // do not validate in the current group
         }
-        if (context.getCurrentOwner() != null && this.owner != context.getCurrentOwner()) {
+        if (context.getCurrentOwner() != null && !this.owner.equals(context.getCurrentOwner())) {
             return;
         }
         if (validator != null && !context.collectValidated(validator))
@@ -191,14 +193,15 @@ public class ConstraintValidation<T exte
 
         // process composed constraints
         if (isReportAsSingleViolation()) {
-            ConstraintValidationListener<?> listener = context.getListener();
+            final ConstraintValidationListener<?> listener = context.getListener();
             listener.beginReportAsSingle();
 
             boolean failed = listener.hasViolations();
             try {
                 // stop validating when already failed and
                 // ReportAsSingleInvalidConstraint = true ?
-                for (Iterator<ConstraintValidation<?>> composed = getComposingValidations().iterator(); !failed && composed.hasNext(); ) {
+                for (Iterator<ConstraintValidation<?>> composed = getComposingValidations().iterator(); !failed
+                    && composed.hasNext();) {
                     composed.next().validate(context);
                     failed = listener.hasViolations();
                 }
@@ -210,8 +213,7 @@ public class ConstraintValidation<T exte
 
             if (failed) {
                 // TODO RSt - how should the composed constraint error report look like?
-                ConstraintValidatorContextImpl jsrContext = new ConstraintValidatorContextImpl(context, this);
-                addErrors(context, jsrContext); // add defaultErrorMessage only
+                addErrors(context, new ConstraintValidatorContextImpl(context, this)); // add defaultErrorMessage only
                 return;
             }
         } else {
@@ -224,19 +226,19 @@ public class ConstraintValidation<T exte
         }
 
         if (validator != null) {
-            ConstraintValidatorContextImpl jsrContext = new ConstraintValidatorContextImpl(context, this);
             @SuppressWarnings("unchecked")
             final ConstraintValidator<T, Object> objectValidator = (ConstraintValidator<T, Object>) validator;
+            final ConstraintValidatorContextImpl jsrContext = new ConstraintValidatorContextImpl(context, this);
             if (!objectValidator.isValid(context.getValidatedValue(), jsrContext)) {
                 addErrors(context, jsrContext);
             }
         }
     }
 
-    private <A extends Annotation, T> ConstraintValidator<A, ? super T> getConstraintValidator(A annotation,
+    private <A extends Annotation> ConstraintValidator<A, ? super T> getConstraintValidator(A annotation,
         Class<? extends ConstraintValidator<A, ?>>[] constraintClasses, Class<?> owner, AccessStrategy access) {
-        if (constraintClasses != null && constraintClasses.length > 0) {
-            Type type = determineTargetedType(owner, access);
+        if (ArrayUtils.isNotEmpty(constraintClasses)) {
+            final Type type = determineTargetedType(owner, access);
 
             /**
              * spec says in chapter 3.5.3.: The ConstraintValidator chosen to
@@ -254,8 +256,10 @@ public class ConstraintValidation<T exte
             reduceAssignableTypes(assignableTypes);
             checkOneType(assignableTypes, type, owner, annotation, access);
 
-            if ((type == Object.class || type == Object[].class) && validatorTypes.containsKey(Object.class) && validatorTypes.containsKey(Object[].class)) {
-                throw new ConstraintDefinitionException("Only a validator for Object or Object[] should be provided for cross parameter validators");
+            if ((type.equals(Object.class) || type.equals(Object[].class)) && validatorTypes.containsKey(Object.class)
+                && validatorTypes.containsKey(Object[].class)) {
+                throw new ConstraintDefinitionException(
+                    "Only a validator for Object or Object[] should be provided for cross-parameter validators");
             }
 
             final Collection<Class<? extends ConstraintValidator<A, ?>>> key = validatorTypes.get(assignableTypes.get(0));
@@ -307,7 +311,7 @@ public class ConstraintValidation<T exte
     }
 
     private static void checkOneType(List<Type> types, Type targetType, Class<?> owner, Annotation anno,
-                                     AccessStrategy access) {
+        AccessStrategy access) {
 
         if (types.isEmpty()) {
             final String message = "No validator could be found for type " + stringForType(targetType)
@@ -316,48 +320,28 @@ public class ConstraintValidation<T exte
                 throw new ConstraintDefinitionException(message);
             }
             throw new UnexpectedTypeException(message);
-        } else if (types.size() > 1) {
-            StringBuilder buf = new StringBuilder();
-            buf.append("Ambiguous validators for type ");
-            buf.append(stringForType(targetType));
-            buf.append(". See: @").append(anno.annotationType().getSimpleName()).append(" at ").append(
-                stringForLocation(owner, access));
-            buf.append(". Validators are: ");
-            boolean comma = false;
-            for (Type each : types) {
-                if (comma)
-                    buf.append(", ");
-                comma = true;
-                buf.append(each);
-            }
-            throw new UnexpectedTypeException(buf.toString());
+        }
+        if (types.size() > 1) {
+            throw new UnexpectedTypeException(String.format(
+                "Ambiguous validators for type %s. See: @%s at %s. Validators are: %s", stringForType(targetType), anno
+                    .annotationType().getSimpleName(), stringForLocation(owner, access), StringUtils.join(types, ", ")));
         }
     }
 
     private static String stringForType(Type clazz) {
         if (clazz instanceof Class<?>) {
-            if (((Class<?>) clazz).isArray()) {
-                return ((Class<?>) clazz).getComponentType().getName() + "[]";
-            } else {
-                return ((Class<?>) clazz).getName();
-            }
-        } else {
-            return clazz.toString();
+            return ((Class<?>) clazz).isArray() ? ((Class<?>) clazz).getComponentType().getName() + "[]" : ((Class<?>) clazz).getName();
         }
+        return clazz.toString();
     }
 
     private static String stringForLocation(Class<?> owner, AccessStrategy access) {
-        if (access != null) {
-            return access.toString();
-        } else {
-            return owner.getName();
-        }
+        return access == null ? owner.getName() : access.toString();
     }
 
     private static void fillAssignableTypes(Type type, Set<Type> validatorsTypes, List<Type> suitableTypes) {
         for (final Type validatorType : validatorsTypes) {
-            if (org.apache.commons.lang3.reflect.TypeUtils.isAssignable(type, validatorType)
-                && !suitableTypes.contains(validatorType)) {
+            if (TypeUtils.isAssignable(type, validatorType) && !suitableTypes.contains(validatorType)) {
                 suitableTypes.add(validatorType);
             }
         }
@@ -374,12 +358,11 @@ public class ConstraintValidation<T exte
         if (assignableTypes.size() <= 1) {
             return; // no need to reduce
         }
-        boolean removed;
+        boolean removed = false;
         do {
-            removed = false;
             final Type type = assignableTypes.get(0);
             for (int i = 1; i < assignableTypes.size(); i++) {
-                Type nextType = assignableTypes.get(i);
+                final Type nextType = assignableTypes.get(i);
                 if (TypeUtils.isAssignable(nextType, type)) {
                     assignableTypes.remove(0);
                     i--;
@@ -390,19 +373,21 @@ public class ConstraintValidation<T exte
                 }
             }
         } while (removed && assignableTypes.size() > 1);
-
     }
 
     private static <A extends Annotation> Map<Type, Collection<Class<? extends ConstraintValidator<A, ?>>>> getValidatorsTypes(
         Class<? extends ConstraintValidator<A, ?>>[] constraintValidatorClasses) {
-        final Map<Type, Collection<Class<? extends ConstraintValidator<A, ?>>>> validatorsTypes = new HashMap<Type, Collection<Class<? extends ConstraintValidator<A, ?>>>>();
+        final Map<Type, Collection<Class<? extends ConstraintValidator<A, ?>>>> validatorsTypes =
+            new HashMap<Type, Collection<Class<? extends ConstraintValidator<A, ?>>>>();
         for (Class<? extends ConstraintValidator<A, ?>> validatorType : constraintValidatorClasses) {
-            Type validatedType = TypeUtils.getTypeArguments(validatorType, ConstraintValidator.class).get(ConstraintValidator.class.getTypeParameters()[1]);
+            Type validatedType =
+                TypeUtils.getTypeArguments(validatorType, ConstraintValidator.class).get(
+                    ConstraintValidator.class.getTypeParameters()[1]);
             if (validatedType == null) {
                 throw new ValidationException(String.format("Could not detect validated type for %s", validatorType));
             }
             if (validatedType instanceof GenericArrayType) {
-                Type componentType = TypeUtils.getArrayComponentType(validatedType);
+                final Type componentType = TypeUtils.getArrayComponentType(validatedType);
                 if (componentType instanceof Class<?>) {
                     validatedType = Array.newInstance((Class<?>) componentType, 0).getClass();
                 }
@@ -421,14 +406,14 @@ public class ConstraintValidation<T exte
     private static Type determineTargetedType(Class<?> owner, AccessStrategy access) {
         // if the constraint declaration is hosted on a class or an interface,
         // the targeted type is the class or the interface.
-        if (access == null)
+        if (access == null) {
             return owner;
-        Type type = access.getJavaType();
-        if (type == null)
+        }
+        final Type type = access.getJavaType();
+        if (type == null) {
             return Object.class;
-        if (type instanceof Class<?>)
-            type = ClassUtils.primitiveToWrapper((Class<?>) type);
-        return type;
+        }
+        return type instanceof Class<?> ? ClassUtils.primitiveToWrapper((Class<?>) type) : type;
     }
 
     /**
@@ -459,12 +444,12 @@ public class ConstraintValidation<T exte
         }
         try {
             if (!context.getTraversableResolver().isReachable(context.getBean(), node,
-                context.getRootMetaBean().getBeanClass(), beanPath, access.getElementType()))
+                context.getRootMetaBean().getBeanClass(), beanPath, access.getElementType())) {
                 return false;
+            }
         } catch (RuntimeException e) {
             throw new ValidationException("Error in TraversableResolver.isReachable() for " + context.getBean(), e);
         }
-
         return true;
     }
 
@@ -538,9 +523,8 @@ public class ConstraintValidation<T exte
      *
      * @return {@link Set} of {@link ConstraintValidation}
      */
-    @SuppressWarnings("unchecked")
     Set<ConstraintValidation<?>> getComposingValidations() {
-        return composedConstraints == null ? Collections.EMPTY_SET : composedConstraints;
+        return composedConstraints == null ? Collections.<ConstraintValidation<?>> emptySet() : composedConstraints;
     }
 
     /**
@@ -565,10 +549,7 @@ public class ConstraintValidation<T exte
      * {@inheritDoc}
      */
     public List<Class<? extends ConstraintValidator<T, ?>>> getConstraintValidatorClasses() {
-        if (validatorClasses == null) {
-            return Collections.emptyList();
-        }
-        return Arrays.asList(validatorClasses);
+        return validatorClasses == null ? Collections.<Class<? extends ConstraintValidator<T, ?>>> emptyList() : Arrays.asList(validatorClasses);
     }
 
     public void setValidationAppliesTo(final ConstraintTarget validationAppliesTo) {