/** * <p> Set an arbitary key/value pair which can be retrieved by this * config class. This facility should eliminate many use cases for * subclassing <code>*Config</code> classes by providing a mechanism to * pass any amount of arbitrary configuration information into an config * class. <p /> This method must not be called after configuration is * complete, or an <code>IllegalStateException</code> will be thrown.</p> * * <p><b>Example</b> * <code><pre> * <action path="/example" type="com.example.MyAction"> * <set-property key="foo" property="bar" /> * </action> * </pre></code> * </p> * * @param key the key by which this value will be retrieved * @param value the value to store with the supplied key * @throws IllegalStateException if this module configuration has been * frozen * @since Struts 1.3 */ public void setProperty(String key, String value) { throwIfConfigured(); properties.setProperty(key, value); }
/** * <p>Compare the properties of this config with that of the given and * copy those that are not present. This method is used by subclasses * that support configuration inheritance.</p> * * @param baseConfig The config object to copy properties from. */ protected void inheritProperties(BaseConfig baseConfig) { throwIfConfigured(); // Inherit forward properties Properties baseProperties = baseConfig.getProperties(); Enumeration keys = baseProperties.propertyNames(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); // Check if we have this property before copying it String value = this.getProperty(key); if (value == null) { value = baseProperties.getProperty(key); setProperty(key, value); } } }