Skip to content

Commit

Permalink
HV-457: Using simple constants for type names
Browse files Browse the repository at this point in the history
  • Loading branch information
gunnarmorling committed Mar 28, 2012
1 parent 1fda6db commit 37fddb2
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 107 deletions.
Expand Up @@ -33,9 +33,9 @@

import org.hibernate.validator.ap.util.AnnotationApiHelper;
import org.hibernate.validator.ap.util.CollectionHelper;
import org.hibernate.validator.ap.util.TypeNames.BeanValidationTypes;

import static javax.lang.model.util.ElementFilter.methodsIn;
import static org.hibernate.validator.ap.util.TypeNames.Javax;

/**
* Checks, that each constraint annotation type declares the members message(), groups() and payload() as
Expand Down Expand Up @@ -185,7 +185,7 @@ private Set<ConstraintCheckError> checkPayloadAttribute(TypeElement element) {
boolean typeHasExactlyOneTypeArgument = type.getTypeArguments().size() == 1;
boolean typeArgumentIsWildcardWithPayloadExtendsBound = validateWildcardBounds(
type.getTypeArguments().get( 0 ),
annotationApiHelper.getDeclaredTypeByName( Javax.Validation.PAYLOAD ),
annotationApiHelper.getDeclaredTypeByName( BeanValidationTypes.PAYLOAD ),
null
);

Expand Down
Expand Up @@ -24,8 +24,7 @@
import org.hibernate.validator.ap.util.AnnotationApiHelper;
import org.hibernate.validator.ap.util.CollectionHelper;
import org.hibernate.validator.ap.util.ConstraintHelper;

import static org.hibernate.validator.ap.util.TypeNames.Javax;
import org.hibernate.validator.ap.util.TypeNames.BeanValidationTypes;

/**
* Checks, that for each constraint annotation type, which is not a composed constraint,
Expand All @@ -49,7 +48,7 @@ public ConstraintValidatorCheck(ConstraintHelper constraintHelper, AnnotationApi
public Set<ConstraintCheckError> checkAnnotationType(TypeElement element, AnnotationMirror annotation) {

AnnotationMirror constraintMirror = annotationApiHelper.getMirror(
element.getAnnotationMirrors(), Javax.Validation.CONSTRAINT
element.getAnnotationMirrors(), BeanValidationTypes.CONSTRAINT
);
boolean atLeastOneValidatorGiven = !annotationApiHelper.getAnnotationArrayValue(
constraintMirror, "validatedBy"
Expand Down
Expand Up @@ -33,9 +33,8 @@

import org.hibernate.validator.ap.util.AnnotationApiHelper;
import org.hibernate.validator.ap.util.CollectionHelper;

import static org.hibernate.validator.ap.util.TypeNames.Javax;
import static org.hibernate.validator.ap.util.TypeNames.Org;
import org.hibernate.validator.ap.util.TypeNames.BeanValidationTypes;
import org.hibernate.validator.ap.util.TypeNames.HibernateValidatorTypes;

/**
* Checks that the {@link org.hibernate.validator.group.GroupSequenceProvider} annotation definition is valid.
Expand All @@ -61,7 +60,7 @@ public class GroupSequenceProviderCheck extends AbstractConstraintCheck {
public GroupSequenceProviderCheck(AnnotationApiHelper annotationApiHelper, Types typeUtils) {
this.typeUtils = typeUtils;
this.annotationApiHelper = annotationApiHelper;
this.defaultGroupSequenceProviderType = annotationApiHelper.getDeclaredTypeByName( Org.Hibernate.Validator.Group.DEFAULT_GROUP_SEQUENCE_PROVIDER );
this.defaultGroupSequenceProviderType = annotationApiHelper.getDeclaredTypeByName( HibernateValidatorTypes.DEFAULT_GROUP_SEQUENCE_PROVIDER );
}

@Override
Expand All @@ -86,7 +85,7 @@ private Set<ConstraintCheckError> checkHostingElement(TypeElement element, Annot
//this error should be raised only if the GroupSequenceProvider annotations is on a class
if ( annotationApiHelper.getMirror(
element.getAnnotationMirrors(),
Javax.Validation.GROUP_SEQUENCE
BeanValidationTypes.GROUP_SEQUENCE
) != null ) {
return CollectionHelper.asSet(
new ConstraintCheckError(
Expand Down
Expand Up @@ -34,8 +34,9 @@
import javax.lang.model.util.TypeKindVisitor6;
import javax.lang.model.util.Types;

import static org.hibernate.validator.ap.util.TypeNames.Javax;
import static org.hibernate.validator.ap.util.TypeNames.Org;
import org.hibernate.validator.ap.util.TypeNames.BeanValidationTypes;
import org.hibernate.validator.ap.util.TypeNames.HibernateValidatorTypes;
import org.hibernate.validator.ap.util.TypeNames.JodaTypes;

/**
* Helper class that deals with all constraint-related stuff, such as
Expand Down Expand Up @@ -138,38 +139,38 @@ public ConstraintHelper(Elements elementUtils, Types typeUtils, AnnotationApiHel

builtInConstraints = CollectionHelper.newHashMap();

registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.ASSERT_FALSE, Boolean.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.ASSERT_TRUE, Boolean.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.ASSERT_FALSE, Boolean.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.ASSERT_TRUE, Boolean.class );
registerAllowedTypesForBuiltInConstraint(
Javax.Validation.Constraints.DECIMAL_MAX,
BeanValidationTypes.DECIMAL_MAX,
Number.class,
String.class
);
registerAllowedTypesForBuiltInConstraint(
Javax.Validation.Constraints.DECIMAL_MIN,
BeanValidationTypes.DECIMAL_MIN,
Number.class,
String.class
);
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.DIGITS, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.FUTURE, Calendar.class, Date.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.DIGITS, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.FUTURE, Calendar.class, Date.class );
registerAllowedTypesForBuiltInConstraintByNames(
Javax.Validation.Constraints.FUTURE,
Org.Joda.Time.READABLE_PARTIAL,
Org.Joda.Time.READABLE_INSTANT
BeanValidationTypes.FUTURE,
JodaTypes.READABLE_PARTIAL,
JodaTypes.READABLE_INSTANT
);
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.MAX, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.MIN, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.NOT_NULL, Object.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.NULL, Object.class );
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.PAST, Calendar.class, Date.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.MAX, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.MIN, Number.class, String.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.NOT_NULL, Object.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.NULL, Object.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.PAST, Calendar.class, Date.class );
registerAllowedTypesForBuiltInConstraintByNames(
Javax.Validation.Constraints.PAST,
Org.Joda.Time.READABLE_PARTIAL,
Org.Joda.Time.READABLE_INSTANT
BeanValidationTypes.PAST,
JodaTypes.READABLE_PARTIAL,
JodaTypes.READABLE_INSTANT
);
registerAllowedTypesForBuiltInConstraint( Javax.Validation.Constraints.PATTERN, String.class );
registerAllowedTypesForBuiltInConstraint( BeanValidationTypes.PATTERN, String.class );
registerAllowedTypesForBuiltInConstraint(
Javax.Validation.Constraints.SIZE,
BeanValidationTypes.SIZE,
Object[].class,
boolean[].class,
byte[].class,
Expand Down Expand Up @@ -197,7 +198,7 @@ public ConstraintHelper(Elements elementUtils, Types typeUtils, AnnotationApiHel
* otherwise.
*/
public boolean isConstraintAnnotation(Element element) {
return annotationApiHelper.getMirror( element.getAnnotationMirrors(), Javax.Validation.CONSTRAINT ) != null;
return annotationApiHelper.getMirror( element.getAnnotationMirrors(), BeanValidationTypes.CONSTRAINT ) != null;
}

