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 2010/05/12 21:33:19 UTC
svn commit: r943645 - in /tiles/sandbox/trunk/tiles3:
tiles-api/src/main/java/org/apache/tiles/
tiles-core/src/main/java/org/apache/tiles/definition/pattern/
tiles-core/src/main/java/org/apache/tiles/evaluator/
tiles-core/src/main/java/org/apache/tiles...
Author: apetrelli
Date: Wed May 12 19:33:19 2010
New Revision: 943645
URL: http://svn.apache.org/viewvc?rev=943645&view=rev
Log:
TILESSB-11
Added more tests.
TILESSB-10
Removed some dead code.
Added:
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java (with props)
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java (with props)
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java (with props)
Removed:
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/definition/pattern/RegexpPatternDefinitionResolver.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/definition/pattern/WildcardPatternDefinitionResolver.java
Modified:
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/evaluator/EvaluationException.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactoryException.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluatorTest.java
Modified: tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java?rev=943645&r1=943644&r2=943645&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/BasicAttributeContext.java Wed May 12 19:33:19 2010
@@ -100,8 +100,11 @@ public class BasicAttributeContext imple
}
this.preparer = context.getPreparer();
this.attributes = new HashMap<String, Attribute>();
- for (String name : context.getLocalAttributeNames()) {
- attributes.put(name, new Attribute(context.getLocalAttribute(name)));
+ Set<String> parentAttributeNames = context.getLocalAttributeNames();
+ if (parentAttributeNames != null) {
+ for (String name : parentAttributeNames) {
+ attributes.put(name, new Attribute(context.getLocalAttribute(name)));
+ }
}
inheritCascadedAttributes(context);
}
@@ -143,9 +146,12 @@ public class BasicAttributeContext imple
copyCascadedAttributes((BasicAttributeContext) context);
} else {
this.cascadedAttributes = new HashMap<String, Attribute>();
- for (String name : context.getCascadedAttributeNames()) {
- cascadedAttributes.put(name, new Attribute(context
- .getCascadedAttribute(name)));
+ Set<String> parentAttributeNames = context.getCascadedAttributeNames();
+ if (parentAttributeNames != null) {
+ for (String name : parentAttributeNames) {
+ cascadedAttributes.put(name, new Attribute(context
+ .getCascadedAttribute(name)));
+ }
}
}
}
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/evaluator/EvaluationException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/evaluator/EvaluationException.java?rev=943645&r1=943644&r2=943645&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/evaluator/EvaluationException.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/evaluator/EvaluationException.java Wed May 12 19:33:19 2010
@@ -55,7 +55,7 @@ public class EvaluationException extends
* @param e The cause.
* @since 2.2.0
*/
- public EvaluationException(Exception e) {
+ public EvaluationException(Throwable e) {
super(e);
}
@@ -66,7 +66,7 @@ public class EvaluationException extends
* @param e The cause.
* @since 2.2.0
*/
- public EvaluationException(String message, Exception e) {
+ public EvaluationException(String message, Throwable e) {
super(message, e);
}
}
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactoryException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactoryException.java?rev=943645&r1=943644&r2=943645&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactoryException.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactoryException.java Wed May 12 19:33:19 2010
@@ -54,7 +54,7 @@ public class TilesContainerFactoryExcept
* @param e The exception to be wrapped.
* @since 2.1.0
*/
- public TilesContainerFactoryException(Exception e) {
+ public TilesContainerFactoryException(Throwable e) {
super(e);
}
@@ -65,7 +65,7 @@ public class TilesContainerFactoryExcept
* @param e The exception to be wrapped.
* @since 2.1.0
*/
- public TilesContainerFactoryException(String message, Exception e) {
+ public TilesContainerFactoryException(String message, Throwable e) {
super(message, e);
}
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?rev=943645&r1=943644&r2=943645&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Wed May 12 19:33:19 2010
@@ -23,6 +23,7 @@ package org.apache.tiles.impl;
import java.io.IOException;
import java.util.Deque;
import java.util.LinkedList;
+import java.util.Map;
import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;
@@ -95,11 +96,6 @@ public class BasicTilesContainer impleme
*/
private AttributeEvaluatorFactory attributeEvaluatorFactory;
- /**
- * Initialization flag. If set, this container cannot be changed.
- */
- private boolean initialized = false;
-
/** {@inheritDoc} */
public AttributeContext startContext(Request request) {
AttributeContext context = new BasicAttributeContext();
@@ -169,7 +165,6 @@ public class BasicTilesContainer impleme
* @param definitionsFactory the definitions factory for this instance.
*/
public void setDefinitionsFactory(DefinitionsFactory definitionsFactory) {
- checkInit();
this.definitionsFactory = definitionsFactory;
}
@@ -215,19 +210,14 @@ public class BasicTilesContainer impleme
/** {@inheritDoc} */
public void render(String definitionName, Request request) {
- if (log.isDebugEnabled()) {
- log.debug("Render request recieved for definition '" + definitionName + "'");
- }
+ log.debug("Render request received for definition '{}'", definitionName);
Definition definition = getDefinition(definitionName, request);
if (definition == null) {
- if (log.isWarnEnabled()) {
- String message = "Unable to find the definition '" + definitionName + "'";
- log.warn(message);
- }
- throw new NoSuchDefinitionException(definitionName);
+ throw new NoSuchDefinitionException("Unable to find the definition '" + definitionName + "'");
}
+
render(request, definition);
}
@@ -238,12 +228,12 @@ public class BasicTilesContainer impleme
throw new CannotRenderException("Cannot render a null attribute");
}
- AttributeRenderer renderer = rendererFactory.getRenderer(attr
- .getRenderer());
+ String rendererName = attr.getRenderer();
+ AttributeRenderer renderer = rendererFactory.getRenderer(rendererName);
if (renderer == null) {
throw new CannotRenderException(
"Cannot render an attribute with renderer name "
- + attr.getRenderer());
+ + rendererName);
}
renderer.render(attr, request);
}
@@ -257,7 +247,14 @@ public class BasicTilesContainer impleme
/** {@inheritDoc} */
public boolean isValidDefinition(String definitionName, Request request) {
- return isValidDefinition(request, definitionName);
+ try {
+ Definition definition = getDefinition(definitionName, request);
+ return definition != null;
+ } catch (NoSuchDefinitionException nsde) {
+ log.debug("Cannot find definition '{}'", definitionName);
+ log.debug("Exception related to the not found definition", nsde);
+ return false;
+ }
}
/**
@@ -277,20 +274,6 @@ public class BasicTilesContainer impleme
}
/**
- * 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.
- */
- protected void checkInit() {
- if (initialized) {
- throw new IllegalStateException("Container allready initialized");
- }
- }
-
- /**
* Returns the context stack.
*
* @param tilesContext The Tiles context object to use.
@@ -299,13 +282,12 @@ public class BasicTilesContainer impleme
*/
@SuppressWarnings("unchecked")
protected Deque<AttributeContext> getContextStack(Request tilesContext) {
- Deque<AttributeContext> contextStack =
- (Deque<AttributeContext>) tilesContext
- .getContext("request").get(ATTRIBUTE_CONTEXT_STACK);
+ Map<String, Object> requestScope = tilesContext.getContext("request");
+ Deque<AttributeContext> contextStack = (Deque<AttributeContext>) requestScope
+ .get(ATTRIBUTE_CONTEXT_STACK);
if (contextStack == null) {
contextStack = new LinkedList<AttributeContext>();
- tilesContext.getContext("request").put(ATTRIBUTE_CONTEXT_STACK,
- contextStack);
+ requestScope.put(ATTRIBUTE_CONTEXT_STACK, contextStack);
}
return contextStack;
@@ -364,9 +346,7 @@ public class BasicTilesContainer impleme
*/
private void prepare(Request context, String preparerName, boolean ignoreMissing) {
- if (log.isDebugEnabled()) {
- log.debug("Prepare request received for '" + preparerName);
- }
+ log.debug("Prepare request received for '{}'", preparerName);
ViewPreparer preparer = preparerFactory.getPreparer(preparerName, context);
if (preparer == null && ignoreMissing) {
@@ -383,34 +363,6 @@ public class BasicTilesContainer impleme
}
/**
- * Renders the definition with specified name.
- *
- * @param request The request context.
- * @param definitionName The name of the definition to render.
- * @throws NoSuchDefinitionException If the definition has not been found.
- * @throws DefinitionsFactoryException If something goes wrong when
- * obtaining the definition.
- * @since 2.1.3
- */
- protected void render(Request request, String definitionName) {
-
- if (log.isDebugEnabled()) {
- log.debug("Render request recieved for definition '" + definitionName + "'");
- }
-
- Definition definition = getDefinition(definitionName, request);
-
- if (definition == null) {
- if (log.isWarnEnabled()) {
- String message = "Unable to find the definition '" + definitionName + "'";
- log.warn(message);
- }
- throw new NoSuchDefinitionException(definitionName);
- }
- render(request, definition);
- }
-
- /**
* Renders the specified definition.
* @param request The request context.
* @param definition The definition to render.
@@ -452,24 +404,4 @@ public class BasicTilesContainer impleme
throw new CannotRenderException(e.getMessage(), e);
}
}
-
- /**
- * Checks if a string is a valid definition name.
- *
- * @param context The request context.
- * @param definitionName The name of the definition to find.
- * @return <code>true</code> if <code>definitionName</code> is a valid
- * definition name.
- */
- private boolean isValidDefinition(Request context, String definitionName) {
- try {
- Definition definition = getDefinition(definitionName, context);
- return definition != null;
- } catch (NoSuchDefinitionException nsde) {
- return false;
- } catch (DefinitionsFactoryException e) {
- // TODO, is this the right thing to do?
- return false;
- }
- }
}
Added: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java?rev=943645&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java (added)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java Wed May 12 19:33:19 2010
@@ -0,0 +1,77 @@
+/*
+ * $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.evaluator;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * Tests {@link EvaluationException}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class EvaluatorExceptionTest {
+
+ /**
+ * Test method for {@link EvaluationException#EvaluationException()}.
+ */
+ @Test
+ public void testEvaluationException() {
+ EvaluationException exception = new EvaluationException();
+ assertNull(exception.getMessage());
+ assertNull(exception.getCause());
+ }
+
+ /**
+ * Test method for {@link EvaluationException#EvaluationException(java.lang.String)}.
+ */
+ @Test
+ public void testEvaluationExceptionString() {
+ EvaluationException exception = new EvaluationException("my message");
+ assertEquals("my message", exception.getMessage());
+ assertNull(exception.getCause());
+ }
+
+ /**
+ * Test method for {@link EvaluationException#EvaluationException(java.lang.Throwable)}.
+ */
+ @Test
+ public void testEvaluationExceptionThrowable() {
+ Throwable cause = new Throwable();
+ EvaluationException exception = new EvaluationException(cause);
+ assertEquals(cause.toString(), exception.getMessage());
+ assertEquals(cause, exception.getCause());
+ }
+
+ /**
+ * Test method for {@link EvaluationException#EvaluationException(java.lang.String, java.lang.Throwable)}.
+ */
+ @Test
+ public void testEvaluationExceptionStringThrowable() {
+ Throwable cause = new Throwable();
+ EvaluationException exception = new EvaluationException("my message", cause);
+ assertEquals("my message", exception.getMessage());
+ assertEquals(cause, exception.getCause());
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/EvaluatorExceptionTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluatorTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluatorTest.java?rev=943645&r1=943644&r2=943645&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluatorTest.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluatorTest.java Wed May 12 19:33:19 2010
@@ -20,26 +20,30 @@
*/
package org.apache.tiles.evaluator.impl;
-import junit.framework.TestCase;
+import static org.junit.Assert.*;
import org.apache.tiles.Attribute;
import org.apache.tiles.Expression;
import org.apache.tiles.request.Request;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests {@link DirectAttributeEvaluator}.
*
* @version $Rev$ $Date$
*/
-public class DirectAttributeEvaluatorTest extends TestCase {
+public class DirectAttributeEvaluatorTest {
/**
* The evaluator to test.
*/
private DirectAttributeEvaluator evaluator;
- /** {@inheritDoc} */
- @Override
+ /**
+ * Sets up the test.
+ */
+ @Before
public void setUp() {
evaluator = new DirectAttributeEvaluator();
}
@@ -48,6 +52,7 @@ public class DirectAttributeEvaluatorTes
* Tests
* {@link DirectAttributeEvaluator#evaluate(Attribute, Request)}.
*/
+ @Test
public void testEvaluate() {
String expression = "This is an expression";
Attribute attribute = new Attribute(null, Expression.createExpression(
@@ -64,8 +69,18 @@ public class DirectAttributeEvaluatorTes
/**
* Tests
+ * {@link DirectAttributeEvaluator#evaluate(Attribute, Request)}.
+ */
+ @Test(expected=IllegalArgumentException.class)
+ public void testEvaluateNullAttribute() {
+ evaluator.evaluate((Attribute) null, null);
+ }
+
+ /**
+ * Tests
* {@link DirectAttributeEvaluator#evaluate(String, Request)}.
*/
+ @Test
public void testEvaluateString() {
String expression = "This is an expression";
Object result = evaluator.evaluate(expression, null);
Added: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java?rev=943645&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java (added)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java Wed May 12 19:33:19 2010
@@ -0,0 +1,77 @@
+/*
+ * $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.factory;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * Tests {@link TilesContainerFactoryException}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TilesContainerFactoryExceptionTest {
+
+ /**
+ * Test method for {@link TilesContainerFactoryException#TilesContainerFactoryException()}.
+ */
+ @Test
+ public void testTilesContainerFactoryException() {
+ TilesContainerFactoryException exception = new TilesContainerFactoryException();
+ assertNull(exception.getMessage());
+ assertNull(exception.getCause());
+ }
+
+ /**
+ * Test method for {@link TilesContainerFactoryException#TilesContainerFactoryException(java.lang.String)}.
+ */
+ @Test
+ public void testTilesContainerFactoryExceptionString() {
+ TilesContainerFactoryException exception = new TilesContainerFactoryException("my message");
+ assertEquals("my message", exception.getMessage());
+ assertNull(exception.getCause());
+ }
+
+ /**
+ * Test method for {@link TilesContainerFactoryException#TilesContainerFactoryException(java.lang.Throwable)}.
+ */
+ @Test
+ public void testTilesContainerFactoryExceptionThrowable() {
+ Throwable cause = new Throwable();
+ TilesContainerFactoryException exception = new TilesContainerFactoryException(cause);
+ assertEquals(cause.toString(), exception.getMessage());
+ assertEquals(cause, exception.getCause());
+ }
+
+ /**
+ * Test method for {@link TilesContainerFactoryException#TilesContainerFactoryException(java.lang.String, java.lang.Throwable)}.
+ */
+ @Test
+ public void testTilesContainerFactoryExceptionStringThrowable() {
+ Throwable cause = new Throwable();
+ TilesContainerFactoryException exception = new TilesContainerFactoryException("my message", cause);
+ assertEquals("my message", exception.getMessage());
+ assertEquals(cause, exception.getCause());
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryExceptionTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java?rev=943645&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java (added)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java Wed May 12 19:33:19 2010
@@ -0,0 +1,784 @@
+/**
+ *
+ */
+package org.apache.tiles.impl;
+
+import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.util.Deque;
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.AttributeContext;
+import org.apache.tiles.BasicAttributeContext;
+import org.apache.tiles.Definition;
+import org.apache.tiles.definition.DefinitionsFactory;
+import org.apache.tiles.definition.NoSuchDefinitionException;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.AttributeEvaluatorFactory;
+import org.apache.tiles.preparer.NoSuchPreparerException;
+import org.apache.tiles.preparer.PreparerFactory;
+import org.apache.tiles.preparer.ViewPreparer;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.Request;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests {@link BasicTilesContainer}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class BasicTilesContainerUnitTest {
+
+ /**
+ * Name used to store attribute context stack.
+ */
+ private static final String ATTRIBUTE_CONTEXT_STACK =
+ "org.apache.tiles.AttributeContext.STACK";
+
+ private ApplicationContext applicationContext;
+
+ private DefinitionsFactory definitionsFactory;
+
+ private PreparerFactory preparerFactory;
+
+ private RendererFactory rendererFactory;
+
+ private AttributeEvaluatorFactory attributeEvaluatorFactory;
+
+ private BasicTilesContainer container;
+
+ /**
+ * Sets up the test.
+ */
+ @Before
+ public void setUp() {
+ applicationContext = createMock(ApplicationContext.class);
+ definitionsFactory = createMock(DefinitionsFactory.class);
+ preparerFactory = createMock(PreparerFactory.class);
+ rendererFactory = createMock(RendererFactory.class);
+ attributeEvaluatorFactory = createMock(AttributeEvaluatorFactory.class);
+ container = new BasicTilesContainer();
+ container.setApplicationContext(applicationContext);
+ container.setAttributeEvaluatorFactory(attributeEvaluatorFactory);
+ container.setDefinitionsFactory(definitionsFactory);
+ container.setPreparerFactory(preparerFactory);
+ container.setRendererFactory(rendererFactory);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#startContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testStartContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ expect(attributeContext.getCascadedAttributeNames()).andReturn(null);
+ deque.push(isA(BasicAttributeContext.class));
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ assertTrue(container.startContext(request) instanceof BasicAttributeContext);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#endContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testEndContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.pop()).andReturn(attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ container.endContext(request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#renderContext(org.apache.tiles.request.Request)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testRenderContext() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ expect(attributeContext.getPreparer()).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(templateAttribute.getRenderer()).andReturn("renderer");
+ expect(rendererFactory.getRenderer("renderer")).andReturn(renderer);
+ renderer.render(templateAttribute, request);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, templateAttribute, renderer);
+ container.renderContext(request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, templateAttribute, renderer);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getApplicationContext()}.
+ */
+ @Test
+ public void testGetApplicationContext() {
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ assertEquals(applicationContext, container.getApplicationContext());
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getAttributeContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetAttributeContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ assertEquals(attributeContext, container.getAttributeContext(request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getAttributeContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetAttributeContextNew() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope).times(2);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque).times(2);
+ expect(deque.isEmpty()).andReturn(true);
+ deque.push(isA(BasicAttributeContext.class));
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ assertTrue(container.getAttributeContext(request) instanceof BasicAttributeContext);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getDefinitionsFactory()}.
+ */
+ @Test
+ public void testGetDefinitionsFactory() {
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ assertEquals(definitionsFactory, container.getDefinitionsFactory());
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getPreparerFactory()}.
+ */
+ @Test
+ public void testGetPreparerFactory() {
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ assertEquals(preparerFactory, container.getPreparerFactory());
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#prepare(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testPrepare() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+
+ expect(preparerFactory.getPreparer("preparer", request)).andReturn(preparer);
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ preparer.execute(request, attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer);
+ container.prepare("preparer", request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#prepare(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test(expected=NoSuchPreparerException.class)
+ public void testPrepareException() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(preparerFactory.getPreparer("preparer", request)).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ try {
+ container.prepare("preparer", request);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory,
+ request, requestScope, deque, attributeContext);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(java.lang.String, org.apache.tiles.request.Request)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testRenderStringRequest() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+ Definition definition = createMock(Definition.class);
+
+ Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp");
+
+ expect(definitionsFactory.getDefinition("definition", request)).andReturn(definition);
+ expect(request.getContext("request")).andReturn(requestScope).times(3);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque).times(3);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ expect(attributeContext.getPreparer()).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(attributeContext.getLocalAttributeNames()).andReturn(null);
+ expect(attributeContext.getCascadedAttributeNames()).andReturn(null);
+ expect(definition.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(rendererFactory.getRenderer("template")).andReturn(renderer);
+ deque.push(isA(BasicAttributeContext.class));
+ renderer.render(templateAttribute, request);
+ expect(deque.pop()).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, renderer, definition);
+ container.render("definition", request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, renderer, definition);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test(expected=NoSuchDefinitionException.class)
+ public void testRenderStringRequestException() {
+ Request request = createMock(Request.class);
+
+ expect(definitionsFactory.getDefinition("definition", request)).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ try {
+ container.render("definition", request);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.Attribute, org.apache.tiles.request.Request)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testRenderAttributeRequest() throws IOException {
+ Request request = createMock(Request.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+
+ expect(templateAttribute.getRenderer()).andReturn("renderer");
+ expect(rendererFactory.getRenderer("renderer")).andReturn(renderer);
+ renderer.render(templateAttribute, request);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ templateAttribute, renderer);
+ container.render(templateAttribute, request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ templateAttribute, renderer);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.Attribute, org.apache.tiles.request.Request)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=CannotRenderException.class)
+ public void testRenderAttributeRequestException1() throws IOException {
+ Request request = createMock(Request.class);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ try {
+ container.render((Attribute) null, request);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory,
+ request);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.Attribute, org.apache.tiles.request.Request)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=CannotRenderException.class)
+ public void testRenderAttributeRequestException2() throws IOException {
+ Request request = createMock(Request.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+
+ expect(templateAttribute.getRenderer()).andReturn("renderer");
+ expect(rendererFactory.getRenderer("renderer")).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ templateAttribute);
+ try {
+ container.render(templateAttribute, request);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory,
+ request, templateAttribute);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#evaluate(org.apache.tiles.Attribute, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testEvaluate() {
+ Request request = createMock(Request.class);
+ AttributeEvaluator evaluator = createMock(AttributeEvaluator.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+
+ expect(attributeEvaluatorFactory.getAttributeEvaluator(templateAttribute)).andReturn(evaluator);
+ expect(evaluator.evaluate(templateAttribute, request)).andReturn(new Integer(1));
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ templateAttribute, evaluator);
+ assertEquals(new Integer(1), container.evaluate(templateAttribute, request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ templateAttribute, evaluator);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#isValidDefinition(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testIsValidDefinition() {
+ Request request = createMock(Request.class);
+ Definition definition = createMock(Definition.class);
+
+ expect(definitionsFactory.getDefinition("definition", request)).andReturn(definition);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request, definition);
+ assertTrue(container.isValidDefinition("definition", request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request, definition);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#isValidDefinition(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testIsValidDefinitionNull() {
+ Request request = createMock(Request.class);
+
+ expect(definitionsFactory.getDefinition("definition", request)).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ assertFalse(container.isValidDefinition("definition", request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#isValidDefinition(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testIsValidDefinitionException() {
+ Request request = createMock(Request.class);
+
+ expect(definitionsFactory.getDefinition("definition", request))
+ .andThrow(new NoSuchDefinitionException());
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ assertFalse(container.isValidDefinition("definition", request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getDefinition(java.lang.String, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetDefinition() {
+ Request request = createMock(Request.class);
+ Definition definition = createMock(Definition.class);
+
+ expect(definitionsFactory.getDefinition("definition", request)).andReturn(definition);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request, definition);
+ assertEquals(definition, container.getDefinition("definition", request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request, definition);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getContextStack(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetContextStack() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque);
+ assertEquals(deque, container.getContextStack(request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getContextStack(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetContextStackNew() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(null);
+ expect(requestScope.put(eq(ATTRIBUTE_CONTEXT_STACK), isA(LinkedList.class))).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope);
+ assertTrue(container.getContextStack(request) instanceof LinkedList);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#pushContext(org.apache.tiles.AttributeContext, org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testPushContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ deque.push(attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ container.pushContext(attributeContext, request);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#popContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testPopContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.pop()).andReturn(attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ assertEquals(attributeContext, container.popContext(request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetContext() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ assertEquals(attributeContext, container.getContext(request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#getContext(org.apache.tiles.request.Request)}.
+ */
+ @Test
+ public void testGetContextNull() {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+
+ expect(request.getContext("request")).andReturn(requestScope);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque);
+ expect(deque.isEmpty()).andReturn(true);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque);
+ assertNull(container.getContext(request));
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.request.Request, org.apache.tiles.Definition)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testRenderRequestDefinition() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+ Definition definition = createMock(Definition.class);
+
+ Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp");
+
+ expect(request.getContext("request")).andReturn(requestScope).times(3);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque).times(3);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ expect(attributeContext.getPreparer()).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(attributeContext.getLocalAttributeNames()).andReturn(null);
+ expect(attributeContext.getCascadedAttributeNames()).andReturn(null);
+ expect(definition.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(rendererFactory.getRenderer("template")).andReturn(renderer);
+ deque.push(isA(BasicAttributeContext.class));
+ renderer.render(templateAttribute, request);
+ expect(deque.pop()).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, renderer, definition);
+ container.render(request, definition);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, renderer, definition);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.request.Request, org.apache.tiles.Definition)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=CannotRenderException.class)
+ public void testRenderRequestDefinitionException() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+ Definition definition = createMock(Definition.class);
+
+ Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp");
+
+ expect(request.getContext("request")).andReturn(requestScope).times(3);
+ expect(requestScope.get(ATTRIBUTE_CONTEXT_STACK)).andReturn(deque).times(3);
+ expect(deque.isEmpty()).andReturn(false);
+ expect(deque.peek()).andReturn(attributeContext);
+ expect(attributeContext.getPreparer()).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(attributeContext.getLocalAttributeNames()).andReturn(null);
+ expect(attributeContext.getCascadedAttributeNames()).andReturn(null);
+ expect(definition.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(rendererFactory.getRenderer("template")).andReturn(renderer);
+ deque.push(isA(BasicAttributeContext.class));
+ renderer.render(templateAttribute, request);
+ expectLastCall().andThrow(new IOException());
+ expect(deque.pop()).andReturn(null);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, renderer, definition);
+ try {
+ container.render(request, definition);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory,
+ request, requestScope, deque, attributeContext, preparer,
+ renderer, definition);
+ }
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.request.Request, org.apache.tiles.AttributeContext)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testRenderRequestAttributeContext() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ ViewPreparer preparer = createMock(ViewPreparer.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+
+ expect(attributeContext.getPreparer()).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(templateAttribute.getRenderer()).andReturn("renderer");
+ expect(rendererFactory.getRenderer("renderer")).andReturn(renderer);
+ renderer.render(templateAttribute, request);
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, templateAttribute, renderer);
+ container.render(request, attributeContext);
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, preparer, templateAttribute, renderer);
+ }
+
+ /**
+ * Test method for {@link org.apache.tiles.impl.BasicTilesContainer#render(org.apache.tiles.request.Request, org.apache.tiles.AttributeContext)}.
+ * @throws IOException If something goes wrong.
+ */
+ @Test(expected=CannotRenderException.class)
+ public void testRenderRequestAttributeContextException() throws IOException {
+ Request request = createMock(Request.class);
+ Map<String, Object> requestScope = createMock(Map.class);
+ Deque<AttributeContext> deque = createMock(Deque.class);
+ AttributeContext attributeContext = createMock(AttributeContext.class);
+ Attribute templateAttribute = createMock(Attribute.class);
+ AttributeRenderer renderer = createMock(AttributeRenderer.class);
+
+ expect(attributeContext.getPreparer()).andReturn("preparer").times(2);
+ expect(preparerFactory.getPreparer("preparer", request)).andReturn(null);
+ expect(attributeContext.getTemplateAttribute()).andReturn(templateAttribute);
+ expect(templateAttribute.getRenderer()).andReturn("renderer");
+ expect(rendererFactory.getRenderer("renderer")).andReturn(renderer);
+ renderer.render(templateAttribute, request);
+ expectLastCall().andThrow(new IOException());
+
+ replay(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory, request,
+ requestScope, deque, attributeContext, templateAttribute, renderer);
+ try {
+ container.render(request, attributeContext);
+ } finally {
+ verify(applicationContext, attributeEvaluatorFactory,
+ definitionsFactory, preparerFactory, rendererFactory,
+ request, requestScope, deque, attributeContext,
+ templateAttribute, renderer);
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerUnitTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL