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();