/**
Expand Down Expand Up @@ -355,7 +356,7 @@ private boolean isConstraintAnnotation(AnnotationMirror annotationMirror) {
*/
private boolean isConstraintMetaAnnotation(AnnotationMirror annotationMirror) {
return ( (TypeElement) annotationMirror.getAnnotationType().asElement() ).getQualifiedName()
.contentEquals( Javax.Validation.CONSTRAINT );
.contentEquals( BeanValidationTypes.CONSTRAINT );
}

/**
Expand Down Expand Up @@ -416,7 +417,7 @@ private boolean isGraphValidationAnnotation(

return typeUtils.isSameType(
annotationMirror.getAnnotationType(),
annotationApiHelper.getDeclaredTypeByName( TypeNames.Javax.Validation.VALID )
annotationApiHelper.getDeclaredTypeByName( BeanValidationTypes.VALID )
);
}

Expand All @@ -433,7 +434,7 @@ private boolean isGroupSequenceProviderAnnotation(

return typeUtils.isSameType(
annotationMirror.getAnnotationType(),
annotationApiHelper.getDeclaredTypeByName( Org.Hibernate.Validator.Group.GROUP_SEQUENCE_PROVIDER )
annotationApiHelper.getDeclaredTypeByName( HibernateValidatorTypes.GROUP_SEQUENCE_PROVIDER )
);
}

Expand Down Expand Up @@ -573,7 +574,7 @@ private TypeMirror getConstraintValidatorSuperType(TypeMirror type) {

for ( TypeMirror oneSuperType : superTypes ) {
if ( ( (TypeElement) typeUtils.asElement( oneSuperType ) ).getQualifiedName()
.contentEquals( Javax.Validation.CONSTRAINT_VALIDATOR ) ) {
.contentEquals( BeanValidationTypes.CONSTRAINT_VALIDATOR ) ) {

return oneSuperType;
}
Expand Down Expand Up @@ -608,7 +609,7 @@ private AnnotationMirror getConstraintMetaAnnotation(DeclaredType annotationType
List<? extends AnnotationMirror> annotationMirrors = annotationType.asElement().getAnnotationMirrors();

AnnotationMirror constraintMetaAnnotation = annotationApiHelper.getMirror(
annotationMirrors, Javax.Validation.CONSTRAINT
annotationMirrors, BeanValidationTypes.CONSTRAINT
);

if ( constraintMetaAnnotation == null ) {
Expand Down Expand Up @@ -683,7 +684,7 @@ private Set<TypeMirror> getAllowedTypesForBuiltInConstraint(DeclaredType annotat
private boolean isBuiltInConstraint(DeclaredType constraintAnnotationType) {

return
Javax.Validation.Constraints.NAME.contentEquals(
BeanValidationTypes.JAVAX_VALIDATION_CONSTRAINTS.contentEquals(
elementUtils.getPackageOf( constraintAnnotationType.asElement() ).getQualifiedName()
);
}
Expand Down
Expand Up @@ -25,82 +25,46 @@
*/
public class TypeNames {

private static String getName(String parent, String child) {
return parent + "." + child;
public static class BeanValidationTypes {

public static final String JAVAX_VALIDATION = "javax.validation";

public static final String CONSTRAINT = JAVAX_VALIDATION + ".Constraint";
public static final String CONSTRAINT_VALIDATOR = JAVAX_VALIDATION + ".ConstraintValidator";
public static final String GROUP_SEQUENCE = JAVAX_VALIDATION + ".GroupSequence";
public static final String PAYLOAD = JAVAX_VALIDATION + ".Payload";
public static final String VALID = JAVAX_VALIDATION + ".Valid";

public static final String JAVAX_VALIDATION_CONSTRAINTS = "javax.validation.constraints";

public final static String ASSERT_FALSE = JAVAX_VALIDATION_CONSTRAINTS + ".AssertFalse";
public final static String ASSERT_TRUE = JAVAX_VALIDATION_CONSTRAINTS + ".AssertTrue";
public final static String DECIMAL_MAX = JAVAX_VALIDATION_CONSTRAINTS + ".DecimalMax";
public final static String DECIMAL_MIN = JAVAX_VALIDATION_CONSTRAINTS + ".DecimalMin";
public final static String DIGITS = JAVAX_VALIDATION_CONSTRAINTS + ".Digits";
public final static String FUTURE = JAVAX_VALIDATION_CONSTRAINTS + ".Future";
public final static String MAX = JAVAX_VALIDATION_CONSTRAINTS + ".Max";
public final static String MIN = JAVAX_VALIDATION_CONSTRAINTS + ".Min";
public final static String NOT_NULL = JAVAX_VALIDATION_CONSTRAINTS + ".NotNull";
public final static String NULL = JAVAX_VALIDATION_CONSTRAINTS + ".Null";
public final static String PAST = JAVAX_VALIDATION_CONSTRAINTS + ".Past";
public final static String PATTERN = JAVAX_VALIDATION_CONSTRAINTS + ".Pattern";
public final static String SIZE = JAVAX_VALIDATION_CONSTRAINTS + ".Size";
}

public static class Javax {
public static class HibernateValidatorTypes {

private static final String NAME = "javax";
private static final String ORG_HIBERNATE_VALIDATOR_GROUP = "org.hibernate.validator.group";

public static class Validation {

private static final String NAME = getName( Javax.NAME, "validation" );

public static final String CONSTRAINT = getName( NAME, "Constraint" );
public static final String CONSTRAINT_VALIDATOR = getName( NAME, "ConstraintValidator" );
public static final String GROUP_SEQUENCE = getName( NAME, "GroupSequence" );
public static final String PAYLOAD = getName( NAME, "Payload" );
public static final String VALID = getName( NAME, "Valid" );

public static class Constraints {

public static final String NAME = getName( Validation.NAME, "constraints" );

public final static String ASSERT_FALSE = getName( NAME, "AssertFalse" );
public final static String ASSERT_TRUE = getName( NAME, "AssertTrue" );
public final static String DECIMAL_MAX = getName( NAME, "DecimalMax" );
public final static String DECIMAL_MIN = getName( NAME, "DecimalMin" );
public final static String DIGITS = getName( NAME, "Digits" );
public final static String FUTURE = getName( NAME, "Future" );
public final static String MAX = getName( NAME, "Max" );
public final static String MIN = getName( NAME, "Min" );
public final static String NOT_NULL = getName( NAME, "NotNull" );
public final static String NULL = getName( NAME, "Null" );
public final static String PAST = getName( NAME, "Past" );
public final static String PATTERN = getName( NAME, "Pattern" );
public final static String SIZE = getName( NAME, "Size" );
}
}
public final static String GROUP_SEQUENCE_PROVIDER = ORG_HIBERNATE_VALIDATOR_GROUP + ".GroupSequenceProvider";
public final static String DEFAULT_GROUP_SEQUENCE_PROVIDER = ORG_HIBERNATE_VALIDATOR_GROUP + ".DefaultGroupSequenceProvider";
}

public static class Org {

private static final String NAME = "org";

public static class Hibernate {

private static final String NAME = getName( Org.NAME, "hibernate" );

public static class Validator {
public static class JodaTypes {

private static final String NAME = getName( Hibernate.NAME, "validator" );
private static final String ORG_JODA_TIME = "org.joda.time";

public static class Group {

private static final String NAME = getName( Validator.NAME, "group" );

public final static String GROUP_SEQUENCE_PROVIDER = getName( NAME, "GroupSequenceProvider" );
public final static String DEFAULT_GROUP_SEQUENCE_PROVIDER = getName(
NAME,
"DefaultGroupSequenceProvider"
);
}
}
}

public static class Joda {

private static final String NAME = getName( Org.NAME, "joda" );

public static class Time {

private static final String NAME = getName( Joda.NAME, "time" );

public final static String READABLE_PARTIAL = getName( NAME, "ReadablePartial" );
public final static String READABLE_INSTANT = getName( NAME, "ReadableInstant" );
}
}
public final static String READABLE_PARTIAL = ORG_JODA_TIME + ".ReadablePartial";
public final static String READABLE_INSTANT = ORG_JODA_TIME + ".ReadableInstant";
}

}

0 comments on commit 37fddb2

Please sign in to comment.