1 /*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6 package de.tivsource.ejb3plugin.cache;
7
8 import java.util.List;
9 import java.util.Map;
10 import java.util.concurrent.ConcurrentHashMap;
11
12 /**
13 * Implementierung eine einfachen Caches.
14 *
15 * @author Marc Michele
16 *
17 */
18 public class InjectEJBCache {
19
20 /**
21 * Cache der Klasse.
22 */
23 private static Map<String, List<AnnotatedField>> cache = new ConcurrentHashMap<String, List<AnnotatedField>>();
24
25 /**
26 * Map die dazu dient die Frage zu beantworten ob eine Klasse EJBs enthält.
27 */
28 private static Map<String, Boolean> info = new ConcurrentHashMap<String, Boolean>();
29
30 /**
31 * Singelton Pattern.
32 */
33 private static InjectEJBCache instance;
34 static {
35 instance = new InjectEJBCache();
36 }
37
38 public static InjectEJBCache getInstance() {
39 return instance;
40 }
41
42 /**
43 * Methode die die gespeicherten annotierten Felder einer Klasse zurück
44 * liefert.
45 *
46 * @param className - Name der Klasse für die die Felder gesucht werden.
47 * @return List<AnnotatedField> - Liste der annotierten Felder der übergebenen Klasse.
48 */
49 public List<AnnotatedField> getAnnotatedFields(String className) {
50 return cache.get(className);
51 }
52
53 /**
54 * Methode die die Felder die annotiert sind unter dem Namen der Klasse in
55 * den Cache schreibt und die Klasse makiert.
56 *
57 * @param className - Name der Klasse die die Felder enthält.
58 * @param fields - Felder die annotiert sind.
59 */
60 public void cacheAnnotatedFields(String className,
61 List<AnnotatedField> fields) {
62 cache.put(className, fields);
63 info.put(className, Boolean.TRUE);
64 }
65
66 /**
67 * Methode die testet ob eine Klasse EJBs enthält oder nicht.
68 *
69 * @param className - Name der Klasse der getestet werden soll.
70 * @return Boolean - True wenn die Klasse EJBs enthält, sonst False.
71 */
72 public Boolean hasEJBAnnotations(String className) {
73 return info.get(className);
74 }
75
76 /**
77 * Methode die dazu dient eine Klasse die keine EJBs enthält zu makieren.
78 *
79 * @param className - Name der Klasse die markiert werden soll.
80 */
81 public void noEJBAnnotations(String className) {
82 info.put(className, Boolean.FALSE);
83 }
84
85 }// Ende class