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 }