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.PostRenderViewEvent;
28 import javax.faces.event.PostValidateEvent;
29 import javax.faces.event.PreRenderComponentEvent;
30 import javax.faces.event.PreRenderViewEvent;
31 import javax.faces.event.PreValidateEvent;
32
33
34
35
36
37 public class NamedEventManager
38 {
39 private HashMap<String, Collection<Class<? extends ComponentSystemEvent>>> events;
40
41 public NamedEventManager ()
42 {
43 events = new HashMap<String, Collection<Class<? extends ComponentSystemEvent>>>();
44
45
46
47 addNamedEvent("postAddToView", PostAddToViewEvent.class);
48 addNamedEvent("preRenderView", PreRenderViewEvent.class);
49 addNamedEvent("preRenderComponent", PreRenderComponentEvent.class);
50 addNamedEvent("preValidate", PreValidateEvent.class);
51 addNamedEvent("postValidate", PostValidateEvent.class);
52 addNamedEvent("postRenderView", PostRenderViewEvent.class);
53 }
54
55
56
57
58
59
60
61
62 public void addNamedEvent(String shortName, Class<? extends ComponentSystemEvent> cls)
63 {
64 String key = shortName;
65 Collection<Class<? extends ComponentSystemEvent>> eventList;
66
67
68
69 if (shortName == null)
70 {
71 key = getFixedName (cls);
72 }
73
74 eventList = events.get (key);
75
76 if (eventList == null)
77 {
78
79
80 eventList = new LinkedList<Class<? extends ComponentSystemEvent>>();
81
82 events.put (key, eventList);
83 }
84
85 eventList.add (cls);
86 }
87
88
89
90
91
92
93
94
95 public Collection<Class<? extends ComponentSystemEvent>> getNamedEvent(String shortName)
96 {
97 return events.get(shortName);
98 }
99
100
101
102
103
104
105
106 private String getFixedName(Class<? extends ComponentSystemEvent> cls)
107 {
108 StringBuilder result = new StringBuilder();
109 String className;
110
111
112
113 className = cls.getSimpleName();
114
115
116
117 if (className.toLowerCase().endsWith("event"))
118 {
119 className = className.substring(0, result.length() - 5);
120 }
121
122
123
124 if (cls.getPackage() != null)
125 {
126 result.append(cls.getPackage().getName());
127 result.append('.');
128 }
129
130 result.append(className);
131
132 return result.toString();
133 }
134 }