View Javadoc

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