View Javadoc

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