private Map<String, Object> buildAnnotationParameterMap(Annotation annotation) { final Method[] declaredMethods = run( GetDeclaredMethods.action( annotation.annotationType() ) ); Map<String, Object> parameters = newHashMap( declaredMethods.length ); for ( Method m : declaredMethods ) { Object value = run( GetAnnotationParameter.action( annotation, m.getName(), Object.class ) ); parameters.put( m.getName(), value ); } return Collections.unmodifiableMap( parameters ); }
private Set<Class<?>> buildGroupSet(Class<?> implicitGroup) { Set<Class<?>> groupSet = newHashSet(); final Class<?>[] groupsFromAnnotation = run( GetAnnotationParameter.action( annotation, ConstraintHelper.GROUPS, Class[].class ) ); if ( groupsFromAnnotation.length == 0 ) { groupSet.add( Default.class ); } else { groupSet.addAll( Arrays.asList( groupsFromAnnotation ) ); } // if the constraint is part of the Default group it is automatically part of the implicit group as well if ( implicitGroup != null && groupSet.contains( Default.class ) ) { groupSet.add( implicitGroup ); } return Collections.unmodifiableSet( groupSet ); }
private void ensureAttributeIsOverridable(Method m, OverridesAttribute overridesAttribute, String overridesAttributeName) { final Method method = run( GetMethod.action( overridesAttribute.constraint(), overridesAttributeName ) ); if ( method == null ) { throw LOG.getOverriddenConstraintAttributeNotFoundException( overridesAttributeName ); } Class<?> returnTypeOfOverriddenConstraint = method.getReturnType(); if ( !returnTypeOfOverriddenConstraint.equals( m.getReturnType() ) ) { throw LOG.getWrongAttributeTypeForOverriddenConstraintException( returnTypeOfOverriddenConstraint, m.getReturnType() ); } }
@SuppressWarnings("unchecked") private Set<Class<? extends Payload>> buildPayloadSet(T annotation) { Set<Class<? extends Payload>> payloadSet = newHashSet(); Class<Payload>[] payloadFromAnnotation; try { //TODO be extra safe and make sure this is an array of Payload payloadFromAnnotation = run( GetAnnotationParameter.action( annotation, ConstraintHelper.PAYLOAD, Class[].class ) ); } catch (ValidationException e) { //ignore people not defining payloads payloadFromAnnotation = null; } if ( payloadFromAnnotation != null ) { payloadSet.addAll( Arrays.asList( payloadFromAnnotation ) ); } return Collections.unmodifiableSet( payloadSet ); }
private void ensureAttributeIsOverridable(Method m, OverridesAttribute overridesAttribute) { final Method method = run( GetMethod.action( overridesAttribute.constraint(), overridesAttribute.name() ) ); if ( method == null ) { throw log.getOverriddenConstraintAttributeNotFoundException( overridesAttribute.name() ); } Class<?> returnTypeOfOverriddenConstraint = method.getReturnType(); if ( !returnTypeOfOverriddenConstraint.equals( m.getReturnType() ) ) { throw log.getWrongAttributeTypeForOverriddenConstraintException( returnTypeOfOverriddenConstraint, m.getReturnType() ); } }
private Map<ClassIndexWrapper, Map<String, Object>> parseOverrideParameters() { Map<ClassIndexWrapper, Map<String, Object>> overrideParameters = newHashMap(); final Method[] methods = run( GetDeclaredMethods.action( annotationDescriptor.getType() ) ); for ( Method m : methods ) { if ( m.getAnnotation( OverridesAttribute.class ) != null ) { addOverrideAttributes( overrideParameters, m, m.getAnnotation( OverridesAttribute.class ) ); } else if ( m.getAnnotation( OverridesAttribute.List.class ) != null ) { addOverrideAttributes( overrideParameters, m, m.getAnnotation( OverridesAttribute.List.class ).value() ); } } return overrideParameters; }
private Map<ClassIndexWrapper, Map<String, Object>> parseOverrideParameters() { Map<ClassIndexWrapper, Map<String, Object>> overrideParameters = newHashMap(); final Method[] methods = run( GetDeclaredMethods.action( annotationType ) ); for ( Method m : methods ) { if ( m.getAnnotation( OverridesAttribute.class ) != null ) { addOverrideAttributes( overrideParameters, m, m.getAnnotation( OverridesAttribute.class ) ); } else if ( m.getAnnotation( OverridesAttribute.List.class ) != null ) { addOverrideAttributes( overrideParameters, m, m.getAnnotation( OverridesAttribute.List.class ).value() ); } } return overrideParameters; }
private void addOverrideAttributes(Map<ClassIndexWrapper, Map<String, Object>> overrideParameters, Method m, OverridesAttribute... attributes) { Object value = run( GetAnnotationParameter.action( annotation, m.getName(), Object.class ) ); for ( OverridesAttribute overridesAttribute : attributes ) { ensureAttributeIsOverridable( m, overridesAttribute ); ClassIndexWrapper wrapper = new ClassIndexWrapper( overridesAttribute.constraint(), overridesAttribute.constraintIndex() ); Map<String, Object> map = overrideParameters.get( wrapper ); if ( map == null ) { map = newHashMap(); overrideParameters.put( wrapper, map ); } map.put( overridesAttribute.name(), value ); } }
annotationType, run( GetAnnotationAttributes.action( constraintAnnotation ) ) );