1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.config;
20
21 import java.util.Collection;
22 import java.util.HashMap;
23 import java.util.LinkedList;
24
25 import javax.faces.event.ComponentSystemEvent;
26 import javax.faces.event.PostAddToViewEvent;
27 import javax.faces.event.PostValidateEvent;
28 import javax.faces.event.PreRenderComponentEvent;
29 import javax.faces.event.PreRenderViewEvent;
30 import javax.faces.event.PreValidateEvent;
31
32
33
34
35
36
37 public class NamedEventManager
38 {
39
40
41 private HashMap<String, Collection<Class<? extends ComponentSystemEvent>>> events;
42
43 public NamedEventManager ()
44 {
45 events = new HashMap<String, Collection<Class<? extends ComponentSystemEvent>>>();
46
47
48
49 addNamedEvent ("postAddToView", PostAddToViewEvent.class);
50 addNamedEvent ("preRenderView", PreRenderViewEvent.class);
51 addNamedEvent ("preRenderComponent", PreRenderComponentEvent.class);
52 addNamedEvent ("preValidate", PreValidateEvent.class);
53 addNamedEvent ("postValidate", PostValidateEvent.class);
54 }
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 public void addNamedEvent (String shortName, Class<? extends ComponentSystemEvent> cls)
70 {
71 String key = shortName;
72 Collection<Class<? extends ComponentSystemEvent>> eventList;
73
74
75
76 if (shortName == null)
77 {
78 key = getFixedName (cls);
79 }
80
81 eventList = events.get (key);
82
83 if (eventList == null)
84 {
85
86
87 eventList = new LinkedList<Class<? extends ComponentSystemEvent>>();
88
89 events.put (key, eventList);
90 }
91
92 eventList.add (cls);
93 }
94
95
96
97
98
99
100
101
102
103 public Collection<Class<? extends ComponentSystemEvent>> getNamedEvent (String shortName)
104 {
105 return events.get (shortName);
106 }
107
108
109
110
111
112
113
114
115 private String getFixedName (Class<? extends ComponentSystemEvent> cls)
116 {
117 StringBuilder result = new StringBuilder();
118 String className;
119
120
121
122 className = cls.getSimpleName();
123
124
125
126 if (className.toLowerCase().endsWith ("event"))
127 {
128 className = className.substring (0, result.length() - 5);
129 }
130
131
132
133 if (cls.getPackage() != null)
134 {
135 result.append (cls.getPackage().getName());
136 result.append ('.');
137 }
138
139 result.append (className);
140
141 return result.toString();
142 }
143 }