View Javadoc

1   /*
2    * Copyright 2004 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   * $Header:$
17   */
18  package org.apache.struts2.s1;
19  
20  import org.apache.struts.action.ActionMapping;
21  import org.apache.struts.action.ActionForward;
22  import org.apache.struts.config.ModuleConfig;
23  import org.apache.struts.config.ExceptionConfig;
24  import org.apache.struts.config.ForwardConfig;
25  import com.opensymphony.xwork2.config.entities.ActionConfig;
26  import com.opensymphony.xwork2.config.entities.ResultConfig;
27  import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
28  
29  import java.util.Iterator;
30  import java.util.Map;
31  import java.util.List;
32  import java.util.HashMap;
33  
34  /***
35   * Wrapper for a Struts 1.x ActionMapping based on an XWork ActionConfig.  Using a wrapper object
36   * allows us to be explicit about what is and isn't implemented.
37   */
38  class WrapperActionMapping extends ActionMapping {
39  
40      private ActionConfig delegate;
41      private String actionPath;
42      private String attribute;
43      private Struts1Factory strutsFactory;
44  
45      public WrapperActionMapping(Struts1Factory factory, ActionConfig delegate) {
46          this.delegate = delegate;
47          this.strutsFactory = factory;
48          forwards = null;
49          exceptions = null;
50      }
51  
52      public WrapperActionMapping(Struts1Factory factory, ActionConfig delegate, String actionPath, ModuleConfig moduleConfig) {
53          this(factory, delegate);
54          this.moduleConfig = moduleConfig;
55          this.actionPath = actionPath;
56      }
57  
58      /***
59       * Add Struts ForwardConfigs (from XWork ResultConfigs).
60       */
61      private void initActionForwards() {
62          if (forwards == null) {
63              forwards = new HashMap();
64              Map results = delegate.getResults();
65              for (Iterator i = results.entrySet().iterator(); i.hasNext();) {
66                  Map.Entry entry = (Map.Entry) i.next();
67                  ActionForward wrapper = strutsFactory.createActionForward((ResultConfig) entry.getValue());
68                  forwards.put(wrapper.getName(), wrapper);
69              }
70          }
71      }
72                  
73      /***
74       * Add XWork ExceptionConfigs (from XWork ExceptionMappingConfigs)
75       */
76      private void initExceptionConfigs() {
77          if (exceptions == null) {
78              exceptions = new HashMap();
79              List exceptionMappings = delegate.getExceptionMappings();
80              for (Iterator i = exceptionMappings.iterator(); i.hasNext();) {
81                  ExceptionConfig wrapper = strutsFactory.createExceptionConfig((ExceptionMappingConfig) i.next());
82                  exceptions.put(wrapper.getType(), wrapper);
83              }
84          }
85      }
86  
87      public ActionForward findForward(String name) {
88          initActionForwards();
89          return super.findForward(name);
90      }
91  
92      public String[] findForwards() {
93          initActionForwards();
94          return super.findForwards();
95      }
96  
97      public ForwardConfig findForwardConfig(String name) {
98          initActionForwards();
99          return super.findForwardConfig(name);
100     }
101 
102     public ForwardConfig[] findForwardConfigs() {
103         initActionForwards();
104         return super.findForwardConfigs();
105     }
106 
107     public ExceptionConfig findExceptionConfig(String type) {
108         initExceptionConfigs();
109         return super.findExceptionConfig(type);
110     }
111 
112     public ExceptionConfig[] findExceptionConfigs() {
113         initExceptionConfigs();
114         return super.findExceptionConfigs();
115     }
116 
117     public ExceptionConfig findException(Class type) {
118         initExceptionConfigs();
119         return super.findException(type);
120     }
121 
122     public ActionForward getInputForward() {
123         throw new UnsupportedOperationException("NYI");
124     }
125 
126     public ModuleConfig getModuleConfig() {
127         if (moduleConfig == null) {
128             moduleConfig = strutsFactory.createModuleConfig(delegate.getPackageName());
129         }
130 
131         return moduleConfig;
132     }
133 
134     public void setModuleConfig(ModuleConfig moduleConfig) {
135         throw new UnsupportedOperationException("Not implemented - immutable");
136     }
137 
138     public String getAttribute() {
139         return attribute;
140     }
141 
142     public void setAttribute(String attribute) {
143         this.attribute = attribute;
144     }
145 
146     public String getForward() {
147         throw new UnsupportedOperationException("NYI");
148     }
149 
150     public void setForward(String forward) {
151         throw new UnsupportedOperationException("Not implemented - immutable");
152     }
153 
154     public String getInclude() {
155         throw new UnsupportedOperationException("NYI");
156     }
157 
158     public void setInclude(String include) {
159         throw new UnsupportedOperationException("Not implemented - immutable");
160     }
161 
162     public String getInput() {
163         throw new UnsupportedOperationException("NYI");
164     }
165 
166     public void setInput(String input) {
167         throw new UnsupportedOperationException("Not implemented - immutable");
168     }
169 
170     public String getMultipartClass() {
171         throw new UnsupportedOperationException("NYI");
172     }
173 
174     public void setMultipartClass(String multipartClass) {
175         throw new UnsupportedOperationException("Not implemented - immutable");
176     }
177 
178     public String getName() {
179         // Note: in Struts, this is a name reference to a form bean defined in the config file.
180         throw new UnsupportedOperationException("NYI");
181     }
182 
183     public void setName(String name) {
184         throw new UnsupportedOperationException("Not implemented - immutable");
185     }
186 
187     public String getParameter() {
188         throw new UnsupportedOperationException("NYI");
189     }
190 
191     public void setParameter(String parameter) {
192         throw new UnsupportedOperationException("Not implemented - immutable");
193     }
194 
195     public String getPath() {
196         return actionPath;
197     }
198 
199     public void setPath(String path) {
200         throw new UnsupportedOperationException("Not implemented - immutable");
201     }
202 
203     public String getPrefix() {
204         throw new UnsupportedOperationException("NYI");
205     }
206 
207     public void setPrefix(String prefix) {
208         throw new UnsupportedOperationException("Not implemented - immutable");
209     }
210 
211     public String getRoles() {
212         throw new UnsupportedOperationException("NYI");
213     }
214 
215     public void setRoles(String roles) {
216         throw new UnsupportedOperationException("Not implemented - immutable");
217     }
218 
219     public String[] getRoleNames() {
220         throw new UnsupportedOperationException("NYI");
221     }
222 
223     public String getScope() {
224         throw new UnsupportedOperationException("Not implemented - immutable");
225     }
226 
227     public void setScope(String scope) {
228         throw new UnsupportedOperationException("NYI");
229     }
230 
231     public String getSuffix() {
232         throw new UnsupportedOperationException("NYI");
233     }
234 
235     public void setSuffix(String suffix) {
236         throw new UnsupportedOperationException("Not implemented - immutable");
237     }
238 
239     public String getType() {
240         throw new UnsupportedOperationException("NYI");
241     }
242 
243     public void setType(String type) {
244         throw new UnsupportedOperationException("Not implemented - immutable");
245     }
246 
247     public boolean getUnknown() {
248         throw new UnsupportedOperationException("NYI");
249     }
250 
251     public void setUnknown(boolean unknown) {
252         throw new UnsupportedOperationException("Not implemented - immutable");
253     }
254 
255     public boolean getValidate() {
256         throw new UnsupportedOperationException("NYI");
257     }
258 
259     public void setValidate(boolean validate) {
260         throw new UnsupportedOperationException("Not implemented - immutable");
261     }
262 
263     public void removeExceptionConfig(ExceptionConfig config) {
264         throw new UnsupportedOperationException("Not implemented - immutable");
265     }
266 
267     public void removeForwardConfig(ForwardConfig config) {
268         throw new UnsupportedOperationException("Not implemented - immutable");
269     }
270 
271     public void addExceptionConfig(ExceptionConfig config) {
272         throw new UnsupportedOperationException("Not implemented - immutable");
273     }
274 
275     public void addForwardConfig(ForwardConfig config) {
276         throw new UnsupportedOperationException("Not implemented - immutable");
277     }
278 
279     public String toString() {
280         return "wrapper -> " + delegate.toString();
281     }
282 }