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);
+    }
+
+}


Reply via email to