summaryrefslogtreecommitdiffstats
path: root/src/net/gcdc/asn1/uper/AnnotationStore.java
blob: 325ade8faf069cf10ab1b77c018dd63307925b42 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package net.gcdc.asn1.uper;

import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

class AnnotationStore {

    private Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<>();

    public AnnotationStore(Annotation[] classAnnot, Annotation[] fieldAnnot) {
        for (Annotation a : classAnnot) {
            annotations.put(a.annotationType(), a);
        }
        for (Annotation a : fieldAnnot) {
            annotations.put(a.annotationType(), a);
        }
    }

    public <T extends Annotation> T getAnnotation(Class<T> classOfT) {
        @SuppressWarnings("unchecked")
        // Annotations were added with value T for key classOfT.
        T result = (T) annotations.get(classOfT);
        return result;
    }

    public Collection<Annotation> getAnnotations() {
        return annotations.values();
    }
}