Author: apetrelli Date: Sun Dec 17 08:51:13 2006 New Revision: 488007 URL: http://svn.apache.org/viewvc?view=rev&rev=488007 Log: SB-101 First attempt to create a keyed DefinitionsFactory container.
Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainer.java Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainer.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainer.java?view=auto&rev=488007 ============================================================================== --- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainer.java (added) +++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainer.java Sun Dec 17 08:51:13 2006 @@ -0,0 +1,67 @@ +package org.apache.tiles.impl; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.tiles.TilesException; +import org.apache.tiles.definition.DefinitionsFactory; + +public class KeyedDefinitionsFactoryTilesContainer extends BasicTilesContainer { + + protected Map<String, DefinitionsFactory> key2definitionsFactory; + + protected Map<String, Map<String, String>> key2initParams; + + public KeyedDefinitionsFactoryTilesContainer() { + key2definitionsFactory = new HashMap<String, DefinitionsFactory>(); + key2initParams = new HashMap<String, Map<String,String>>(); + } + + @Override + public void init(Map<String, String> initParameters) throws TilesException { + super.init(initParameters); + + for (Map.Entry<String, DefinitionsFactory> entry: + key2definitionsFactory.entrySet()) { + String key = entry.getKey(); + initializeDefinitionsFactory(entry.getValue(), + getResourceString(initParameters), key2initParams.get(key)); + } + } + + /** + * Standard Getter + * + * @return the definitions factory used by this container. + */ + public DefinitionsFactory getDefinitionsFactory(String key) { + DefinitionsFactory retValue = null; + + if (key != null) { + retValue = key2definitionsFactory.get(key); + } + if (retValue == null) { + retValue = getDefinitionsFactory(); + } + + return retValue; + } + + /** + * Set the definitions factory. This method first ensures + * that the container has not yet been initialized. + * + * @param definitionsFactory the definitions factory for this instance. + */ + public void setDefinitionsFactory(String key, + DefinitionsFactory definitionsFactory, + Map<String, String> initParameters) { + if (key != null) { + checkInit(); + key2definitionsFactory.put(key, definitionsFactory); + key2initParams.put(key, initParameters); + } else { + setDefinitionsFactory(definitionsFactory); + } + } +}