1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.s1;
23
24 import java.util.HashMap;
25 import java.util.Iterator;
26 import java.util.Map;
27
28 import org.apache.struts.config.ActionConfig;
29 import org.apache.struts.config.ControllerConfig;
30 import org.apache.struts.config.ExceptionConfig;
31 import org.apache.struts.config.FormBeanConfig;
32 import org.apache.struts.config.ForwardConfig;
33 import org.apache.struts.config.MessageResourcesConfig;
34 import org.apache.struts.config.ModuleConfig;
35 import org.apache.struts.config.PlugInConfig;
36
37 import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
38 import com.opensymphony.xwork2.config.entities.PackageConfig;
39 import com.opensymphony.xwork2.config.entities.ResultConfig;
40
41 /***
42 * Wrapper for a Struts 1.x ModuleConfig based on an XWork PackageConfig. Using a wrapper object
43 * allows us to be explicit about what is and isn't implemented.
44 */
45 class WrapperModuleConfig implements ModuleConfig {
46
47 private Struts1Factory strutsFactory;
48 private PackageConfig delegate;
49 private Map _actionMappings;
50 private Map _exceptionConfigs;
51 private Map _actionForwards;
52
53 public WrapperModuleConfig(Struts1Factory factory, PackageConfig config) {
54 delegate = config;
55 this.strutsFactory = factory;
56 }
57
58 /***
59 * Add Struts ActionMappings (from XWork ExceptionConfigs).
60 */
61 private void initActionMappings() {
62
63 if (_actionMappings == null) {
64 _actionMappings = new HashMap();
65 for (Iterator i = delegate.getActionConfigs().entrySet().iterator(); i.hasNext();) {
66 Map.Entry entry = (Map.Entry) i.next();
67 String actionPath = '/' + (String) entry.getKey();
68 com.opensymphony.xwork2.config.entities.ActionConfig actionConfig =
69 (com.opensymphony.xwork2.config.entities.ActionConfig) entry.getValue();
70 _actionMappings.put(actionPath, strutsFactory.createActionMapping(actionConfig, actionPath, this));
71 }
72 }
73 }
74
75 /***
76 * Add Struts ExceptionConfigs (from XWork ExceptionMappingConfigs).
77 */
78 private void initExceptionConfigs() {
79 if (_exceptionConfigs == null) {
80 _exceptionConfigs = new HashMap();
81 for (Iterator i = delegate.getGlobalExceptionMappingConfigs().iterator(); i.hasNext();) {
82 ExceptionMappingConfig config = (ExceptionMappingConfig) i.next();
83 _exceptionConfigs.put(config.getExceptionClassName(), strutsFactory.createExceptionConfig(config));
84 }
85 }
86 }
87
88 /***
89 * Add Struts ActionForwards (from XWork ResultConfigs).
90 */
91 private void initActionForwards() {
92 if (_actionForwards == null) {
93 _actionForwards = new HashMap();
94 for (Iterator i = delegate.getGlobalResultConfigs().entrySet().iterator(); i.hasNext();) {
95 Map.Entry entry = (Map.Entry) i.next();
96 String name = (String) entry.getKey();
97 ResultConfig config = (ResultConfig) entry.getValue();
98 _actionForwards.put(name, strutsFactory.createActionForward(config));
99 }
100 }
101 }
102
103 public String getPrefix() {
104 return delegate.getNamespace();
105 }
106
107 public void setPrefix(String prefix) {
108 throw new UnsupportedOperationException("Not implemented - immutable");
109 }
110
111 public boolean getConfigured() {
112 return true;
113 }
114
115 public ControllerConfig getControllerConfig() {
116 throw new UnsupportedOperationException("NYI");
117 }
118
119 public void setControllerConfig(ControllerConfig cc) {
120 throw new UnsupportedOperationException("Not implemented - immutable");
121 }
122
123 public String getActionFormBeanClass() {
124 throw new UnsupportedOperationException("NYI");
125 }
126
127 public void setActionFormBeanClass(String actionFormBeanClass) {
128 throw new UnsupportedOperationException("Not implemented - immutable");
129 }
130
131 public String getActionMappingClass() {
132 throw new UnsupportedOperationException("NYI");
133 }
134
135 public void setActionMappingClass(String actionMappingClass) {
136 throw new UnsupportedOperationException("Not implemented - immutable");
137 }
138
139 public void addActionConfig(ActionConfig config) {
140 throw new UnsupportedOperationException("Not implemented - immutable");
141 }
142
143 public void addExceptionConfig(ExceptionConfig config) {
144 throw new UnsupportedOperationException("Not implemented - immutable");
145 }
146
147 public void addFormBeanConfig(FormBeanConfig config) {
148 throw new UnsupportedOperationException("Not implemented - immutable");
149 }
150
151 public String getActionForwardClass() {
152 throw new UnsupportedOperationException("NYI");
153 }
154
155 public void setActionForwardClass(String actionForwardClass) {
156 throw new UnsupportedOperationException("Not implemented - immutable");
157 }
158
159 public void addForwardConfig(ForwardConfig config) {
160 throw new UnsupportedOperationException("NYI");
161 }
162
163 public void addMessageResourcesConfig(MessageResourcesConfig config) {
164 throw new UnsupportedOperationException("Not implemented - immutable");
165 }
166
167 public void addPlugInConfig(PlugInConfig plugInConfig) {
168 throw new UnsupportedOperationException("Not implemented - immutable");
169 }
170
171 public ActionConfig findActionConfig(String path) {
172 initActionMappings();
173 return (ActionConfig) _actionMappings.get(path);
174 }
175
176 public ActionConfig[] findActionConfigs() {
177 initActionMappings();
178 return (ActionConfig[]) _actionMappings.values().toArray(new ActionConfig[_actionMappings.size()]);
179 }
180
181 public ExceptionConfig findExceptionConfig(String type) {
182 initExceptionConfigs();
183 return (ExceptionConfig) _exceptionConfigs.get(type);
184 }
185
186 public ExceptionConfig[] findExceptionConfigs() {
187 initExceptionConfigs();
188 return (ExceptionConfig[]) _exceptionConfigs.values().toArray(new ExceptionConfig[_exceptionConfigs.size()]);
189 }
190
191 public FormBeanConfig findFormBeanConfig(String name) {
192 throw new UnsupportedOperationException("NYI");
193 }
194
195 public FormBeanConfig[] findFormBeanConfigs() {
196 throw new UnsupportedOperationException("NYI");
197 }
198
199 public ForwardConfig findForwardConfig(String name) {
200 initActionForwards();
201 return (ForwardConfig) _actionForwards.get(name);
202 }
203
204 public ForwardConfig[] findForwardConfigs() {
205 initActionForwards();
206 return (ForwardConfig[]) _actionForwards.values().toArray(new ForwardConfig[_actionForwards.size()]);
207 }
208
209 public MessageResourcesConfig findMessageResourcesConfig(String key) {
210 throw new UnsupportedOperationException("NYI");
211 }
212
213 public MessageResourcesConfig[] findMessageResourcesConfigs() {
214 throw new UnsupportedOperationException("NYI");
215 }
216
217 public PlugInConfig[] findPlugInConfigs() {
218 throw new UnsupportedOperationException("NYI");
219 }
220
221 public void freeze() {
222 throw new UnsupportedOperationException("Not implemented - immutable");
223 }
224
225 public void removeActionConfig(ActionConfig config) {
226 throw new UnsupportedOperationException("Not implemented - immutable");
227 }
228
229 public void removeExceptionConfig(ExceptionConfig config) {
230 throw new UnsupportedOperationException("Not implemented - immutable");
231 }
232
233 public void removeFormBeanConfig(FormBeanConfig config) {
234 throw new UnsupportedOperationException("Not implemented - immutable");
235 }
236
237 public void removeForwardConfig(ForwardConfig config) {
238 throw new UnsupportedOperationException("Not implemented - immutable");
239 }
240
241 public void removeMessageResourcesConfig(MessageResourcesConfig config) {
242 throw new UnsupportedOperationException("Not implemented - immutable");
243 }
244
245 public ExceptionConfig findException(Class arg0) {
246 throw new UnsupportedOperationException("NYI");
247 }
248 }