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);
}
/**