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);
     }
 }