summaryrefslogtreecommitdiffstats
path: root/src/org/uic/barcode/asn1/uper/AnnotationStore.java
blob: 6a23a754ce5cd94f2743d5d84d7613e3a44a4f71 (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 org.uic.barcode.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();
    }
}