Author: apetrelli
Date: Tue Jan 13 03:49:19 2009
New Revision: 734110
URL: http://svn.apache.org/viewvc?rev=734110&view=rev
Log:
TILES-349
Added utilities to ServletUtil and JspUtil.
Some methods of TilesAccess have been deprecated. Other methods have been
removed (since they were added in 2.1.0).
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/util/DefinitionsFactoryUtil.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/context/JspUtil.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DestroyContainerTag.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/InitContainerTag.java
tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/context/JspUtilTest.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/servlet/context/ServletUtil.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
tiles/framework/trunk/tiles-servlet/src/test/java/org/apache/tiles/servlet/context/ServletUtilTest.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
(original)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
Tue Jan 13 03:49:19 2009
@@ -70,30 +70,15 @@
* @return The container if it has been configured previously, otherwise
* <code>null</code>.
* @see #setContainer(Object, TilesContainer)
+ * @deprecated Use one of the environment-specific Utilities (e.g.
+ * ServletUtil).
*/
+ @Deprecated
public static TilesContainer getContainer(Object context) {
return (TilesContainer) getAttribute(context, CONTAINER_ATTRIBUTE);
}
/**
- * Finds and returns a Tiles container object, if it was previously
initialized.
- *
- * @param context The (application) context object to use.
- * @return The container if it has been configured previously, otherwise
- * <code>null</code>.
- * @param key The key under which the container is stored.
- * @see #setContainer(Object, TilesContainer)
- * @since 2.1.0
- */
- public static TilesContainer getContainer(Object context, String key) {
- if (key == null) {
- key = CONTAINER_ATTRIBUTE;
- }
-
- return (TilesContainer) getAttribute(context, key);
- }
-
- /**
* Configures the default container to be used in the application.
*
* @param context The Tiles application context object to use.
@@ -142,35 +127,21 @@
* @param container The container object to set.
* @throws TilesAccessException If something goes wrong during
manipulation of the
* context.
+ * @deprecated Use {...@link #setContainer(TilesApplicationContext,
TilesContainer)}.
*/
+ @Deprecated
public static void setContainer(Object context, TilesContainer container) {
- setContainer(context, container, CONTAINER_ATTRIBUTE);
- }
-
- /**
- * Configures the container to be used in the application.
- *
- * @param context The (application) context object to use.
- * @param container The container object to set.
- * @param key The key under which the container will be stored.
- * @throws TilesAccessException If something goes wrong during
manipulation of the
- * context.
- */
- public static void setContainer(Object context, TilesContainer container,
String key) {
- if (key == null) {
- key = CONTAINER_ATTRIBUTE;
- }
if (container == null) {
if (LOG.isInfoEnabled()) {
LOG.info("Removing TilesContext for context: " +
context.getClass().getName());
}
- removeAttribute(context, key);
+ removeAttribute(context, CONTAINER_ATTRIBUTE);
}
if (container != null && LOG.isInfoEnabled()) {
LOG.info("Publishing TilesContext for context: " +
context.getClass().getName());
}
- setAttribute(context, key, container);
+ setAttribute(context, CONTAINER_ATTRIBUTE, container);
}
/**
@@ -178,21 +149,12 @@
*
* @param context The (application) context to use.
* @return The required Tiles application context.
+ * @deprecated Use one of the environment-specific Utilities (e.g.
+ * ServletUtil).
*/
+ @Deprecated
public static TilesApplicationContext getApplicationContext(Object
context) {
- return getApplicationContext(context, null);
- }
-
- /**
- * Returns the Tiles application context object.
- *
- * @param context The (application) context to use.
- * @param key The key under which the container is stored.
- * @return The required Tiles application context.
- * @since 2.1.0
- */
- public static TilesApplicationContext getApplicationContext(Object
context, String key) {
- TilesContainer container = getContainer(context, key);
+ TilesContainer container = getContainer(context);
if (container != null) {
return container.getApplicationContext();
}
Modified:
tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
(original)
+++
tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
Tue Jan 13 03:49:19 2009
@@ -20,11 +20,13 @@
*/
package org.apache.tiles.access;
+import java.util.HashMap;
+import java.util.Map;
+
import org.easymock.EasyMock;
+import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
-import javax.servlet.ServletContext;
-
import junit.framework.TestCase;
/**
@@ -35,55 +37,38 @@
/**
* The servlet context to use.
*/
- private ServletContext context;
+ private TilesApplicationContext context;
/** {...@inheritdoc} */
public void setUp() {
- context = EasyMock.createMock(ServletContext.class);
+ context = EasyMock.createMock(TilesApplicationContext.class);
}
/**
* Tests the setting of the context.
*/
- public void testSetContext() {
+ public void testSetContainer() {
TilesContainer container = EasyMock.createMock(TilesContainer.class);
- context.setAttribute(TilesAccess.CONTAINER_ATTRIBUTE, container);
+ Map<String, Object> attribs = new HashMap<String, Object>();
+ EasyMock.expect(context.getApplicationScope()).andReturn(attribs);
EasyMock.replay(context);
TilesAccess.setContainer(context, container);
+ assertEquals(attribs.size(), 1);
+ assertEquals(attribs.get(TilesAccess.CONTAINER_ATTRIBUTE), container);
EasyMock.verify(context);
}
/**
* Tests the setting of the context.
*/
- public void testSetContextWithKey() {
+ public void testSetContainerWithKey() {
TilesContainer container = EasyMock.createMock(TilesContainer.class);
- context.setAttribute("myKey", container);
+ Map<String, Object> attribs = new HashMap<String, Object>();
+ EasyMock.expect(context.getApplicationScope()).andReturn(attribs);
EasyMock.replay(context);
TilesAccess.setContainer(context, container, "myKey");
+ assertEquals(attribs.size(), 1);
+ assertEquals(attribs.get("myKey"), container);
EasyMock.verify(context);
}
-
- /**
- * Tests the getting of the context.
- */
- public void testGetContext() {
- TilesContainer container = EasyMock.createMock(TilesContainer.class);
-
EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE)).andReturn(container);
- EasyMock.replay(context);
- assertEquals(container, TilesAccess.getContainer(context));
- EasyMock.verify(context);
- }
-
- /**
- * Tests the getting of the context.
- */
- public void testGetContextWithKey() {
- TilesContainer container = EasyMock.createMock(TilesContainer.class);
- EasyMock.expect(context.getAttribute("myKey")).andReturn(container);
- EasyMock.replay(context);
- assertEquals(container, TilesAccess.getContainer(context, "myKey"));
- EasyMock.verify(context);
- }
-
}
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/util/DefinitionsFactoryUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/util/DefinitionsFactoryUtil.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/util/DefinitionsFactoryUtil.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/util/DefinitionsFactoryUtil.java
Tue Jan 13 03:49:19 2009
@@ -41,29 +41,16 @@
}
/**
- * Reloads the definitions factory content, if necessary, of the default
- * container.
- *
- * @param context The context object to use
- * @throws org.apache.tiles.definition.DefinitionsFactoryException If
- * something goes wrong during reload.
- */
- public static void reloadDefinitionsFactory(Object context) {
- reloadDefinitionsFactory(context, null);
- }
-
- /**
* Reloads the definitions factory content, if necessary.
*
* @param context The context object to use
- * @param containerKey The key under which the container is stored.
* @throws org.apache.tiles.definition.DefinitionsFactoryException If
* something goes wrong during reload.
+ * @deprecated Let the definitions DAO manage auto-reload.
*/
- public static void reloadDefinitionsFactory(Object context,
- String containerKey) {
- TilesContainer container = TilesAccess.getContainer(context,
- containerKey);
+ @Deprecated
+ public static void reloadDefinitionsFactory(Object context) {
+ TilesContainer container = TilesAccess.getContainer(context);
if (container instanceof BasicTilesContainer) {
BasicTilesContainer basic = (BasicTilesContainer) container;
DefinitionsFactory factory = basic.getDefinitionsFactory();
Modified:
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/context/JspUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/context/JspUtil.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/context/JspUtil.java
(original)
+++
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/context/JspUtil.java
Tue Jan 13 03:49:19 2009
@@ -21,6 +21,8 @@
package org.apache.tiles.jsp.context;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.impl.NoSuchContainerException;
@@ -36,6 +38,12 @@
public final class JspUtil {
/**
+ * The logging object.
+ */
+ private static final Log LOG =
+ LogFactory.getLog(ServletUtil.class);
+
+ /**
* Constructor, private to avoid instantiation.
*/
private JspUtil() {
@@ -71,6 +79,72 @@
}
/**
+ * Returns the default Tiles container.
+ *
+ * @param context The page context to use.
+ * @return The default Tiles container.
+ * @since 2.1.2
+ */
+ public static TilesContainer getContainer(PageContext context) {
+ return getContainer(context, TilesAccess.CONTAINER_ATTRIBUTE);
+ }
+
+ /**
+ * Returns a specific Tiles container.
+ *
+ * @param context The page context to use.
+ * @param key The key under which the container is stored. If null, the
+ * default container will be returned.
+ * @return The requested Tiles container.
+ * @since 2.1.2
+ */
+ public static TilesContainer getContainer(PageContext context, String key)
{
+ if (key == null) {
+ key = TilesAccess.CONTAINER_ATTRIBUTE;
+ }
+ return (TilesContainer) context.getAttribute(key,
+ PageContext.APPLICATION_SCOPE);
+ }
+
+ /**
+ * Configures the default container to be used in the application.
+ *
+ * @param context The page context object to use.
+ * @param container The container object to set.
+ * @since 2.1.2
+ */
+ public static void setContainer(PageContext context,
+ TilesContainer container) {
+ setContainer(context, container, TilesAccess.CONTAINER_ATTRIBUTE);
+ }
+
+ /**
+ * Configures the container to be used in the application.
+ *
+ * @param context The page context object to use.
+ * @param container The container object to set.
+ * @param key The key under which the container will be stored.
+ * @since 2.1.2
+ */
+ public static void setContainer(PageContext context,
+ TilesContainer container, String key) {
+ if (key == null) {
+ key = TilesAccess.CONTAINER_ATTRIBUTE;
+ }
+
+ if (container == null) {
+ if (LOG.isInfoEnabled()) {
+ LOG.info("Removing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.removeAttribute(key, PageContext.APPLICATION_SCOPE);
+ }
+ if (container != null && LOG.isInfoEnabled()) {
+ LOG.info("Publishing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.setAttribute(key, container, PageContext.APPLICATION_SCOPE);
+ }
+
+ /**
* Sets the current container to use in web pages.
*
* @param context The page context to use.
@@ -78,8 +152,7 @@
* @since 2.1.0
*/
public static void setCurrentContainer(PageContext context, String key) {
- TilesContainer container = TilesAccess.getContainer(context
- .getServletContext(), key);
+ TilesContainer container = getContainer(context, key);
if (container != null) {
context.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
container, PageContext.REQUEST_SCOPE);
@@ -118,7 +191,7 @@
ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
PageContext.REQUEST_SCOPE);
if (container == null) {
- container = TilesAccess.getContainer(context.getServletContext());
+ container = getContainer(context);
context.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
container, PageContext.REQUEST_SCOPE);
}
Modified:
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DestroyContainerTag.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DestroyContainerTag.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DestroyContainerTag.java
(original)
+++
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DestroyContainerTag.java
Tue Jan 13 03:49:19 2009
@@ -20,7 +20,7 @@
*/
package org.apache.tiles.jsp.taglib.definition;
-import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.jsp.context.JspUtil;
import org.apache.tiles.jsp.taglib.TilesTag;
/**
@@ -65,8 +65,7 @@
/** {...@inheritdoc} */
@Override
public int doEndTag() {
- TilesAccess.setContainer(pageContext.getServletContext(), null,
- containerKey);
+ JspUtil.setContainer(pageContext, null, containerKey);
return EVAL_PAGE;
}
}
Modified:
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/InitContainerTag.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/InitContainerTag.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/InitContainerTag.java
(original)
+++
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/InitContainerTag.java
Tue Jan 13 03:49:19 2009
@@ -41,10 +41,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
-import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.context.AbstractTilesApplicationContextFactory;
import org.apache.tiles.factory.AbstractTilesContainerFactory;
import org.apache.tiles.factory.TilesContainerFactory;
+import org.apache.tiles.jsp.context.JspUtil;
import org.apache.tiles.jsp.taglib.PutAttributeTag;
import org.apache.tiles.jsp.taglib.PutAttributeTagParent;
import org.apache.tiles.jsp.taglib.TilesBodyTag;
@@ -142,7 +142,7 @@
// TODO Add a MutableContainer so that this can be done?
public int doEndTag() {
TilesContainer container =
- TilesAccess.getContainer(pageContext.getServletContext(),
containerKey);
+ JspUtil.getContainer(pageContext, containerKey);
if (container != null) {
LOG.warn("TilesContainer already instantiated for this context
under key '"
@@ -177,7 +177,7 @@
TilesContainer mutableContainer = AbstractTilesContainerFactory
.getTilesContainerFactory(applicationContext).createContainer(
applicationContext);
- TilesAccess.setContainer(context, mutableContainer, containerKey);
+ JspUtil.setContainer(pageContext, mutableContainer, containerKey);
return EVAL_PAGE;
}
Modified:
tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/context/JspUtilTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/context/JspUtilTest.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/context/JspUtilTest.java
(original)
+++
tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/context/JspUtilTest.java
Tue Jan 13 03:49:19 2009
@@ -39,25 +39,80 @@
public class JspUtilTest extends TestCase {
/**
+ * Tests {...@link ServletUtil#getContainer(ServletContext)}.
+ */
+ public void testGetContainer() {
+ PageContext context = EasyMock.createMock(PageContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ EasyMock.expect(
+ context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE,
+ PageContext.APPLICATION_SCOPE)).andReturn(container);
+ EasyMock.replay(context, container);
+ assertEquals(container, JspUtil.getContainer(context));
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests {...@link ServletUtil#getContainer(ServletContext, String)}.
+ */
+ public void testGetContainerWithKey() {
+ PageContext context = EasyMock.createMock(PageContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ EasyMock.expect(
+ context.getAttribute("myKey", PageContext.APPLICATION_SCOPE))
+ .andReturn(container);
+ EasyMock.replay(context, container);
+ assertEquals(container, JspUtil.getContainer(context, "myKey"));
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests {...@link ServletUtil#setContainer(ServletContext,
TilesContainer)}.
+ */
+ public void testSetContainer() {
+ PageContext context = EasyMock.createMock(PageContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ context.setAttribute(TilesAccess.CONTAINER_ATTRIBUTE, container,
+ PageContext.APPLICATION_SCOPE);
+ EasyMock.replay(context, container);
+ JspUtil.setContainer(context, container);
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests
+ * {...@link ServletUtil#setContainer(ServletContext, TilesContainer,
String)}.
+ */
+ public void testSetContainerWithKey() {
+ PageContext context = EasyMock.createMock(PageContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ context.setAttribute("myKey", container,
PageContext.APPLICATION_SCOPE);
+ EasyMock.replay(context, container);
+ JspUtil.setContainer(context, container, "myKey");
+ EasyMock.verify(context, container);
+ }
+
+ /**
* Tests
* {...@link JspUtil#setCurrentContainer(PageContext, String)}.
*/
public void testSetCurrentContainer() {
PageContext pageContext = EasyMock.createMock(PageContext.class);
- ServletContext context = EasyMock.createMock(ServletContext.class);
TilesContainer container = EasyMock.createMock(TilesContainer.class);
- EasyMock.expect(pageContext.getServletContext()).andReturn(context);
- EasyMock.expect(context.getAttribute("myKey")).andReturn(container);
+ EasyMock.expect(
+ pageContext
+ .getAttribute("myKey", PageContext.APPLICATION_SCOPE))
+ .andReturn(container);
pageContext.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
container, PageContext.REQUEST_SCOPE);
EasyMock.expect(pageContext.getAttribute(ServletUtil
.CURRENT_CONTAINER_ATTRIBUTE_NAME, PageContext.REQUEST_SCOPE))
.andReturn(container);
- EasyMock.replay(pageContext, context, container);
+ EasyMock.replay(pageContext, container);
JspUtil.setCurrentContainer(pageContext, "myKey");
assertTrue("The containers are not the same", JspUtil
.getCurrentContainer(pageContext) == container);
- EasyMock.verify(pageContext, context, container);
+ EasyMock.verify(pageContext, container);
}
/**
@@ -85,17 +140,17 @@
*/
public void testGetCurrentContainer() {
PageContext pageContext = EasyMock.createMock(PageContext.class);
- ServletContext context = EasyMock.createMock(ServletContext.class);
TilesContainer defaultContainer = EasyMock.createMock(
TilesContainer.class);
TilesContainer alternateContainer = EasyMock.createMock(
TilesContainer.class);
- EasyMock.expect(pageContext.getServletContext()).andReturn(context);
EasyMock.expect(pageContext.getAttribute(ServletUtil
.CURRENT_CONTAINER_ATTRIBUTE_NAME, PageContext.REQUEST_SCOPE))
.andReturn(null);
- EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE))
- .andReturn(defaultContainer);
+ EasyMock.expect(
+ pageContext.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE,
+ PageContext.APPLICATION_SCOPE)).andReturn(
+ defaultContainer);
pageContext.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
defaultContainer, PageContext.REQUEST_SCOPE);
pageContext.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
@@ -103,13 +158,13 @@
EasyMock.expect(pageContext.getAttribute(ServletUtil
.CURRENT_CONTAINER_ATTRIBUTE_NAME, PageContext.REQUEST_SCOPE))
.andReturn(alternateContainer);
- EasyMock.replay(pageContext, context, defaultContainer,
alternateContainer);
+ EasyMock.replay(pageContext, defaultContainer, alternateContainer);
TilesContainer currentContainer =
JspUtil.getCurrentContainer(pageContext);
assertTrue("The containers are not the same",
currentContainer == defaultContainer);
JspUtil.setCurrentContainer(pageContext, alternateContainer);
currentContainer = JspUtil.getCurrentContainer(pageContext);
- EasyMock.verify(pageContext, context, defaultContainer,
alternateContainer);
+ EasyMock.verify(pageContext, defaultContainer, alternateContainer);
assertTrue("The containers are not the same",
currentContainer == alternateContainer);
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/servlet/context/ServletUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/servlet/context/ServletUtil.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/servlet/context/ServletUtil.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/servlet/context/ServletUtil.java
Tue Jan 13 03:49:19 2009
@@ -28,6 +28,8 @@
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.impl.NoSuchContainerException;
@@ -43,6 +45,12 @@
public final class ServletUtil {
/**
+ * The logging object.
+ */
+ private static final Log LOG =
+ LogFactory.getLog(ServletUtil.class);
+
+ /**
* Name of the attribute used to store the force-include option.
* @since 2.0.6
*/
@@ -91,6 +99,71 @@
}
/**
+ * Returns the default Tiles container.
+ *
+ * @param context The servlet context to use.
+ * @return The default Tiles container.
+ * @since 2.1.2
+ */
+ public static TilesContainer getContainer(ServletContext context) {
+ return getContainer(context, TilesAccess.CONTAINER_ATTRIBUTE);
+ }
+
+ /**
+ * Returns a specific Tiles container.
+ *
+ * @param context The servlet context to use.
+ * @param key The key under which the container is stored. If null, the
+ * default container will be returned.
+ * @return The requested Tiles container.
+ * @since 2.1.2
+ */
+ public static TilesContainer getContainer(ServletContext context, String
key) {
+ if (key == null) {
+ key = TilesAccess.CONTAINER_ATTRIBUTE;
+ }
+ return (TilesContainer) context.getAttribute(key);
+ }
+
+ /**
+ * Configures the default container to be used in the application.
+ *
+ * @param context The servlet context object to use.
+ * @param container The container object to set.
+ * @since 2.1.2
+ */
+ public static void setContainer(ServletContext context,
+ TilesContainer container) {
+ setContainer(context, container, TilesAccess.CONTAINER_ATTRIBUTE);
+ }
+
+ /**
+ * Configures the container to be used in the application.
+ *
+ * @param context The servlet context object to use.
+ * @param container The container object to set.
+ * @param key The key under which the container will be stored.
+ * @since 2.1.2
+ */
+ public static void setContainer(ServletContext context,
+ TilesContainer container, String key) {
+ if (key == null) {
+ key = TilesAccess.CONTAINER_ATTRIBUTE;
+ }
+
+ if (container == null) {
+ if (LOG.isInfoEnabled()) {
+ LOG.info("Removing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.removeAttribute(key);
+ }
+ if (container != null && LOG.isInfoEnabled()) {
+ LOG.info("Publishing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.setAttribute(key, container);
+ }
+
+ /**
* Sets the current container to use in web pages.
*
* @param request The request to use.
@@ -100,7 +173,7 @@
*/
public static void setCurrentContainer(ServletRequest request,
ServletContext context, String key) {
- TilesContainer container = TilesAccess.getContainer(context, key);
+ TilesContainer container = getContainer(context, key);
if (container != null) {
request.setAttribute(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
} else {
@@ -139,7 +212,7 @@
TilesContainer container = (TilesContainer) request
.getAttribute(CURRENT_CONTAINER_ATTRIBUTE_NAME);
if (container == null) {
- container = TilesAccess.getContainer(context);
+ container = getContainer(context);
request.setAttribute(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
Tue Jan 13 03:49:19 2009
@@ -36,7 +36,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.definition.util.DefinitionsFactoryUtil;
-import org.apache.tiles.startup.BasicTilesInitializer;
/**
* Processes Reloadable Tiles Definitions.
@@ -65,11 +64,6 @@
private FilterConfig filterConfig = null;
/**
- * The key under which the container is stored.
- */
- private String containerKey;
-
- /**
* Checks whether Tiles Definitions need to be reloaded.
*
* @param request The servlet request we are processing
@@ -84,7 +78,7 @@
try {
DefinitionsFactoryUtil.reloadDefinitionsFactory(
- getServletContext(), containerKey);
+ getServletContext());
chain.doFilter(request, response);
} catch (Exception e) {
throw new ServletException("Error processing request.", e);
@@ -125,9 +119,6 @@
this.filterConfig = filterConfig;
super.init(createServletConfig());
- containerKey = filterConfig.getInitParameter(
- BasicTilesInitializer.CONTAINER_KEY_INIT_PARAMETER);
-
if (DEBUG) {
log("TilesDecorationFilter:Initializing filter");
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
Tue Jan 13 03:49:19 2009
@@ -25,9 +25,9 @@
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
-import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.factory.AbstractTilesContainerFactory;
import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
+import org.apache.tiles.servlet.context.ServletUtil;
import org.apache.tiles.startup.BasicTilesInitializer;
import org.apache.tiles.startup.TilesInitializer;
@@ -85,7 +85,7 @@
public void contextDestroyed(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
try {
- TilesAccess.setContainer(servletContext, null);
+ ServletUtil.setContainer(servletContext, null);
} catch (TilesException e) {
LOG.warn("Unable to remove tiles container from service.", e);
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
Tue Jan 13 03:49:19 2009
@@ -23,8 +23,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesException;
-import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
+import org.apache.tiles.servlet.context.ServletUtil;
import org.apache.tiles.startup.BasicTilesInitializer;
import org.apache.tiles.startup.TilesInitializer;
import org.apache.tiles.web.util.ServletContextAdapter;
@@ -66,7 +66,7 @@
@Override
public void destroy() {
try {
- TilesAccess.setContainer(getServletContext(), null);
+ ServletUtil.setContainer(getServletContext(), null);
} catch (TilesException e) {
LOG.warn("Unable to remove tiles container from service.", e);
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
Tue Jan 13 03:49:19 2009
@@ -25,7 +25,7 @@
import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;
import org.apache.tiles.TilesContainer;
-import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.servlet.context.ServletUtil;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -228,7 +228,7 @@
return;
}
- TilesContainer container = TilesAccess.getContainer(
+ TilesContainer container = ServletUtil.getContainer(
getServletContext(), containerKey);
mutator.mutate(container.getAttributeContext(req, res), req);
if (preventDecorationToken != null) {
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
Tue Jan 13 03:49:19 2009
@@ -24,7 +24,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.AttributeContext;
-import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.servlet.context.ServletUtil;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -89,7 +89,7 @@
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
- TilesContainer container = TilesAccess.getContainer(
+ TilesContainer container = ServletUtil.getContainer(
getServletContext(), containerKey);
mutator.mutate(container.getAttributeContext(req, res), req);
String definition = getDefinitionName(req);
Modified:
tiles/framework/trunk/tiles-servlet/src/test/java/org/apache/tiles/servlet/context/ServletUtilTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/test/java/org/apache/tiles/servlet/context/ServletUtilTest.java?rev=734110&r1=734109&r2=734110&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/test/java/org/apache/tiles/servlet/context/ServletUtilTest.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/test/java/org/apache/tiles/servlet/context/ServletUtilTest.java
Tue Jan 13 03:49:19 2009
@@ -38,6 +38,55 @@
public class ServletUtilTest extends TestCase {
/**
+ * Tests {...@link ServletUtil#getContainer(ServletContext)}.
+ */
+ public void testGetContainer() {
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+
EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE)).andReturn(container);
+ EasyMock.replay(context, container);
+ assertEquals(container, ServletUtil.getContainer(context));
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests {...@link ServletUtil#getContainer(ServletContext, String)}.
+ */
+ public void testGetContainerWithKey() {
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ EasyMock.expect(context.getAttribute("myKey")).andReturn(container);
+ EasyMock.replay(context, container);
+ assertEquals(container, ServletUtil.getContainer(context, "myKey"));
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests {...@link ServletUtil#setContainer(ServletContext,
TilesContainer)}.
+ */
+ public void testSetContainer() {
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ context.setAttribute(TilesAccess.CONTAINER_ATTRIBUTE, container);
+ EasyMock.replay(context, container);
+ ServletUtil.setContainer(context, container);
+ EasyMock.verify(context, container);
+ }
+
+ /**
+ * Tests
+ * {...@link ServletUtil#setContainer(ServletContext, TilesContainer,
String)}.
+ */
+ public void testSetContainerWithKey() {
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+ TilesContainer container = EasyMock.createMock(TilesContainer.class);
+ context.setAttribute("myKey", container);
+ EasyMock.replay(context, container);
+ ServletUtil.setContainer(context, container, "myKey");
+ EasyMock.verify(context, container);
+ }
+
+ /**
* Tests
* {...@link ServletUtil#setCurrentContainer(ServletRequest,
ServletContext, String)}.
*/