use of java.lang.annotation.ElementType in project byte-buddy by raphw.
the class TypeDescriptionGenericVisitorValidatorForTypeAnnotations method setUp.
@Before
@SuppressWarnings("unchecked")
public void setUp() throws Exception {
when(otherLegal.accept(any(TypeDescription.Generic.Visitor.class))).thenReturn(true);
when(otherIllegal.accept(any(TypeDescription.Generic.Visitor.class))).thenReturn(false);
when(illegal.getDeclaredAnnotations()).thenReturn(new AnnotationList.Explicit(illegalAnnotation));
when(illegalAnnotation.getElementTypes()).thenReturn(new HashSet<ElementType>());
when(illegalAnnotation.getAnnotationType()).thenReturn(illegalType);
when(otherLegal.asGenericType()).thenReturn(otherLegal);
when(otherIllegal.asGenericType()).thenReturn(otherIllegal);
try {
Enum<?> typeUse = Enum.valueOf(ElementType.class, "TYPE_USE");
Enum<?> typeParameter = Enum.valueOf(ElementType.class, "TYPE_PARAMETER");
when(legalAnnotation.getElementTypes()).thenReturn(new HashSet(Arrays.asList(typeUse, typeParameter)));
when(duplicateAnnotation.getElementTypes()).thenReturn(new HashSet(Arrays.asList(typeUse, typeParameter)));
} catch (IllegalArgumentException ignored) {
when(legalAnnotation.getElementTypes()).thenReturn(Collections.<ElementType>emptySet());
when(duplicateAnnotation.getElementTypes()).thenReturn(Collections.<ElementType>emptySet());
}
when(legal.getDeclaredAnnotations()).thenReturn(new AnnotationList.Explicit(legalAnnotation));
when(duplicate.getDeclaredAnnotations()).thenReturn(new AnnotationList.Explicit(legalAnnotation, duplicateAnnotation));
when(legalAnnotation.getAnnotationType()).thenReturn(legalType);
when(duplicateAnnotation.getAnnotationType()).thenReturn(legalType);
}
use of java.lang.annotation.ElementType in project epoxy by airbnb.
the class AttributeInfo method buildAnnotationLists.
/**
* Keeps track of annotations on the attribute so that they can be used in the generated setter
* and getter method. Setter and getter annotations are stored separately since the annotation may
* not target both method and parameter types.
*/
private void buildAnnotationLists(List<? extends AnnotationMirror> annotationMirrors) {
for (AnnotationMirror annotationMirror : annotationMirrors) {
if (!annotationMirror.getElementValues().isEmpty()) {
// Not supporting annotations with values for now
continue;
}
ClassName annotationClass = ClassName.bestGuess(annotationMirror.getAnnotationType().toString());
if (annotationClass.equals(ClassName.get(EpoxyAttribute.class))) {
// Don't include our own annotation
continue;
}
DeclaredType annotationType = annotationMirror.getAnnotationType();
// A target may exist on an annotation type to specify where the annotation can
// be used, for example fields, methods, or parameters.
Target targetAnnotation = annotationType.asElement().getAnnotation(Target.class);
// Allow all target types if no target was specified on the annotation
List<ElementType> elementTypes = Arrays.asList(targetAnnotation == null ? ElementType.values() : targetAnnotation.value());
AnnotationSpec annotationSpec = AnnotationSpec.builder(annotationClass).build();
if (elementTypes.contains(ElementType.PARAMETER)) {
setterAnnotations.add(annotationSpec);
}
if (elementTypes.contains(ElementType.METHOD)) {
getterAnnotations.add(annotationSpec);
}
}
}
Aggregations