package org.infinispan.cdi.common.util.annotatedtypebuilder;
import static java.util.Collections.emptyMap;
import static java.util.Collections.emptySet;
import static java.util.Collections.unmodifiableSet;
import java.lang.annotation.Annotation;
import java.util.Map;
import java.util.Set;
/**
* A helper class used to hold annotations on a type or member.
*
* @author Stuart Douglas
*/
class AnnotationStore {
private final Map<Class<? extends Annotation>, Annotation> annotationMap;
private final Set<Annotation> annotationSet;
AnnotationStore(Map<Class<? extends Annotation>, Annotation> annotationMap, Set<Annotation> annotationSet) {
this.annotationMap = annotationMap;
this.annotationSet = unmodifiableSet(annotationSet);
}
AnnotationStore() {
this.annotationMap = emptyMap();
this.annotationSet = emptySet();
}
<T extends Annotation> T getAnnotation(Class<T> annotationType) {
return annotationType.cast(annotationMap.get(annotationType));
}
Set<Annotation> getAnnotations() {
return annotationSet;
}
boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
return annotationMap.containsKey(annotationType);
}
}