Author: apetrelli Date: Mon Dec 18 08:53:28 2006 New Revision: 488338 URL: http://svn.apache.org/viewvc?view=rev&rev=488338 Log: SB-101 First attempt to create a mutable keyed DefinitionsFactory container.
Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java?view=auto&rev=488338 ============================================================================== --- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java (added) +++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java Mon Dec 18 08:53:28 2006 @@ -0,0 +1,67 @@ +package org.apache.tiles.impl.mgmt; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.tiles.TilesException; +import org.apache.tiles.context.TilesRequestContext; +import org.apache.tiles.definition.ComponentDefinition; +import org.apache.tiles.definition.DefinitionsFactory; +import org.apache.tiles.definition.DefinitionsFactoryException; +import org.apache.tiles.impl.KeyedDefinitionsFactoryTilesContainer; +import org.apache.tiles.mgmt.MutableTilesContainer; +import org.apache.tiles.mgmt.TileDefinition; + +public class CachedKeyedDefinitionsFactoryTilesContainerFactory extends + KeyedDefinitionsFactoryTilesContainer implements MutableTilesContainer { + + private DefinitionManager mgr = new DefinitionManager(); + + private Map<String, DefinitionManager> key2definitionManager + = new HashMap<String, DefinitionManager>(); + + public void register(TileDefinition definition) + throws TilesException { + ComponentDefinition def = new ComponentDefinition(definition); + mgr.addDefinition(def); + } + + @Override + protected ComponentDefinition getDefinition(String definition, + TilesRequestContext context) + throws DefinitionsFactoryException { + return mgr.getDefinition(definition, context); + } + + @Override + public DefinitionsFactory getDefinitionsFactory() { + return mgr.getFactory(); + } + + @Override + public DefinitionsFactory getDefinitionsFactory(String key) { + DefinitionsFactory factory = key2definitionsFactory.get(key); + if (factory == null) { + factory = mgr.getFactory(); + } + + return factory; + } + + @Override + public void setDefinitionsFactory(DefinitionsFactory definitionsFactory) { + super.setDefinitionsFactory(definitionsFactory); + mgr.setFactory(definitionsFactory); + } + + @Override + public void setDefinitionsFactory(String key, DefinitionsFactory definitionsFactory, Map<String, String> initParameters) { + DefinitionManager mgr = key2definitionManager.get(key); + if (mgr == null) { + mgr = new DefinitionManager(); + key2definitionManager.put(key, mgr); + } + mgr.setFactory(definitionsFactory); + } + +}