Author: ddewolf Date: Tue Dec 19 06:12:02 2006 New Revision: 488686 URL: http://svn.apache.org/viewvc?view=rev&rev=488686 Log: Small tweaks to the defaults to make it more obvious what they provide and how they interact with the context.
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java?view=diff&rev=488686&r1=488685&r2=488686 ============================================================================== --- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java (original) +++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java Tue Dec 19 06:12:02 2006 @@ -71,8 +71,8 @@ } DefinitionsFactory defsFactory = - (DefinitionsFactory) createFactory(context, - DEFINITIONS_FACTORY_INIT_PARAM, defaults); + (DefinitionsFactory) createFactory(getInitParameterMap(context), + DEFINITIONS_FACTORY_INIT_PARAM); ((KeyedDefinitionsFactoryTilesContainer) container) .setDefinitionsFactory(keys[i], defsFactory, initParams); Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java?view=diff&rev=488686&r1=488685&r2=488686 ============================================================================== --- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java (original) +++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java Tue Dec 19 06:12:02 2006 @@ -45,8 +45,8 @@ * This factory creates a default implementation of * the container, initializes, and puts it into service. * - * @since 2.0 * @version $Rev$ $Date$ + * @since 2.0 */ public class TilesContainerFactory { @@ -75,8 +75,8 @@ DEFAULTS.put(DEFINITIONS_FACTORY_INIT_PARAM, UrlDefinitionsFactory.class.getName()); DEFAULTS.put(PREPARER_FACTORY_INIT_PARAM, BasicPreparerFactory.class.getName()); } - - protected Map<String, String> defaults = + + protected Map<String, String> defaultConfiguration = new HashMap<String, String>(DEFAULTS); /** @@ -115,11 +115,13 @@ * @throws TilesException if an error occurs creating the factory. */ public static TilesContainerFactory getFactory(Object context, - Map<String, String> defaults) throws TilesException { + Map<String, String> defaults) + throws TilesException { + Map<String, String> stuff = getInitParameterMap(context); TilesContainerFactory factory = - (TilesContainerFactory) TilesContainerFactory.createFactory(context, - CONTAINER_FACTORY_INIT_PARAM, defaults); - factory.setDefaults(defaults); + (TilesContainerFactory) TilesContainerFactory.createFactory(stuff, + CONTAINER_FACTORY_INIT_PARAM); + factory.setDefaultConfiguration(defaults); return factory; } @@ -131,15 +133,15 @@ return createTilesContainer(context); } } - - public void setDefaults(Map<String, String> defaults) { - if (defaults != null) { - this.defaults.putAll(defaults); + + public void setDefaultConfiguration(Map<String, String> defaultConfiguration) { + if (defaultConfiguration != null) { + this.defaultConfiguration.putAll(defaultConfiguration); } } - + public void setDefaultValue(String key, String value) { - this.defaults.put(key, value); + this.defaultConfiguration.put(key, value); } public TilesContainer createTilesContainer(Object context) @@ -157,27 +159,27 @@ } protected void initializeContainer(Object context, - BasicTilesContainer container) + BasicTilesContainer container) throws TilesException { storeContainerDependencies(context, container); container.init(getInitParameterMap(context)); } - + protected void storeContainerDependencies(Object context, - BasicTilesContainer container) throws TilesException { + BasicTilesContainer container) throws TilesException { TilesContextFactory contextFactory = - (TilesContextFactory) createFactory(context, - CONTEXT_FACTORY_INIT_PARAM, defaults); + (TilesContextFactory) createFactory(defaultConfiguration, + CONTEXT_FACTORY_INIT_PARAM); DefinitionsFactory defsFactory = - (DefinitionsFactory) createFactory(context, - DEFINITIONS_FACTORY_INIT_PARAM, defaults); + (DefinitionsFactory) createFactory(defaultConfiguration, + DEFINITIONS_FACTORY_INIT_PARAM); PreparerFactory prepFactory = - (PreparerFactory) createFactory(context, - PREPARER_FACTORY_INIT_PARAM, defaults); + (PreparerFactory) createFactory(defaultConfiguration, + PREPARER_FACTORY_INIT_PARAM); TilesApplicationContext tilesContext = contextFactory.createApplicationContext(context); @@ -189,50 +191,22 @@ } - protected Map<String, String> getInitParameterMap(Object context) + protected static Object createFactory(Map<String, String> configuration, String initParameterName) throws TilesException { - Map<String, String> initParameters = new HashMap<String, String>(); - Class contextClass = context.getClass(); - try { - Method method = contextClass.getMethod("getInitParameterNames"); - Enumeration e = (Enumeration) method.invoke(context); - - method = contextClass.getMethod("getInitParameter", String.class); - while (e.hasMoreElements()) { - String key = (String) e.nextElement(); - initParameters.put(key, (String) method.invoke(context, key)); - } - } catch (Exception e) { - throw new TilesException("Unable to retrieve init parameters." + - " Is this context a ServletContext, PortletContext," + - " or similar object?", e); - } - return initParameters; - } - - - protected static Object createFactory(Object context, - String initParameterName, Map<String, String> defaults) - throws TilesException { - String factoryName = resolveFactoryName(context, initParameterName, - defaults); + String factoryName = resolveFactoryName(configuration, initParameterName); return ClassUtil.instantiate(factoryName); } - protected static String resolveFactoryName(Object context, - String parameterName, Map<String, String> defaults) + protected static String resolveFactoryName(Map<String, String> configuration, String parameterName) throws TilesException { - Object factoryName = getInitParameter(context, parameterName); - if (factoryName == null && defaults != null) { - factoryName = defaults.get(parameterName); - } + Object factoryName = configuration.get(parameterName); return factoryName == null ? DEFAULTS.get(parameterName) : factoryName.toString(); } protected static String getInitParameter(Object context, - String parameterName) throws TilesException { + String parameterName) throws TilesException { Object value; try { Class contextClass = context.getClass(); @@ -245,4 +219,27 @@ } return value == null ? null : value.toString(); } + + protected static Map<String, String> getInitParameterMap(Object context) + throws TilesException { + Map<String, String> initParameters = new HashMap<String, String>(); + Class contextClass = context.getClass(); + try { + Method method = contextClass.getMethod("getInitParameterNames"); + Enumeration e = (Enumeration) method.invoke(context); + + method = contextClass.getMethod("getInitParameter", String.class); + while (e.hasMoreElements()) { + String key = (String) e.nextElement(); + initParameters.put(key, (String) method.invoke(context, key)); + } + } catch (Exception e) { + throw new TilesException("Unable to retrieve init parameters." + + " Is this context a ServletContext, PortletContext," + + " or similar object?", e); + } + return initParameters; + } + + }