You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by dd...@apache.org on 2006/10/31 19:21:53 UTC
svn commit: r469595 - in /struts/sandbox/trunk/tiles:
tiles-api/src/main/java/org/apache/tiles/
tiles-api/src/main/java/org/apache/tiles/spi/
tiles-api/src/test/java/org/apache/tiles/ tiles-core/
tiles-core/src/main/java/org/apache/tiles/ tiles-core/sr...
Author: ddewolf
Date: Tue Oct 31 10:21:51 2006
New Revision: 469595
URL: http://svn.apache.org/viewvc?view=rev&rev=469595
Log:
Cleaning tiles-api of implementation details; Begining to implement Container
Added:
struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java (contents, props changed)
- copied, changed from r469464, struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/TilesException.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java (with props)
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/
- copied from r469464, struts/sandbox/trunk/tiles/tiles-factory/src/main/java/org/apache/tiles/factory/
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java (contents, props changed)
- copied, changed from r469464, struts/sandbox/trunk/tiles/tiles-factory/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java
Removed:
struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesConfig.java
struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/spi/
struts/sandbox/trunk/tiles/tiles-api/src/test/java/org/apache/tiles/TilesConfigTest.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/TilesException.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/TilesContextAccess.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContextFactory.java
Modified:
struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java
struts/sandbox/trunk/tiles/tiles-core/pom.xml
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/BasicTilesContextFactory.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/ConfigurationNotSupportedException.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesListener.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/servlet/TilesServlet.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/InitDefinitionsTag.java
struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/util/TagUtils.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinition.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinitions.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestDigesterDefinitionsReader.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestReloadableDefinitionsFactory.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestTilesServlet.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestUrlDefinitionsFactory.java
Modified: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java (original)
+++ struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java Tue Oct 31 10:21:51 2006
@@ -32,9 +32,10 @@
* Initialize the container with the given
* configuration.
*
- * @param config
+ * @param context
*/
- void init(TilesConfig config);
+ void init(TilesApplicationContext context)
+ throws org.apache.tiles.TilesException;
/**
* Retrieve the containers context.
@@ -46,6 +47,6 @@
*
* @param request
*/
- void render(TilesRequestContext request);
+ void render(TilesRequestContext request) throws TilesException;
}
Copied: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java (from r469464, struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/TilesException.java)
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java?view=diff&rev=469595&p1=struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/TilesException.java&r1=469464&p2=struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java&r2=469595
==============================================================================
(empty)
Propchange: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/TilesException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: struts/sandbox/trunk/tiles/tiles-core/pom.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/pom.xml?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/pom.xml (original)
+++ struts/sandbox/trunk/tiles/tiles-core/pom.xml Tue Oct 31 10:21:51 2006
@@ -19,63 +19,63 @@
*/
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.apache.struts.tiles</groupId>
- <artifactId>tiles-parent</artifactId>
- <version>2.0-SNAPSHOT</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <artifactId>tiles-core</artifactId>
- <packaging>jar</packaging>
- <name>Tiles - Core Library</name>
-
- <scm>
- <connection>svm:svn:http://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</developerConnection>
- <url>http://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</url>
- </scm>
-
- <build>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- <resource>
- <directory>.</directory>
- <includes>
- <include>LICENSE.txt</include>
- <include>NOTICE.txt</include>
- </includes>
- <targetPath>META-INF</targetPath>
- </resource>
- </resources>
-
- <testResources>
- <testResource>
- <directory>src/test/java</directory>
- <includes>
- <include>**/*.xml</include>
- <include>**/*.properties</include>
- </includes>
- </testResource>
- </testResources>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- </plugins>
+ <parent>
+ <groupId>org.apache.struts.tiles</groupId>
+ <artifactId>tiles-parent</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>tiles-core</artifactId>
+ <packaging>jar</packaging>
+ <name>Tiles - Core Library</name>
+
+ <scm>
+ <connection>svm:svn:http://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</developerConnection>
+ <url>http://svn.apache.org/repos/asf/struts/sandbox/trunk/tiles</url>
+ </scm>
+
+ <build>
+
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>.</directory>
+ <includes>
+ <include>LICENSE.txt</include>
+ <include>NOTICE.txt</include>
+ </includes>
+ <targetPath>META-INF</targetPath>
+ </resource>
+ </resources>
+
+ <testResources>
+ <testResource>
+ <directory>src/test/java</directory>
+ <includes>
+ <include>**/*.xml</include>
+ <include>**/*.properties</include>
+ </includes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
- </build>
+ </build>
<reporting>
<plugins>
@@ -92,72 +92,79 @@
<dependencies>
- <dependency>
- <groupId>org.apache.struts.tiles</groupId>
- <artifactId>tiles-api</artifactId>
- <version>${pom.version}</version>
- </dependency>
-
-
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.7.0</version>
- </dependency>
-
- <dependency>
- <groupId>commons-digester</groupId>
- <artifactId>commons-digester</artifactId>
- <version>1.7</version>
- </dependency>
-
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.0.4</version>
- </dependency>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.3</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.portlet</groupId>
- <artifactId>portlet-api</artifactId>
- <version>1.0</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>strutstestcase</groupId>
- <artifactId>strutstestcase</artifactId>
- <version>2.1.2-1.1-2.3</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
- <repositories>
- <repository>
- <id>dtddoc</id>
- <url>http://dtddoc.sf.net/maven2</url>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>dtddoc</id>
- <url>http://dtddoc.sf.net/maven2</url>
- </pluginRepository>
- </pluginRepositories>
-
+ <dependency>
+ <groupId>org.apache.struts.tiles</groupId>
+ <artifactId>tiles-api</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.7.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-digester</groupId>
+ <artifactId>commons-digester</artifactId>
+ <version>1.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.3</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>strutstestcase</groupId>
+ <artifactId>strutstestcase</artifactId>
+ <version>2.1.2-1.1-2.3</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>dtddoc</id>
+ <url>http://dtddoc.sf.net/maven2</url>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>dtddoc</id>
+ <url>http://dtddoc.sf.net/maven2</url>
+ </pluginRepository>
+ </pluginRepositories>
+
</project>
Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java?view=auto&rev=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java Tue Oct 31 10:21:51 2006
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ *
+ * $Id$
+ */
+package org.apache.tiles.access;
+
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.Method;
+
+
+/**
+ * Provides static access to the tiles container.
+ */
+public class TilesAccess {
+
+ private static final Log LOG =
+ LogFactory.getLog(TilesAccess.class);
+
+ public static final String CONTAINER_ATTRIBUTE =
+ "org.apache.tiles.CONTAINER";
+
+ private static final String CONTEXT_ATTRIBUTE =
+ "org.apache.tiles.APPLICATION_CONTEXT";
+
+ public static TilesContainer getContainer(Object context) {
+ return (TilesContainer)getAttribute(context, CONTAINER_ATTRIBUTE);
+ }
+
+ public static void setContainer(Object context, TilesContainer container)
+ throws TilesException {
+ setAttribute(context, CONTAINER_ATTRIBUTE, container);
+ }
+
+ public static TilesApplicationContext getApplicationContext(Object context) {
+ TilesContainer container = getContainer(context);
+ if(container != null) {
+ return container.getApplicationContext();
+ }
+ return (TilesApplicationContext)getAttribute(context, CONTEXT_ATTRIBUTE);
+ }
+
+ /**
+ * @deprecated temporarily added for backwards compatibility.
+ * @param context
+ * @param
+ */
+ public static void setApplicationContext(Object context, TilesApplicationContext tilesContext)
+ throws TilesException {
+ setAttribute(context, CONTEXT_ATTRIBUTE, tilesContext);
+ }
+
+ private static Object getAttribute(Object context, String attributeName) {
+ try {
+ Class contextClass = context.getClass();
+ Method attrMethod = contextClass.getMethod("getAttribute", String.class);
+ return attrMethod.invoke(context, attributeName);
+ } catch (Exception e) {
+ LOG.warn("Unable to retrieve container from specified context: '"+context+"'", e);
+ return null;
+ }
+ }
+
+ private static void setAttribute(Object context, String name, Object value)
+ throws TilesException {
+ try {
+ Class contextClass = context.getClass();
+ Method attrMethod = contextClass.getMethod("setAttribute", String.class, Object.class);
+ attrMethod.invoke(context, name, value);
+ } catch (Exception e) {
+ throw new TilesException("Unable to set attribute for specified context: '"+context+"'");
+ }
+ }
+
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/access/TilesAccess.java
------------------------------------------------------------------------------
svn:keywords = Id Author Date
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/BasicTilesContextFactory.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/BasicTilesContextFactory.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/BasicTilesContextFactory.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/context/BasicTilesContextFactory.java Tue Oct 31 10:21:51 2006
@@ -50,15 +50,11 @@
public TilesApplicationContext createApplicationContext(Object context) {
if (context instanceof ServletContext) {
ServletContext servletContext = (ServletContext)context;
- TilesApplicationContext ctx = new ServletTilesApplicationContext(servletContext);
- TilesContextAccess.registerApplicationContext(servletContext, ctx);
- return ctx;
+ return new ServletTilesApplicationContext(servletContext);
} else if (context instanceof PortletContext) {
PortletContext portletContext = (PortletContext)context;
- TilesApplicationContext ctx = new PortletTilesApplicationContext(portletContext);
- TilesContextAccess.registerApplicationContext(portletContext, ctx);
- return ctx;
+ return new PortletTilesApplicationContext(portletContext);
} else {
throw new IllegalArgumentException("Invalid context specified. "
+ context.getClass().getName());
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/ConfigurationNotSupportedException.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/ConfigurationNotSupportedException.java?view=diff&rev=469595&r1=469464&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/ConfigurationNotSupportedException.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/factory/ConfigurationNotSupportedException.java Tue Oct 31 10:21:51 2006
@@ -17,25 +17,18 @@
*/
package org.apache.tiles.factory;
+import org.apache.tiles.TilesException;
+
/**
*
*
*/
-public class ConfigurationNotSupportedException extends Exception {
-
+public class ConfigurationNotSupportedException extends TilesException {
public ConfigurationNotSupportedException() {
}
public ConfigurationNotSupportedException(String string) {
super(string);
- }
-
- public ConfigurationNotSupportedException(String string, Throwable throwable) {
- super(string, throwable);
- }
-
- public ConfigurationNotSupportedException(Throwable throwable) {
- super(throwable);
}
}
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=469595&r1=469464&r2=469595
==============================================================================
--- 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 Oct 31 10:21:51 2006
@@ -18,38 +18,142 @@
package org.apache.tiles.factory;
import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.DefinitionsFactory;
import org.apache.tiles.TilesApplicationContext;
-import org.apache.tiles.TilesConfig;
import org.apache.tiles.definition.UrlDefinitionsFactory;
+import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.context.BasicTilesContextFactory;
import org.apache.tiles.impl.BasicTilesContainer;
+import java.lang.reflect.Method;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Enumeration;
+
/**
* Factory provided for convenience.
* This factory creates a default implementation of
* the container, initializes, and puts it into service.
*
- * @since 2.0
* @version $Rev$
- *
+ * @since 2.0
*/
public class TilesContainerFactory {
- public static TilesContainer createContainer(Object context)
- throws ConfigurationNotSupportedException {
+ public static final String CONTAINER_FACTORY_INIT_PARAM =
+ "org.apache.tiles.CONTAINER_FACTORY";
+
+ public static final String CONTEXT_FACTORY_INIT_PARAM =
+ "org.apache.tiles.CONTEXT_FACTORY";
+
+ public static final String DEFINITIONS_FACTORY_INIT_PARAM =
+ "org.apache.tiles.DEFINITIONS_FACTORY";
- TilesContainer container = new BasicTilesContainer();
+ private static final Map DEFAULT_IMPLEMENTATIONS = new HashMap();
+
+ static {
+ DEFAULT_IMPLEMENTATIONS.put(CONTAINER_FACTORY_INIT_PARAM, TilesContainerFactory.class.getName());
+ DEFAULT_IMPLEMENTATIONS.put(CONTEXT_FACTORY_INIT_PARAM, BasicTilesContextFactory.class.getName());
+ DEFAULT_IMPLEMENTATIONS.put(DEFINITIONS_FACTORY_INIT_PARAM, UrlDefinitionsFactory.class.getName());
+ }
+
+ /**
+ * Retrieve a factory instance as configured through the
+ * specified context.
+ * <p/>
+ * The context will be queried and if a init parameter
+ * named 'org.apache.tiles.CONTAINER_FACTORY' is discovered
+ * this class will be instantiated and returned. Otherwise,
+ * the factory will attempt to utilize one of it's internal
+ * factories.
+ *
+ * @param context
+ * @return
+ * @throws TilesException
+ */
+ public static TilesContainerFactory getFactory(Object context)
+ throws TilesException {
+ return (TilesContainerFactory) TilesContainerFactory
+ .createFactory(context, CONTAINER_FACTORY_INIT_PARAM);
+ }
+
+
+ public TilesContainer createContainer(Object context)
+ throws TilesException {
+ BasicTilesContainer container = new BasicTilesContainer();
+
+ TilesContextFactory contextFactory =
+ (TilesContextFactory)createFactory(context, CONTEXT_FACTORY_INIT_PARAM);
+
+ DefinitionsFactory defsFactory =
+ (DefinitionsFactory) createFactory(context, DEFINITIONS_FACTORY_INIT_PARAM);
+
+ container.setDefinitionsFactory(defsFactory);
+ container.setContextFactory(contextFactory);
TilesApplicationContext tilesContext =
- TilesContextFactory.createApplicationContext(context);
+ contextFactory.createApplicationContext(context);
- TilesConfig config = new TilesConfig();
- config.setApplicationContext(tilesContext);
- config.setInitParameter(
- TilesConfig.DEFINITIONS_FACTORY_CLASS_NAME_ATTR_KEY,
- UrlDefinitionsFactory.class.getName()
- );
+ container.init(tilesContext);
- container.init(config);
return container;
+ }
+
+
+ public Map getInitParameterMap(Object context)
+ throws TilesException {
+ Map initParameters = new HashMap();
+ Class contextClass = context.getClass();
+ try {
+ Method method = contextClass.getMethod("getInitParameterNames");
+ Enumeration e = (Enumeration)method.invoke(context);
+
+ method = contextClass.getMethod("getInitParameter", String.class);
+ while(e.hasMoreElements()) {
+ String key = (String)e.nextElement();
+ initParameters.put(key, method.invoke(context, key));
+ }
+ } catch (Exception e) {
+ throw new TilesException("Unable to retrieve init parameters." +
+ " Is this context a ServletContext, PortletContext," +
+ " or similar object?");
+ }
+ return initParameters;
+ }
+
+
+ public static Object createFactory(Object context, String initParameterName)
+ throws TilesException {
+ String factoryName = resolveFactoryName(context, initParameterName);
+ try {
+ Class factoryClass = Class.forName(factoryName);
+ return factoryClass.newInstance();
+ } catch (ClassNotFoundException e) {
+ throw new TilesException("Unable to resolve factory class: '" + factoryName + "'");
+ } catch (IllegalAccessException e) {
+ throw new TilesException("Unable to access factory class: '" + factoryName + "'");
+ } catch (InstantiationException e) {
+ throw new TilesException("Unable to instantiate factory class: '"
+ + factoryName + "'. Make sure that this class has a default constructor");
+ }
+ }
+
+ public static String resolveFactoryName(Object context, String parameterName)
+ throws TilesException {
+
+ Object factoryName = null;
+ try {
+ Class contextClass = context.getClass();
+ Method getInitParameterMethod =
+ contextClass.getMethod("getInitParameter", String.class);
+ factoryName = getInitParameterMethod.invoke(context, parameterName);
+ } catch (Exception e) {
+ throw new TilesException("Unrecognized context. Is this context" +
+ "a ServletContext, PortletContext, or similar?", e);
+ }
+ return factoryName == null
+ ? DEFAULT_IMPLEMENTATIONS.get(parameterName).toString()
+ : factoryName.toString();
}
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Tue Oct 31 10:21:51 2006
@@ -17,42 +17,154 @@
*/
package org.apache.tiles.impl;
-import org.apache.tiles.TilesContainer;
-import org.apache.tiles.TilesConfig;
-import org.apache.tiles.TilesRequestContext;
-import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.*;
+import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.definition.UrlDefinitionsFactory;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.logging.Log;
import java.util.Map;
/**
- * TODO Flush out the basic container implementation.
+ * Basic implementation of the tiles container interface.
+ * In most cases, this container will be customized by
+ * injecting customized services, not necessarily by
+ * override the container
+ *
+ * @since 2.0
+ * @version $Rev$
+ *
*/
public class BasicTilesContainer implements TilesContainer {
- private TilesConfig config;
-
- public void init(TilesConfig config) {
- this.config = config;
- initializeDefinitionsFactory();
+ /**
+ * Log instance for all BasicTilesContainer
+ * instances.
+ */
+ private static final Log LOG =
+ LogFactory.getLog(BasicTilesContainer.class);
+
+ private TilesApplicationContext context;
+ private DefinitionsFactory definitionsFactory;
+ private TilesContextFactory contextFactory;
+
+ /**
+ * Initialize the Container with the given configuration.
+ *
+ * @param context
+ * @throws TilesException
+ */
+ public void init(TilesApplicationContext context) throws TilesException {
+ checkInit();
+ this.context = context;
+ contextFactory.init(context.getInitParams());
+ definitionsFactory.init(context.getInitParams());
+ }
+ /**
+ * Determine whether or not the container has been
+ * initialized. Utility method used for methods which
+ * can not be invoked after the container has been
+ * started.
+ * @throws IllegalStateException if the container has already been initialized.
+ */
+ private void checkInit() {
+ if(context != null) {
+ throw new IllegalStateException("Container allready initialized");
+ }
}
+ /**
+ * Standard Getter
+ * @return the application context for this container.
+ */
public TilesApplicationContext getApplicationContext() {
- return config.getApplicationContext();
+ return context;
+ }
+
+
+ /**
+ * Standard Getter
+ * @return the definitions factory used by this container.
+ */
+ public DefinitionsFactory getDefinitionsFactory() {
+ return definitionsFactory;
+ }
+
+ /**
+ * Standard Setter
+ * @param definitionsFactory the definitions factory for this instance.
+ */
+ public void setDefinitionsFactory(DefinitionsFactory definitionsFactory) {
+ checkInit();
+ this.definitionsFactory = definitionsFactory;
+ }
+
+
+ public TilesContextFactory getContextFactory() {
+ checkInit();
+ return contextFactory;
}
- public void render(TilesRequestContext request) {
- //To change body of implemented methods use File | Settings | File Templates.
+ public void setContextFactory(TilesContextFactory contextFactory) {
+ checkInit();
+ this.contextFactory = contextFactory;
}
+ /**
+ * Render the specified definition.
+ *
+ * @param request the TilesRequestContext
+ * @throws TilesException
+ */
+ public void render(TilesRequestContext request)
+ throws TilesException {
+ String definitionName = request.getDefinitionName();
+ ComponentDefinition definition =
+ definitionsFactory.getDefinition(definitionName, request);
+
+ if (definition == null) {
+ if(LOG.isWarnEnabled()) {
+ String message = "Unable to find the definition '" + definitionName + "'";
+ LOG.warn(message);
+ }
+ throw new NoSuchDefinitionException(definitionName);
+ }
- void initializeDefinitionsFactory() {
- Map init = config.getInitParameters();
- String className = (String)init.get(TilesConfig.DEFINITIONS_FACTORY_CLASS_NAME_ATTR_KEY);
- if(className == null) {
- className = UrlDefinitionsFactory.class.getName();
+ ComponentContext context = getComponentContext(request, definition);
+
+ try {
+ ViewPreparer preparer = definition.getOrCreatePreparer();
+ if (preparer != null) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Executing tiles preparer [" + preparer + "]");
+ }
+ preparer.execute(request, context);
+ }
+
+ String dispatchPath = definition.getPath();
+ request.dispatch(dispatchPath);
+
+ } catch (TilesException e) {
+ throw e;
+ } catch (Exception e) {
+ // TODO it would be nice to make the preparer throw a more specific
+ // tiles exception so that it doesn't need to be rethrown.
+ throw new TilesException(e.getMessage(), e);
}
- //. . .
+
}
+
+ protected ComponentContext getComponentContext(TilesRequestContext request,
+ ComponentDefinition definition) {
+ ComponentContext context = ComponentContext.getContext(request);
+ if (context == null) {
+ context = new ComponentContext(definition.getAttributes());
+ ComponentContext.setContext(context, request);
+ } else {
+ context.addMissing(definition.getAttributes());
+ }
+ return context;
+ }
+
}
Added: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java?view=auto&rev=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java Tue Oct 31 10:21:51 2006
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ *
+ * $Id$
+ */
+package org.apache.tiles.listener;
+
+import org.apache.tiles.factory.TilesContainerFactory;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.access.TilesAccess;
+
+import javax.servlet.ServletContextListener;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContext;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+public class TilesContainerListener
+ implements ServletContextListener {
+
+ /**
+ * Logger instance.
+ */
+ protected static final Logger LOG =
+ Logger.getLogger(TilesListener.class.getName());
+
+ /**
+ * Initialize the TilesContainer and place it
+ * into service.
+ *
+ * @param event
+ */
+ public void contextInitialized(ServletContextEvent event) {
+ ServletContext servletContext = event.getServletContext();
+ try {
+ TilesContainer container = createContainer(servletContext);
+ TilesAccess.setContainer(servletContext, container);
+ } catch (TilesException e) {
+ LOG.log(Level.SEVERE, "Unable to retrieve tiles factory.");
+ }
+ }
+
+ /**
+ * Remove the tiles container from service.
+ * @param event
+ */
+ public void contextDestroyed(ServletContextEvent event) {
+ ServletContext servletContext = event.getServletContext();
+ try {
+ TilesAccess.setContainer(servletContext, null);
+ } catch (TilesException e) {
+ LOG.log(Level.SEVERE, "Unable to remove tiles container from service.");
+ }
+ }
+
+ protected TilesContainer createContainer(ServletContext context)
+ throws TilesException {
+ TilesContainerFactory factory =
+ TilesContainerFactory.getFactory(context);
+ return factory.createContainer(context);
+ }
+
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesContainerListener.java
------------------------------------------------------------------------------
svn:keywords = Id Author Date
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesListener.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesListener.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesListener.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/listener/TilesListener.java Tue Oct 31 10:21:51 2006
@@ -27,12 +27,9 @@
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
-import org.apache.tiles.DefinitionsFactory;
-import org.apache.tiles.DefinitionsFactoryConfig;
-import org.apache.tiles.DefinitionsFactoryException;
-import org.apache.tiles.TilesApplicationContext;
-import org.apache.tiles.TilesUtil;
-import org.apache.tiles.TilesUtilImpl;
+
+import org.apache.tiles.*;
+import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.context.BasicTilesContextFactory;
import org.apache.tiles.context.TilesContextFactory;
@@ -92,6 +89,7 @@
TilesContextFactory factory = new BasicTilesContextFactory();
TilesApplicationContext tilesContext = factory.createApplicationContext(context);
+ TilesAccess.setApplicationContext(context, tilesContext);
TilesUtil.setTilesUtil(new TilesUtilImpl(tilesContext));
initDefinitionsFactory(context, fconfig);
}
@@ -104,6 +102,10 @@
public void contextDestroyed(ServletContextEvent event) {
this.definitionFactory = null;
+ try {
+ TilesAccess.setApplicationContext(event.getServletContext(), null);
+ } catch (TilesException e) {
+ }
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/servlet/TilesServlet.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/servlet/TilesServlet.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/servlet/TilesServlet.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/servlet/TilesServlet.java Tue Oct 31 10:21:51 2006
@@ -28,6 +28,7 @@
import java.util.logging.Logger;
import org.apache.tiles.*;
+import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.BasicTilesContextFactory;
@@ -172,6 +173,7 @@
ServletContext context = config.getServletContext();
TilesContextFactory factory = new BasicTilesContextFactory();
TilesApplicationContext tilesContext = factory.createApplicationContext(context);
+ TilesAccess.setApplicationContext(context, tilesContext);
TilesUtil.setTilesUtil(new TilesUtilImpl(tilesContext));
initDefinitionsFactory(context, fconfig);
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/InitDefinitionsTag.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/InitDefinitionsTag.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/InitDefinitionsTag.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/InitDefinitionsTag.java Tue Oct 31 10:21:51 2006
@@ -23,7 +23,7 @@
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.tiles.*;
-import org.apache.tiles.context.TilesContextAccess;
+import org.apache.tiles.access.TilesAccess;
/**
* Init definitions impl.
@@ -69,7 +69,7 @@
*/
public int doStartTag() throws JspException {
TilesApplicationContext tilesContext =
- TilesContextAccess.getApplicationContext(pageContext.getServletContext());
+ TilesAccess.getApplicationContext(pageContext.getServletContext());
DefinitionsFactory factory = TilesUtil.getDefinitionsFactory();
if(factory != null ) {
return SKIP_BODY;
Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/util/TagUtils.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/util/TagUtils.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/util/TagUtils.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/util/TagUtils.java Tue Oct 31 10:21:51 2006
@@ -31,7 +31,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.tiles.taglib.ComponentConstants;
import org.apache.tiles.*;
-import org.apache.tiles.context.TilesContextAccess;
+import org.apache.tiles.access.TilesAccess;
/**
* Collection of utilities.
@@ -63,7 +63,7 @@
}
public static TilesApplicationContext getTilesContext(ServletContext context) {
- return TilesContextAccess.getApplicationContext(context);
+ return TilesAccess.getApplicationContext(context);
}
public static TilesRequestContext getTilesRequestContext(
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinition.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinition.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinition.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinition.java Tue Oct 31 10:21:51 2006
@@ -40,7 +40,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ junit.textui.TestRunner.main(
new String[] { TestComponentDefinition.class.getName()});
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinitions.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinitions.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinitions.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestComponentDefinitions.java Tue Oct 31 10:21:51 2006
@@ -44,7 +44,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ junit.textui.TestRunner.main(
new String[] { TestComponentDefinitions.class.getName()});
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestDigesterDefinitionsReader.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestDigesterDefinitionsReader.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestDigesterDefinitionsReader.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestDigesterDefinitionsReader.java Tue Oct 31 10:21:51 2006
@@ -47,7 +47,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ junit.textui.TestRunner.main(
new String[] { TestDigesterDefinitionsReader.class.getName()});
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestReloadableDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestReloadableDefinitionsFactory.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestReloadableDefinitionsFactory.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestReloadableDefinitionsFactory.java Tue Oct 31 10:21:51 2006
@@ -48,7 +48,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ junit.textui.TestRunner.main(
new String[] { TestReloadableDefinitionsFactory.class.getName()});
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestTilesServlet.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestTilesServlet.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestTilesServlet.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestTilesServlet.java Tue Oct 31 10:21:51 2006
@@ -22,6 +22,7 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import junit.textui.TestRunner;
import servletunit.ServletConfigSimulator;
import servletunit.ServletContextSimulator;
@@ -47,7 +48,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ TestRunner.main(
new String[] { TestTilesServlet.class.getName()});
}
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestUrlDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestUrlDefinitionsFactory.java?view=diff&rev=469595&r1=469594&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestUrlDefinitionsFactory.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/TestUrlDefinitionsFactory.java Tue Oct 31 10:21:51 2006
@@ -49,7 +49,7 @@
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
- junit.awtui.TestRunner.main(
+ junit.textui.TestRunner.main(
new String[] { TestUrlDefinitionsFactory.class.getName()});
}
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java?view=auto&rev=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java Tue Oct 31 10:21:51 2006
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ *
+ * $Id$
+ */
+package org.apache.tiles.access;
+
+import org.easymock.EasyMock;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.impl.BasicTilesContainer;
+
+import javax.servlet.ServletContext;
+
+import junit.framework.TestCase;
+
+public class TilesAccessTest extends TestCase {
+
+ private ServletContext context;
+
+ public void setUp() {
+ context = EasyMock.createMock(ServletContext.class);
+ }
+
+ public void testSetContext() throws TilesException {
+ TilesContainer container = new BasicTilesContainer();
+ context.setAttribute(TilesAccess.CONTAINER_ATTRIBUTE,container);
+ EasyMock.replay(context);
+ TilesAccess.setContainer(context, container);
+ EasyMock.verify(context);
+ }
+
+ public void testGetContext() throws TilesException {
+ TilesContainer container = new BasicTilesContainer();
+ EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE)).andReturn(container);
+ EasyMock.replay(context);
+ assertEquals(container, TilesAccess.getContainer(context));
+ EasyMock.verify(context);
+ }
+
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/access/TilesAccessTest.java
------------------------------------------------------------------------------
svn:keywords = Id Author Date
Copied: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java (from r469464, struts/sandbox/trunk/tiles/tiles-factory/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java)
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java?view=diff&rev=469595&p1=struts/sandbox/trunk/tiles/tiles-factory/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java&r1=469464&p2=struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java&r2=469595
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-factory/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java Tue Oct 31 10:21:51 2006
@@ -23,18 +23,91 @@
import org.easymock.EasyMock;
import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
import org.apache.tiles.context.servlet.ServletTilesApplicationContext;
+import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.impl.BasicTilesContainer;
+import java.util.Map;
+import java.util.Vector;
+
public class TilesContainerFactoryTest extends TestCase {
- public void testCreateContainer() throws ConfigurationNotSupportedException {
- ServletContext context = (ServletContext)EasyMock.createMock(ServletContext.class);
- TilesContainer container = TilesContainerFactory.createContainer(context);
+ private ServletContext context;
+
+ public void setUp() {
+ context = EasyMock.createMock(ServletContext.class);
+ }
+
+ public void testGetFactory() throws TilesException {
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.replay(context);
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context);
+ assertNotNull(factory);
+ assertEquals(TilesContainerFactory.class, factory.getClass());
+
+ EasyMock.reset(context);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(TestFactory.class.getName());
+ EasyMock.replay(context);
+ factory = TilesContainerFactory.getFactory(context);
+ assertNotNull(factory);
+ assertEquals(TestFactory.class, factory.getClass());
- assertEquals(BasicTilesContainer.class, container.getClass());
- assertEquals(ServletTilesApplicationContext.class, container.getApplicationContext().getClass());
+ EasyMock.reset(context);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn("org.missing.Class");
+ EasyMock.replay(context);
+ try {
+ TilesContainerFactory.getFactory(context);
+ fail("Invalid classname. Exception should have been thrown.");
+ }
+ catch (TilesException e) {
+ }
}
+ public void testCreateContainer() throws TilesException {
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTEXT_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.DEFINITIONS_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(EasyMock.isA(String.class))).andReturn(null).anyTimes();
+ EasyMock.replay(context);
+
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context);
+ TilesContainer container = factory.createContainer(context);
+
+ assertNotNull(container);
+ //now make sure it's initialized
+ try {
+ container.init(null);
+ fail("Container should have allready been initialized");
+ }
+ catch (IllegalStateException te) {
+ }
+
+ }
+
+ public void testGetInitParameterMap() throws TilesException {
+ Vector keys = new Vector();
+ keys.add("one");
+ keys.add("two");
+
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameterNames()).andReturn(keys.elements());
+ EasyMock.expect(context.getInitParameter("one")).andReturn("oneValue");
+ EasyMock.expect(context.getInitParameter("two")).andReturn("twoValue");
+ EasyMock.replay(context);
+
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context);
+ Map map = factory.getInitParameterMap(context);
+
+ assertEquals(2, map.size());
+ assertTrue(map.containsKey("one"));
+ assertTrue(map.containsKey("two"));
+ assertEquals("oneValue", map.get("one"));
+ assertEquals("twoValue", map.get("two"));
+ }
+
+ static class TestFactory extends TilesContainerFactory {
+
+ }
}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:keywords = Id Author Date