Author: apetrelli
Date: Wed Apr  2 12:37:58 2008
New Revision: 644017

URL: http://svn.apache.org/viewvc?rev=644017&view=rev
Log:
TILES-252
Added setters where needed.

Modified:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/el/ELAttributeEvaluatorTest.java

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
 Wed Apr  2 12:37:58 2008
@@ -26,6 +26,7 @@
 import org.apache.tiles.TilesApplicationContext;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -60,7 +61,16 @@
     /**
      * The Tiles context factories composing the chain.
      */
-    private TilesContextFactory[] factories;
+    private List<TilesContextFactory> factories;
+
+    /**
+     * Sets the factories to be used.
+     *
+     * @param factories The factories to be used.
+     */
+    public void setFactories(List<TilesContextFactory> factories) {
+        this.factories = factories;
+    }
 
     /** [EMAIL PROTECTED] */
     @SuppressWarnings("unchecked")
@@ -74,15 +84,14 @@
             classNames = DEFAULT_FACTORY_CLASS_NAMES;
         }
 
-        List<TilesContextFactory> factoryList =
-            new ArrayList<TilesContextFactory>();
+        factories = new ArrayList<TilesContextFactory>();
         for (int i = 0; i < classNames.length; i++) {
             try {
                 Class<TilesContextFactory> clazz = 
(Class<TilesContextFactory>) Class
                         .forName(classNames[i]);
                 if (TilesContextFactory.class.isAssignableFrom(clazz)) {
                     TilesContextFactory factory = clazz.newInstance();
-                    factoryList.add(factory);
+                    factories.add(factory);
                 } else {
                     throw new IllegalArgumentException("The class "
                             + classNames[i]
@@ -107,16 +116,15 @@
                                 + " default constructor", e);
             }
         }
-        factories = new TilesContextFactory[factoryList.size()];
-        factoryList.toArray(factories);
     }
 
     /** [EMAIL PROTECTED] */
     public TilesApplicationContext createApplicationContext(Object context) {
         TilesApplicationContext retValue = null;
 
-        for (int i = 0; i < factories.length && retValue == null; i++) {
-            retValue = factories[i].createApplicationContext(context);
+        for (Iterator<TilesContextFactory> factoryIt = factories.iterator(); 
factoryIt
+                .hasNext() && retValue == null;) {
+            retValue = factoryIt.next().createApplicationContext(context);
         }
 
         if (retValue == null) {
@@ -132,8 +140,10 @@
             TilesApplicationContext context, Object... requestItems) {
         TilesRequestContext retValue = null;
 
-        for (int i = 0; i < factories.length && retValue == null; i++) {
-            retValue = factories[i].createRequestContext(context, 
requestItems);
+        for (Iterator<TilesContextFactory> factoryIt = factories.iterator(); 
factoryIt
+                .hasNext() && retValue == null;) {
+            retValue = factoryIt.next().createRequestContext(context,
+                    requestItems);
         }
 
         if (retValue == null) {

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
 Wed Apr  2 12:37:58 2008
@@ -71,6 +71,15 @@
 
     /**
      * Contains the URL objects identifying where configuration data is found.
+     *
+     * @since 2.1.0
+     */
+    protected List<URL> sourceURLs;
+
+    /**
+     * Contains the URL objects identifying where configuration data is found.
+     *
+     * @deprecated Use [EMAIL PROTECTED] #sourceURLs}.
      */
     protected List<Object> sources;
 
@@ -111,7 +120,7 @@
      * Creates a new instance of UrlDefinitionsFactory.
      */
     public UrlDefinitionsFactory() {
-        sources = new ArrayList<Object>();
+        sourceURLs = new ArrayList<URL>();
         lastModifiedDates = new HashMap<String, Long>();
         processedLocales = new ArrayList<Locale>();
     }
@@ -122,6 +131,33 @@
     }
 
     /**
+     * Sets the source URLs to use.
+     *
+     * @param sourceURLs The source URLs.
+     */
+    public void setSourceURLs(List<URL> sourceURLs) {
+        this.sourceURLs = sourceURLs;
+    }
+
+    /**
+     * Sets the definitions reader that will read the URLs.
+     *
+     * @param reader The definitions reader.
+     */
+    public void setReader(DefinitionsReader reader) {
+        this.reader = reader;
+    }
+
+    /**
+     * Sets the locale resolver to use.
+     *
+     * @param localeResolver The locale resolver.
+     */
+    public void setLocaleResolver(LocaleResolver localeResolver) {
+        this.localeResolver = localeResolver;
+    }
+
+    /**
      * Initializes the DefinitionsFactory and its subcomponents.
      * <p/>
      * Implementations may support configuration properties to be passed in via
@@ -218,7 +254,7 @@
                 "Source object must be an URL");
         }
 
-        sources.add(source);
+        sourceURLs.add((URL) source);
     }
 
     /**
@@ -248,8 +284,7 @@
         Map<String, Definition> localeDefsMap = new HashMap<String, 
Definition>();
         for (Object postfix : postfixes) {
             // For each postfix, all the sources must be loaded.
-            for (Object source : sources) {
-                URL url = (URL) source;
+            for (URL url : sourceURLs) {
                 String path = url.toExternalForm();
 
                 String newPath = concatPostfix(path, (String) postfix);
@@ -369,8 +404,7 @@
         }
 
         try {
-            for (Object source1 : sources) {
-                URL source = (URL) source1;
+            for (URL source : sourceURLs) {
                 URLConnection connection = source.openConnection();
                 connection.connect();
                 lastModifiedDates.put(source.toExternalForm(),
@@ -499,7 +533,7 @@
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Adding resource '" + resourceUrl + "' to 
definitions factory.");
                     }
-                    sources.add(resourceUrl);
+                    sourceURLs.add(resourceUrl);
                 } else {
                     LOG.warn("Unable to find configured definition '" + 
resource + "'");
                 }

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
 Wed Apr  2 12:37:58 2008
@@ -20,6 +20,8 @@
  */
 package org.apache.tiles.evaluator;
 
+import java.util.Map;
+
 import org.apache.tiles.Attribute;
 import org.apache.tiles.context.TilesRequestContext;
 
@@ -30,6 +32,13 @@
  * @since 2.1.0
  */
 public interface AttributeEvaluator {
+
+    /**
+     * Initializes the attribute evaluator.
+     *
+     * @param initParameters The initialization parameters.
+     */
+    void init(Map<String, String> initParameters);
 
     /**
      * Evaluates an expression.

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
 Wed Apr  2 12:37:58 2008
@@ -20,6 +20,8 @@
  */
 package org.apache.tiles.evaluator.el;
 
+import java.util.Map;
+
 import javax.el.ArrayELResolver;
 import javax.el.CompositeELResolver;
 import javax.el.ELResolver;
@@ -32,7 +34,6 @@
 import org.apache.tiles.Attribute;
 import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.awareness.TilesApplicationContextAware;
-import org.apache.tiles.context.TilesContextFactory;
 import org.apache.tiles.context.TilesRequestContext;
 import org.apache.tiles.evaluator.AttributeEvaluator;
 
@@ -59,13 +60,6 @@
     protected TilesApplicationContext applicationContext;
 
     /**
-     * The Tiles context factory.
-     *
-     * @since 2.1.0
-     */
-    protected TilesContextFactory contextFactory;
-
-    /**
      * The EL expression factory.
      *
      * @since 2.1.0
@@ -77,7 +71,7 @@
      *
      * @since 2.1.0
      */
-    protected ELResolver defaultResolver;
+    protected ELResolver resolver;
 
     /**
      * Constructor.
@@ -85,9 +79,13 @@
      * @since 2.1.0
      */
     public ELAttributeEvaluator() {
+    }
+
+    /** [EMAIL PROTECTED] */
+    public void init(Map<String, String> initParameters) {
         // FIXME Take a different strategy to hold the expression factory.
         expressionFactory = new ExpressionFactoryImpl();
-        defaultResolver = new CompositeELResolver() {
+        resolver = new CompositeELResolver() {
             {
                 add(new TilesContextELResolver());
                 add(new TilesContextBeanELResolver());
@@ -104,9 +102,27 @@
         this.applicationContext = applicationContext;
     }
 
+    /**
+     * Sets the expression factory to use.
+     *
+     * @param expressionFactory The expression factory.
+     */
+    public void setExpressionFactory(ExpressionFactory expressionFactory) {
+        this.expressionFactory = expressionFactory;
+    }
+
+    /**
+     * Sets the EL resolver to use.
+     *
+     * @param resolver The EL resolver.
+     */
+    public void setResolver(ELResolver resolver) {
+        this.resolver = resolver;
+    }
+
     /** [EMAIL PROTECTED] */
     public Object evaluate(String expression, TilesRequestContext request) {
-        SimpleContext context = new SimpleContext(defaultResolver);
+        SimpleContext context = new SimpleContext(resolver);
         context.putContext(TilesRequestContext.class, request);
         context.putContext(TilesApplicationContext.class,
                 applicationContext);

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java
 Wed Apr  2 12:37:58 2008
@@ -20,6 +20,8 @@
  */
 package org.apache.tiles.evaluator.impl;
 
+import java.util.Map;
+
 import org.apache.tiles.Attribute;
 import org.apache.tiles.context.TilesRequestContext;
 import org.apache.tiles.evaluator.AttributeEvaluator;
@@ -32,6 +34,11 @@
  * @since 2.1.0
  */
 public class DirectAttributeEvaluator implements AttributeEvaluator {
+
+    /** [EMAIL PROTECTED] */
+    public void init(Map<String, String> initParameters) {
+        // Does nothing.
+    }
 
     /** [EMAIL PROTECTED] */
     public Object evaluate(String expression, TilesRequestContext request) {

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
 Wed Apr  2 12:37:58 2008
@@ -20,6 +20,8 @@
  */
 package org.apache.tiles.factory;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.awareness.TilesApplicationContextAware;
@@ -106,6 +108,11 @@
         "org.apache.tiles.evaluator.AttributeEvaluator";
 
     /**
+     * The logging object.
+     */
+    private static final Log LOG = 
LogFactory.getLog(TilesContainerFactory.class);
+
+    /**
      * Default configuration parameters.
      */
     private static final Map<String, String> DEFAULTS =
@@ -250,11 +257,19 @@
             BasicTilesContainer container) {
         Map <String, String> initParameterMap;
 
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Initializing Tiles2 container. . .");
+        }
+
         initParameterMap = getInitParameterMap(context);
         Map<String, String> configuration = new HashMap<String, 
String>(defaultConfiguration);
         configuration.putAll(initParameterMap);
         storeContainerDependencies(context, initParameterMap, configuration, 
container);
         container.init(initParameterMap);
+
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Tiles2 container initialized");
+        }
     }
 
     /**
@@ -300,6 +315,8 @@
         if (evaluator instanceof TilesContainerAware) {
             ((TilesContainerAware) evaluator).setContainer(container);
         }
+
+        evaluator.init(configuration);
 
         if (rendererFactory instanceof TilesContextFactoryAware) {
             ((TilesContextFactoryAware) rendererFactory)

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
 Wed Apr  2 12:37:58 2008
@@ -137,12 +137,24 @@
     public void init(Map<String, String> initParameters) {
         checkInit();
         initialized = true;
-        if (LOG.isInfoEnabled()) {
-            LOG.info("Initializing Tiles2 container. . .");
-        }
 
         if (rendererFactory == null) {
             throw new IllegalStateException("RendererFactory not specified");
+        }
+        if (preparerFactory == null) {
+            throw new IllegalStateException("PreparerFactory not specified");
+        }
+        if (definitionsFactory == null) {
+            throw new IllegalStateException("DefinitionsFactory not 
specified");
+        }
+        if (evaluator == null) {
+            throw new IllegalStateException("AttributeEvaluator not 
specified");
+        }
+        if (contextFactory == null) {
+            throw new IllegalStateException("TilesContextFactory not 
specified");
+        }
+        if (context == null) {
+            throw new IllegalStateException("TilesApplicationContext not 
specified");
         }
     }
 

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
 Wed Apr  2 12:37:58 2008
@@ -129,6 +129,15 @@
                 .getName());
     }
 
+    /**
+     * Constructor.
+     *
+     * @since 2.1.0
+     */
+    public BasicRendererFactory() {
+        renderers = new HashMap<String, AttributeRenderer>();
+    }
+
     /** [EMAIL PROTECTED] */
     public void init(Map<String, String> parameters) {
         String defaultRendererParam = 
parameters.get(DEFAULT_RENDERER_INIT_PARAM);
@@ -153,7 +162,6 @@
             }
         }
 
-        renderers = new HashMap<String, AttributeRenderer>();
         for (Map.Entry<String, String> entry : completeParams.entrySet()) {
             AttributeRenderer renderer = (AttributeRenderer) ClassUtil
                     .instantiate(entry.getValue());
@@ -177,6 +185,27 @@
         }
 
         return retValue;
+    }
+
+    /**
+     * Sets the default renderer.
+     *
+     * @param renderer The default renderer.
+     * @since 2.1.0
+     */
+    public void setDefaultRenderer(AttributeRenderer renderer) {
+        this.defaultRenderer = renderer;
+    }
+
+    /**
+     * Registers a renderer.
+     *
+     * @param name The name of the renderer.
+     * @param renderer The renderer to register.
+     * @since 2.1.0
+     */
+    public void registerRenderer(String name, AttributeRenderer renderer) {
+        renderers.put(name, renderer);
     }
 
     /** [EMAIL PROTECTED] */

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/el/ELAttributeEvaluatorTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/el/ELAttributeEvaluatorTest.java?rev=644017&r1=644016&r2=644017&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/el/ELAttributeEvaluatorTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/el/ELAttributeEvaluatorTest.java
 Wed Apr  2 12:37:58 2008
@@ -69,6 +69,7 @@
         EasyMock.replay(request, applicationContext);
 
         evaluator.setApplicationContext(applicationContext);
+        evaluator.init(null);
     }
 
     /**


Reply via email to