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