You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2007/02/13 15:24:14 UTC

svn commit: r507017 - in /tiles/examples/trunk/tiles-showcase/src/main: java/org/apache/tiles/showcase/ java/org/apache/tiles/showcase/channel/ java/org/apache/tiles/showcase/factory/ java/org/apache/tiles/showcase/impl/ java/org/apache/tiles/showcase/...

Author: apetrelli
Date: Tue Feb 13 06:24:12 2007
New Revision: 507017

URL: http://svn.apache.org/viewvc?view=rev&rev=507017
Log:
TILESSHOW-8
Attempt to use the "exposer" container.

Added:
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java   (with props)
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/ExposerKeyedTilesContainerFactory.java
      - copied, changed from r506533, tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/channel/ExposerKeyedTilesContainerFactory.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java   (with props)
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java   (with props)
Removed:
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/channel/ExposerKeyedTilesContainerFactory.java
Modified:
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/mgmt/ExposerMutableKeyedTilesContainer.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/portal/UserMenuAction.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/DefinitionCatalog.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/LayoutSwitchAction.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/SimpleSwitchLayoutAction.java
    tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/test/TestActionTileAction.java
    tiles/examples/trunk/tiles-showcase/src/main/webapp/WEB-INF/struts-config.xml

Added: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java?view=auto&rev=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java (added)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java Tue Feb 13 06:24:12 2007
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.tiles.showcase;
+
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.definition.ComponentDefinition;
+import org.apache.tiles.definition.DefinitionsFactoryException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface ExposerTilesContainer extends TilesContainer {
+    public ComponentDefinition getDefinition(String definitionName,
+            TilesRequestContext request) throws DefinitionsFactoryException;
+
+}

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/ExposerTilesContainer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Copied: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/ExposerKeyedTilesContainerFactory.java (from r506533, tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/channel/ExposerKeyedTilesContainerFactory.java)
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/ExposerKeyedTilesContainerFactory.java?view=diff&rev=507017&p1=tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/channel/ExposerKeyedTilesContainerFactory.java&r1=506533&p2=tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/ExposerKeyedTilesContainerFactory.java&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/channel/ExposerKeyedTilesContainerFactory.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/factory/ExposerKeyedTilesContainerFactory.java Tue Feb 13 06:24:12 2007
@@ -19,11 +19,13 @@
  * under the License.
  *
  */
-package org.apache.tiles.showcase.channel;
+package org.apache.tiles.showcase.factory;
 
+import org.apache.tiles.TilesContainer;
 import org.apache.tiles.TilesException;
 import org.apache.tiles.factory.KeyedDefinitionsFactoryTilesContainerFactory;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.showcase.impl.ExposerKeyedTilesContainer;
 import org.apache.tiles.showcase.impl.mgmt.ExposerMutableKeyedTilesContainer;
 
 /**
@@ -31,6 +33,14 @@
  */
 public class ExposerKeyedTilesContainerFactory extends
         KeyedDefinitionsFactoryTilesContainerFactory {
+
+    @Override
+    public TilesContainer createTilesContainer(Object context) throws TilesException {
+        ExposerKeyedTilesContainer container =
+            new ExposerKeyedTilesContainer();
+        initializeContainer(context, container);
+        return container;
+    }
 
     @Override
     public MutableTilesContainer createMutableTilesContainer(Object context) throws TilesException {

Added: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java?view=auto&rev=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java (added)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java Tue Feb 13 06:24:12 2007
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.tiles.showcase.impl;
+
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.definition.ComponentDefinition;
+import org.apache.tiles.definition.DefinitionsFactoryException;
+import org.apache.tiles.impl.KeyedDefinitionsFactoryTilesContainer;
+import org.apache.tiles.showcase.ExposerTilesContainer;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ExposerKeyedTilesContainer extends
+        KeyedDefinitionsFactoryTilesContainer implements ExposerTilesContainer {
+
+    @Override
+    public ComponentDefinition getDefinition(String definitionName,
+            TilesRequestContext request) throws DefinitionsFactoryException {
+        return super.getDefinition(definitionName, request);
+    }
+}

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/ExposerKeyedTilesContainer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/mgmt/ExposerMutableKeyedTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/mgmt/ExposerMutableKeyedTilesContainer.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/mgmt/ExposerMutableKeyedTilesContainer.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/impl/mgmt/ExposerMutableKeyedTilesContainer.java Tue Feb 13 06:24:12 2007
@@ -25,12 +25,13 @@
 import org.apache.tiles.definition.ComponentDefinition;
 import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.impl.mgmt.CachingKeyedDefinitionsFactoryTilesContainer;
+import org.apache.tiles.showcase.ExposerTilesContainer;
 
 /**
  * @version $Rev$ $Date$
  */
 public class ExposerMutableKeyedTilesContainer extends
-        CachingKeyedDefinitionsFactoryTilesContainer {
+        CachingKeyedDefinitionsFactoryTilesContainer implements ExposerTilesContainer {
 
     @Override
     public ComponentDefinition getDefinition(String definition,

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/portal/UserMenuAction.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/portal/UserMenuAction.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/portal/UserMenuAction.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/portal/UserMenuAction.java Tue Feb 13 06:24:12 2007
@@ -24,6 +24,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import javax.servlet.ServletContext;
@@ -40,11 +41,18 @@
 import org.apache.tiles.ComponentAttribute;
 import org.apache.tiles.ComponentContext;
 import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.beans.MenuItem;
 import org.apache.tiles.context.ComponentListAttribute;
 import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.servlet.ServletTilesApplicationContext;
 import org.apache.tiles.context.servlet.ServletTilesRequestContext;
+import org.apache.tiles.definition.ComponentDefinition;
 import org.apache.tiles.preparer.ViewPreparer;
+import org.apache.tiles.showcase.ExposerTilesContainer;
 import org.apache.tiles.showcase.channel.AttributeUtils;
+import org.apache.tiles.showcase.util.ContainerUtil;
 
 /**
  * This controller load user menu settings and put them in tile context.
@@ -245,12 +253,12 @@
 		}
 
 		// Get catalog from context
-		List catalog = (List) applicationContext.getApplicationScope()
+		List<Object> catalog = (List) applicationContext.getApplicationScope()
                 .get(catalogName);
 
 		// If not found, initialize it from provided default menu
 		if (catalog == null) {
-			Object menuBar = context.getAttribute(CATALOG_SETTING_ATTRIBUTE);
+			ComponentAttribute menuBar = context.getAttribute(CATALOG_SETTING_ATTRIBUTE);
 			if (menuBar == null) {
 				throw new ServletException(
 					"Attribute '"
@@ -258,12 +266,17 @@
 						+ "' must be set. It define entries used in catalog");
 			}
 
-			catalog = new ArrayList();
-			extractItems(catalog, menuBar, context, tilesContext,
-                    applicationContext);
-			if (catalog.size() == 0) {
-				throw new ServletException("Can't initialize menu items catalog");
-			}
+			catalog = new ArrayList<Object>();
+            TilesContainer container = ContainerUtil.getContainer(applicationContext);
+            if (container instanceof ExposerTilesContainer) {
+    			extractItems(catalog, menuBar.getValue(), context,
+                        (ExposerTilesContainer) container, tilesContext);
+    			if (catalog.size() == 0) {
+    				throw new ServletException("Can't initialize menu items catalog");
+    			}
+            } else {
+                throw new ServletException("The container must be instance of ExposerTilesContainer");
+            }
 
 			// save it for future use
 			applicationContext.getApplicationScope().put(catalogName, catalog);
@@ -286,25 +299,24 @@
 	 * </li>
 	 * @param result result list (should be initialized)
 	 * @param object object to add (MenuItems, Definition, ...)
+	 * @param container TODO
 	 * @param request current request
 	 * @param servletContext current servlet context.
 	 */
 	private static void extractItems(
-		List result,
+		List<Object> result,
 		Object object,
         ComponentContext context,
-		TilesRequestContext tilesContext,
-		TilesApplicationContext applicationContext) {
+		ExposerTilesContainer container,
+		TilesRequestContext tilesContext) {
 
 		log.debug("Extract menu item from '" + object + "'");
         
-        // FIXME This method should be completely rewritten. For the moment
-        // I am commenting it.
-/*
 		if (object instanceof String) { // definition name
 			try {
-
-				extractItems(result, def, request, servletContext);
+                ComponentDefinition def = container.getDefinition(
+                        (String) object, tilesContext);
+				extractItems(result, def, context, container, tilesContext);
 
 			} catch (Exception ex) { // silently fail
 			}
@@ -313,7 +325,7 @@
 			List list = (List) object;
 			Iterator iter = list.iterator();
 			while (iter.hasNext()) {
-				extractItems(result, iter.next(), request, servletContext);
+				extractItems(result, iter.next(), context, container, tilesContext);
 			}
 
 		} else if (object instanceof ComponentDefinition) {
@@ -327,11 +339,11 @@
 				return;
 			}
 
-			extractItems(result, attribute, request, servletContext);
+			extractItems(result, attribute, context, container, tilesContext);
 
 		} else if (object instanceof MenuItem) {
 			result.add(object);
-		} */
+		}
 	}
 
 	/**

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/DefinitionCatalog.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/DefinitionCatalog.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/DefinitionCatalog.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/DefinitionCatalog.java Tue Feb 13 06:24:12 2007
@@ -30,11 +30,19 @@
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.servlet.ServletTilesRequestContext;
 import org.apache.tiles.definition.ComponentDefinition;
 import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.definition.FactoryNotFoundException;
 import org.apache.tiles.definition.NoSuchDefinitionException;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.showcase.ExposerTilesContainer;
 
 /**
  * A catalog of available definitions.
@@ -72,17 +80,26 @@
    /**
     * Constructor.
     * Initialize catalog from definitions factory.
-    * @param HttpRequest request
-    * @param ServletContext context
+ * @param response TODO
+ * @param HttpRequest request
+ * @param ServletContext context
     * @throws FactoryNotFoundException, DefinitionsFactoryException
     */
-   public DefinitionCatalog( String catalogName, HttpServletRequest request, ServletContext context)
+   public DefinitionCatalog( String catalogName, HttpServletRequest request, HttpServletResponse response, ServletContext context)
      throws FactoryNotFoundException, DefinitionsFactoryException
    {
+   ExposerTilesContainer container = (ExposerTilesContainer) TilesAccess.getContainer(context);
+   TilesApplicationContext applicationContext = TilesAccess.getApplicationContext(context);
+   TilesRequestContext tilesContext;
+   if (container instanceof BasicTilesContainer) {
+       tilesContext = ((BasicTilesContainer) container)
+                    .getContextFactory().createRequestContext(
+                            applicationContext, request, response);
+   } else {
+       tilesContext = new ServletTilesRequestContext(context, request, response);
+   }
      // Get definition containing list of definitions
-     // FIXME Currently I don't know how to get a definition.
-   ComponentDefinition catalogDef = null; 
-//   ComponentDefinition catalogDef = DefinitionsUtil.getDefinition( catalogName, request, context);
+   ComponentDefinition catalogDef = container.getDefinition(catalogName, tilesContext);
    if(debug)
      System.out.println( "Got definition " + catalogDef );
      // Get list of definition names
@@ -92,9 +109,7 @@
      {
      String name = (String)i.next();
      System.out.println( "add " + name );
-     ComponentDefinition def = null;
-     // FIXME Currently I don't know how to get a definition.
-//     ComponentDefinition def = DefinitionsUtil.getDefinition(name, request, context);
+     ComponentDefinition def = container.getDefinition(name, tilesContext);
      if(def==null)
        throw new NoSuchDefinitionException("Can't find definition '" + name + "'" );
      add( name, def );

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/LayoutSwitchAction.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/LayoutSwitchAction.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/LayoutSwitchAction.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/LayoutSwitchAction.java Tue Feb 13 06:24:12 2007
@@ -220,7 +220,7 @@
         throw new ServletException( "Error - CustomSkinAction : attribute '"
                                   + CATALOG_SETTING_ATTRIBUTE
                                   + "' not found in Tile's attributes. Need it to initialize catalog"  );
-      catalog = new DefinitionCatalog( catalogSettings, request, servletContext );
+      catalog = new DefinitionCatalog( catalogSettings, request, response, servletContext );
       if(debug)
         System.out.println( "Catalog created" );
       servletContext.setAttribute( catalogName, catalog );

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/SimpleSwitchLayoutAction.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/SimpleSwitchLayoutAction.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/SimpleSwitchLayoutAction.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/skin/SimpleSwitchLayoutAction.java Tue Feb 13 06:24:12 2007
@@ -182,7 +182,7 @@
         throw new ServletException( "Error - CustomSkinAction : attribute '"
                                   + CATALOG_SETTING_ATTRIBUTE
                                   + "' not found in Tile's attributes. Need it to initialize catalog"  );
-      catalog = new DefinitionCatalog( catalogSettings, request, servletContext );
+      catalog = new DefinitionCatalog( catalogSettings, request, response, servletContext );
       if(debug)
         System.out.println( "Catalog created" );
       servletContext.setAttribute( catalogName, catalog );

Modified: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/test/TestActionTileAction.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/test/TestActionTileAction.java?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/test/TestActionTileAction.java (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/test/TestActionTileAction.java Tue Feb 13 06:24:12 2007
@@ -22,15 +22,25 @@
 
 package org.apache.tiles.showcase.test;
 
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.struts.action.Action;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
 import org.apache.tiles.ComponentContext;
+import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.servlet.ServletTilesRequestContext;
+import org.apache.tiles.definition.ComponentDefinition;
+import org.apache.tiles.definition.DefinitionsFactoryException;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.showcase.ExposerTilesContainer;
 import org.apache.tiles.showcase.channel.AttributeUtils;
 
 
@@ -42,6 +52,8 @@
  */
 
 public final class TestActionTileAction extends Action {
+    
+    private static Log LOG = LogFactory.getLog(TestActionTileAction.class);
 
 
     // --------------------------------------------------------- Public Methods
@@ -69,9 +81,11 @@
 				 HttpServletResponse response)
 	throws Exception {
 
+    ActionForward retValue = null;
+
       // Try to retrieve tile context
     ComponentContext context = TilesAccess.getContainer(request.getSession()
-            .getServletContext()).getComponentContext(request, response);;
+            .getServletContext()).getComponentContext(request, response);
       // Get requested test from tile parameter
     String param;
 
@@ -80,30 +94,33 @@
             context.getAttribute("set-definition-name"));
     if( param != null )
       {
-        // FIXME Currently I don't know how to get a definition!
-//      try
-//        {
+        ServletContext servletContext = request.getSession().getServletContext(); 
+        ExposerTilesContainer container = (ExposerTilesContainer) TilesAccess.getContainer(
+                servletContext);
+        TilesApplicationContext applicationContext = TilesAccess.getApplicationContext(
+                servletContext);
+        TilesRequestContext tilesContext;
+        if (container instanceof BasicTilesContainer) {
+            tilesContext = ((BasicTilesContainer) container)
+                         .getContextFactory().createRequestContext(
+                                 applicationContext, request, response);
+        } else {
+            tilesContext = new ServletTilesRequestContext(servletContext, request, response);
+        }
+      try
+        {
           // Read definition from factory, but we can create it here.
-//        ComponentDefinition definition = DefinitionsUtil.getDefinition( param, request, getServlet().getServletContext() );
-//        //definition.putAttribute( "attributeName", "aValue" );
-//        DefinitionsUtil.setActionDefinition( request, definition);
+        ComponentDefinition definition = container.getDefinition(
+                param, tilesContext);
+        retValue = new ActionForward(definition.getTemplate());
+        }
+       catch( DefinitionsFactoryException ex )
+        {
+        LOG.error("General error during getting a definition", ex);
+        request.setAttribute( "actionError", "General error '" + ex.getMessage() +"'.");
+        return (mapping.findForward("failure"));
         }
-//       catch( FactoryNotFoundException ex )
-//        {
-//        request.setAttribute( "actionError", "Can't get definition factory.");
-//        return (mapping.findForward("failure"));
-//        }
-//       catch( NoSuchDefinitionException ex )
-//        {
-//        request.setAttribute( "actionError", "Can't get definition '" + param +"'.");
-//        return (mapping.findForward("failure"));
-//        }
-//       catch( DefinitionsFactoryException ex )
-//        {
-//        request.setAttribute( "actionError", "General error '" + ex.getMessage() +"'.");
-//        return (mapping.findForward("failure"));
-//        }
-//      }
+      }
 
       // Overload a parameter
     param = AttributeUtils.getAttributeValueAsString(
@@ -113,7 +130,11 @@
       context.putAttribute( param, context.getAttribute( "set-attribute-value" ));
       } // end if
 
-	  return (mapping.findForward("success"));
+    if (retValue == null) {
+        retValue = mapping.findForward("success");
+    }
+    
+	return retValue;
 
     }
 

Added: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java?view=auto&rev=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java (added)
+++ tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java Tue Feb 13 06:24:12 2007
@@ -0,0 +1,48 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.tiles.showcase.util;
+
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.context.servlet.ServletTilesApplicationContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ContainerUtil {
+
+    private ContainerUtil() {
+    }
+
+    public static TilesContainer getContainer(TilesApplicationContext context) {
+        TilesContainer retValue = null;
+
+        if (context instanceof ServletTilesApplicationContext) {
+            retValue = TilesAccess
+                    .getContainer(((ServletTilesApplicationContext) context)
+                            .getServletContext());
+        }
+
+        return retValue;
+    }
+}

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tiles/examples/trunk/tiles-showcase/src/main/java/org/apache/tiles/showcase/util/ContainerUtil.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: tiles/examples/trunk/tiles-showcase/src/main/webapp/WEB-INF/struts-config.xml
URL: http://svn.apache.org/viewvc/tiles/examples/trunk/tiles-showcase/src/main/webapp/WEB-INF/struts-config.xml?view=diff&rev=507017&r1=507016&r2=507017
==============================================================================
--- tiles/examples/trunk/tiles-showcase/src/main/webapp/WEB-INF/struts-config.xml (original)
+++ tiles/examples/trunk/tiles-showcase/src/main/webapp/WEB-INF/struts-config.xml Tue Feb 13 06:24:12 2007
@@ -75,6 +75,10 @@
 	                 value="/WEB-INF/tiles-defs.xml" />
     <!-- Set Module-awareness to true -->
     <set-property property="moduleAware" value="true" />
+    <set-property property="org.apache.tiles.CONTAINER_FACTORY"
+                     value="org.apache.tiles.showcase.factory.ExposerKeyedTilesContainerFactory" />
+    <set-property property="org.apache.tiles.CONTAINER_FACTORY.mutable"
+                     value="true" />
   </plug-in>
 
 </struts-config>