1 /*
2 * $Id$
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21 package org.apache.struts.config;
22
23 import java.io.Serializable;
24
25 /**
26 * <p>The collection of static configuration information that describes a
27 * Struts-based module. Multiple modules are identified by a <em>prefix</em>
28 * at the beginning of the context relative portion of the request URI. If no
29 * module prefix can be matched, the default configuration (with a prefix
30 * equal to a zero-length string) is selected, which is elegantly backwards
31 * compatible with the previous Struts behavior that only supported one
32 * module.</p>
33 *
34 * @version $Rev$ $Date: 2005-08-06 04:12:10 -0400 (Sat, 06 Aug 2005)
35 * $
36 * @since Struts 1.1
37 */
38 public interface ModuleConfig extends Serializable {
39 /**
40 * <p> Has this module been completely configured yet. Once this flag has
41 * been set, any attempt to modify the configuration will return an
42 * IllegalStateException. </p>
43 */
44 boolean getConfigured();
45
46 /**
47 * <p> The controller configuration object for this module. </p>
48 */
49 ControllerConfig getControllerConfig();
50
51 /**
52 * <p> The controller configuration object for this module. </p>
53 *
54 * @param cc The controller configuration object for this module.
55 */
56 void setControllerConfig(ControllerConfig cc);
57
58 /**
59 * <p> The prefix of the context-relative portion of the request URI, used
60 * to select this configuration versus others supported by the controller
61 * servlet. A configuration with a prefix of a zero-length String is the
62 * default configuration for this web module. </p>
63 */
64 String getPrefix();
65
66 /**
67 * <p> The prefix of the context-relative portion of the request URI, used
68 * to select this configuration versus others supported by the controller
69 * servlet. A configuration with a prefix of a zero-length String is the
70 * default configuration for this web module. </p>
71 *
72 * @param prefix The prefix of the context-relative portion of the request
73 * URI.
74 */
75 public void setPrefix(String prefix);
76
77 /**
78 * <p> The default class name to be used when creating action form bean
79 * instances. </p>
80 */
81 String getActionFormBeanClass();
82
83 /**
84 * <p> The default class name to be used when creating action form bean
85 * instances. </p>
86 *
87 * @param actionFormBeanClass default class name to be used when creating
88 * action form bean instances.
89 */
90 void setActionFormBeanClass(String actionFormBeanClass);
91
92 /**
93 * <p> The default class name to be used when creating action mapping
94 * instances. </p>
95 */
96 String getActionMappingClass();
97
98 /**
99 * <p> The default class name to be used when creating action mapping
100 * instances. </p>
101 *
102 * @param actionMappingClass default class name to be used when creating
103 * action mapping instances.
104 */
105 void setActionMappingClass(String actionMappingClass);
106
107 /**
108 * <p> Add a new <code>ActionConfig</code> instance to the set associated
109 * with this module. </p>
110 *
111 * @param config The new configuration instance to be added
112 * @throws IllegalStateException if this module configuration has been
113 * frozen
114 */
115 void addActionConfig(ActionConfig config);
116
117 /**
118 * <p> Add a new <code>ExceptionConfig</code> instance to the set
119 * associated with this module. </p>
120 *
121 * @param config The new configuration instance to be added
122 * @throws IllegalStateException if this module configuration has been
123 * frozen
124 */
125 void addExceptionConfig(ExceptionConfig config);
126
127 /**
128 * <p> Add a new <code>FormBeanConfig</code> instance to the set
129 * associated with this module. </p>
130 *
131 * @param config The new configuration instance to be added
132 * @throws IllegalStateException if this module configuration has been
133 * frozen
134 */
135 void addFormBeanConfig(FormBeanConfig config);
136
137 /**
138 * <p> The default class name to be used when creating action forward
139 * instances. </p>
140 */
141 String getActionForwardClass();
142
143 /**
144 * <p> The default class name to be used when creating action forward
145 * instances. </p>
146 *
147 * @param actionForwardClass default class name to be used when creating
148 * action forward instances.
149 */
150 void setActionForwardClass(String actionForwardClass);
151
152 /**
153 * <p> Add a new <code>ForwardConfig</code> instance to the set of global
154 * forwards associated with this module. </p>
155 *
156 * @param config The new configuration instance to be added
157 * @throws IllegalStateException if this module configuration has been
158 * frozen
159 */
160 void addForwardConfig(ForwardConfig config);
161
162 /**
163 * <p> Add a new <code>MessageResourcesConfig</code> instance to the set
164 * associated with this module. </p>
165 *
166 * @param config The new configuration instance to be added
167 * @throws IllegalStateException if this module configuration has been
168 * frozen
169 */
170 void addMessageResourcesConfig(MessageResourcesConfig config);
171
172 /**
173 * <p> Add a newly configured {@link PlugInConfig} instance to the set of
174 * plug-in Actions for this module. </p>
175 *
176 * @param plugInConfig The new configuration instance to be added
177 */
178 void addPlugInConfig(PlugInConfig plugInConfig);
179
180 /**
181 * <p> Return the action configuration for the specified path, if any;
182 * otherwise return <code>null</code>. </p>
183 *
184 * @param path Path of the action configuration to return
185 */
186 ActionConfig findActionConfig(String path);
187
188 /**
189 * <p> Return the action configurations for this module. If there are
190 * none, a zero-length array is returned. </p>
191 */
192 ActionConfig[] findActionConfigs();
193
194 /**
195 * <p>Returns the action configuration for the specifed action
196 * action identifier.</p>
197 *
198 * @param actionId the action identifier
199 * @return the action config if found; otherwise <code>null</code>
200 * @see ActionConfig#getActionId()
201 * @since Struts 1.3.6
202 */
203 ActionConfig findActionConfigId(String actionId);
204
205 /**
206 * <p> Return the exception configuration for the specified type, if any;
207 * otherwise return <code>null</code>. </p>
208 *
209 * @param type Exception class name to find a configuration for
210 */
211 ExceptionConfig findExceptionConfig(String type);
212
213 /**
214 * <p> Perform a recursive search for an ExceptionConfig registered for
215 * this class, or for any superclass. This should only be used in the
216 * case when an <code>ActionConfig</code> is not available; otherwise, use
217 * <code>ActionConfig.findException(Class)</code> to preserve the search
218 * order. </p>
219 *
220 * @param type Exception class name to find a configuration for
221 * @see ActionConfig findException(Class)
222 */
223 ExceptionConfig findException(Class<?> type);
224
225 /**
226 * <p> Return the exception configurations for this module. If there are
227 * none, a zero-length array is returned. </p>
228 */
229 ExceptionConfig[] findExceptionConfigs();
230
231 /**
232 * <p> Return the form bean configuration for the specified key, if any;
233 * otherwise return <code>null</code>.
234 *
235 * @param name Name of the form bean configuration to return
236 */
237 FormBeanConfig findFormBeanConfig(String name);
238
239 /**
240 * <p> Return the form bean configurations for this module. If there are
241 * none, a zero-length array is returned. </p>
242 */
243 FormBeanConfig[] findFormBeanConfigs();
244
245 /**
246 * <p> Return the forward configuration for the specified key, if any;
247 * otherwise return <code>null</code>. </p>
248 *
249 * @param name Name of the forward configuration to return
250 */
251 ForwardConfig findForwardConfig(String name);
252
253 /**
254 * <p> Return the form bean configurations for this module. If there are
255 * none, a zero-length array is returned. </p>
256 */
257 ForwardConfig[] findForwardConfigs();
258
259 /**
260 * <p> Return the message resources configuration for the specified key,
261 * if any; otherwise return <code>null</code>. </p>
262 *
263 * @param key Key of the data source configuration to return
264 */
265 MessageResourcesConfig findMessageResourcesConfig(String key);
266
267 /**
268 * <p> Return the message resources configurations for this module. If
269 * there are none, a zero-length array is returned. </p>
270 */
271 MessageResourcesConfig[] findMessageResourcesConfigs();
272
273 /**
274 * <p> Return the configured plug-in actions for this module. If there
275 * are none, a zero-length array is returned. </p>
276 */
277 PlugInConfig[] findPlugInConfigs();
278
279 /**
280 * <p> Freeze the configuration of this module. After this method
281 * returns, any attempt to modify the configuration will return an
282 * IllegalStateException. </p>
283 */
284 void freeze();
285
286 /**
287 * <p> Remove the specified action configuration instance. </p>
288 *
289 * @param config ActionConfig instance to be removed
290 * @throws IllegalStateException if this module configuration has been
291 * frozen
292 */
293 void removeActionConfig(ActionConfig config);
294
295 /**
296 * <p> Remove the specified exception configuration instance. </p>
297 *
298 * @param config ActionConfig instance to be removed
299 * @throws IllegalStateException if this module configuration has been
300 * frozen
301 */
302 void removeExceptionConfig(ExceptionConfig config);
303
304 /**
305 * <p> Remove the specified form bean configuration instance. </p>
306 *
307 * @param config FormBeanConfig instance to be removed
308 * @throws IllegalStateException if this module configuration has been
309 * frozen
310 */
311 void removeFormBeanConfig(FormBeanConfig config);
312
313 /**
314 * <p> Remove the specified forward configuration instance. </p>
315 *
316 * @param config ForwardConfig instance to be removed
317 * @throws IllegalStateException if this module configuration has been
318 * frozen
319 */
320 void removeForwardConfig(ForwardConfig config);
321
322 /**
323 * <p> Remove the specified message resources configuration instance.
324 * </p>
325 *
326 * @param config MessageResourcesConfig instance to be removed
327 * @throws IllegalStateException if this module configuration has been
328 * frozen
329 */
330 void removeMessageResourcesConfig(MessageResourcesConfig config);
331 }