TILES-544 #resolve
git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/trunk@1330634 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-parent/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java b/tiles-parent/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
index 05ad174..40a00c0 100644
--- a/tiles-parent/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
+++ b/tiles-parent/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
@@ -229,8 +229,8 @@
*/
public void render(Definition definition, Request request) {
AttributeContext originalContext = getAttributeContext(request);
- BasicAttributeContext subContext = new BasicAttributeContext(originalContext);
- subContext.inherit(definition);
+ BasicAttributeContext subContext = new BasicAttributeContext(definition);
+ subContext.inherit(originalContext);
pushContext(subContext, request);
diff --git a/tiles-parent/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java b/tiles-parent/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
index 8c9f476..bacae93 100644
--- a/tiles-parent/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
+++ b/tiles-parent/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
@@ -23,13 +23,19 @@
import java.io.IOException;
import java.io.StringWriter;
import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
import junit.framework.TestCase;
import org.apache.tiles.Attribute;
+import org.apache.tiles.BasicAttributeContext;
import org.apache.tiles.factory.AbstractTilesContainerFactory;
import org.apache.tiles.factory.BasicTilesContainerFactory;
import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.DispatchRequest;
import org.apache.tiles.request.Request;
import org.apache.tiles.request.locale.URLApplicationResource;
import org.apache.tiles.request.render.CannotRenderException;
@@ -37,7 +43,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* @version $Rev$ $Date$
*/
@@ -46,8 +51,7 @@
/**
* The logging object.
*/
- private final Logger log = LoggerFactory
- .getLogger(BasicTilesContainerTest.class);
+ private final Logger log = LoggerFactory.getLogger(BasicTilesContainerTest.class);
/**
* A sample integer value to check object rendering.
@@ -62,13 +66,12 @@
/** {@inheritDoc} */
@Override
public void setUp() {
- ApplicationContext context = EasyMock
- .createMock(ApplicationContext.class);
+ ApplicationContext context = EasyMock.createMock(ApplicationContext.class);
URL url = getClass().getResource("/org/apache/tiles/factory/test-defs.xml");
URLApplicationResource resource = new URLApplicationResource("/WEB-INF/tiles.xml", url);
- EasyMock.expect(context.getResource("/WEB-INF/tiles.xml"))
- .andReturn(resource);
+ EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(resource);
+ EasyMock.expect(context.getResource(resource, Locale.ROOT)).andReturn(resource);
EasyMock.replay(context);
AbstractTilesContainerFactory factory = new BasicTilesContainerFactory();
container = (BasicTilesContainer) factory.createContainer(context);
@@ -103,8 +106,7 @@
exceptionFound = true;
}
- assertTrue("An attribute of 'object' type cannot be rendered",
- exceptionFound);
+ assertTrue("An attribute of 'object' type cannot be rendered", exceptionFound);
}
/**
@@ -122,8 +124,7 @@
attribute.setRenderer("string");
container.render(attribute, request);
writer.close();
- assertEquals("The attribute should have been rendered",
- "This is the value", writer.toString());
+ assertEquals("The attribute should have been rendered", "This is the value", writer.toString());
EasyMock.reset(request);
request = EasyMock.createMock(Request.class);
EasyMock.expect(request.isUserInRole("myrole")).andReturn(Boolean.FALSE);
@@ -131,8 +132,7 @@
writer = new StringWriter();
container.render(attribute, request);
writer.close();
- assertNotSame("The attribute should have not been rendered",
- "This is the value", writer);
+ assertNotSame("The attribute should have not been rendered", "This is the value", writer);
}
/**
@@ -143,7 +143,24 @@
EasyMock.replay(request);
Attribute attribute = new Attribute("This is the value");
Object value = container.evaluate(attribute, request);
- assertEquals("The attribute has not been evaluated correctly",
- "This is the value", value);
+ assertEquals("The attribute has not been evaluated correctly", "This is the value", value);
+ }
+
+ public void testJiraTiles544() throws IOException {
+ DispatchRequest request = EasyMock.createMock(DispatchRequest.class);
+ Map<String, Object> requestScope = new HashMap<String, Object>();
+ EasyMock.expect(request.getContext("request")).andReturn(requestScope).anyTimes();
+ EasyMock.expect(request.getContext("session")).andReturn(Collections.<String, Object> emptyMap()).anyTimes();
+ EasyMock.expect(request.getRequestLocale()).andReturn(Locale.ROOT).anyTimes();
+ request.dispatch("/test.jsp");
+ EasyMock.replay(request);
+ Attribute testDef1 = new Attribute("test.def1");
+ testDef1.setRenderer("definition");
+ BasicAttributeContext context = new BasicAttributeContext();
+ context.setTemplateAttribute(testDef1);
+ container.pushContext(context, request);
+ container.render(request, context);
+ container.popContext(request);
+ EasyMock.verify(request);
}
}