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