You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ap...@apache.org on 2006/12/19 14:21:24 UTC

svn commit: r488668 - in /struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles: factory/ impl/mgmt/

Author: apetrelli
Date: Tue Dec 19 05:21:23 2006
New Revision: 488668

URL: http://svn.apache.org/viewvc?view=rev&rev=488668
Log:
SB-101
Added container factories, and a bit of refactoring.

Added:
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java   (with props)
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingKeyedDefinitionsFactoryTilesContainerFactory.java
      - copied, changed from r488379, struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java
Removed:
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java
Modified:
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java

Added: 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=auto&rev=488668
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java Tue Dec 19 05:21:23 2006
@@ -0,0 +1,82 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.tiles.factory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.definition.DefinitionsFactory;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.impl.KeyedDefinitionsFactoryTilesContainer;
+import org.apache.tiles.impl.mgmt.CachingKeyedDefinitionsFactoryTilesContainerFactory;
+import org.apache.tiles.mgmt.MutableTilesContainer;
+
+public class KeyedDefinitionsFactoryTilesContainerFactory extends
+		TilesContainerFactory {
+    
+    public static final String CONTAINER_KEYS_INIT_PARAM =
+        "org.apache.tiles.CONTAINER_KEYS";
+
+    @Override
+    public MutableTilesContainer createMutableTilesContainer(Object context) throws TilesException {
+        CachingKeyedDefinitionsFactoryTilesContainerFactory container =
+            new CachingKeyedDefinitionsFactoryTilesContainerFactory();
+        return container;
+    }
+
+    @Override
+    public TilesContainer createTilesContainer(Object context) throws TilesException {
+        KeyedDefinitionsFactoryTilesContainer container =
+            new KeyedDefinitionsFactoryTilesContainer();
+        return container;
+    }
+    
+    @Override
+    protected void storeContainerDependencies(Object context,
+            BasicTilesContainer container) throws TilesException {
+        super.storeContainerDependencies(context, container);
+        String keysString = getInitParameter(context,
+                CONTAINER_KEYS_INIT_PARAM);
+        if (keysString != null
+                && container instanceof KeyedDefinitionsFactoryTilesContainer) {
+            String[] keys = keysString.split(",");
+            Map<String, String> initParams = new HashMap<String, String>();
+            for (int i=0; i < keys.length; i++) {
+                String param = getInitParameter(context,
+                        BasicTilesContainer.DEFINITIONS_CONFIG + "@" + keys[i]);
+                if (param != null) {
+                    initParams.put(BasicTilesContainer.DEFINITIONS_CONFIG,
+                            param);
+                }
+
+                DefinitionsFactory defsFactory =
+                    (DefinitionsFactory) createFactory(context,
+                            DEFINITIONS_FACTORY_INIT_PARAM, defaults);
+                ((KeyedDefinitionsFactoryTilesContainer) container)
+                        .setDefinitionsFactory(keys[i], defsFactory,
+                                initParams);
+            }
+        }
+    }
+}

Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

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=488668&r1=488667&r2=488668
==============================================================================
--- 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 05:21:23 2006
@@ -76,7 +76,7 @@
         DEFAULTS.put(PREPARER_FACTORY_INIT_PARAM, BasicPreparerFactory.class.getName());
     }
     
-    private Map<String, String> defaults =
+    protected Map<String, String> defaults =
         new HashMap<String, String>(DEFAULTS);
 
     /**
@@ -159,6 +159,13 @@
     protected void initializeContainer(Object context,
                                     BasicTilesContainer container)
         throws TilesException {
+        storeContainerDependencies(context, container);
+        container.init(getInitParameterMap(context));
+
+    }
+    
+    protected void storeContainerDependencies(Object context,
+            BasicTilesContainer container) throws TilesException {
 
         TilesContextFactory contextFactory =
             (TilesContextFactory) createFactory(context,
@@ -179,9 +186,6 @@
         container.setContextFactory(contextFactory);
         container.setPreparerFactory(prepFactory);
         container.setApplicationContext(tilesContext);
-
-        container.init(getInitParameterMap(context));
-
     }
 
 
@@ -227,8 +231,8 @@
             : factoryName.toString();
     }
 
-    private static String getInitParameter(Object context, String parameterName)
-        throws TilesException {
+    protected static String getInitParameter(Object context,
+            String parameterName) throws TilesException {
         Object value;
         try {
             Class contextClass = context.getClass();

Copied: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingKeyedDefinitionsFactoryTilesContainerFactory.java (from r488379, 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/CachingKeyedDefinitionsFactoryTilesContainerFactory.java?view=diff&rev=488668&p1=struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java&r1=488379&p2=struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingKeyedDefinitionsFactoryTilesContainerFactory.java&r2=488668
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachedKeyedDefinitionsFactoryTilesContainerFactory.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingKeyedDefinitionsFactoryTilesContainerFactory.java Tue Dec 19 05:21:23 2006
@@ -34,7 +34,7 @@
 import org.apache.tiles.mgmt.MutableTilesContainer;
 import org.apache.tiles.mgmt.TileDefinition;
 
-public class CachedKeyedDefinitionsFactoryTilesContainerFactory extends
+public class CachingKeyedDefinitionsFactoryTilesContainerFactory extends
         KeyedDefinitionsFactoryTilesContainer implements MutableTilesContainer {
 
     private DefinitionManager mgr = new DefinitionManager();