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 2008/12/04 14:01:47 UTC

svn commit: r723307 - in /tiles/sandbox/trunk/tiles-freemarker: ./ src/main/java/org/apache/tiles/freemarker/context/ src/test/java/org/ src/test/java/org/apache/ src/test/java/org/apache/tiles/ src/test/java/org/apache/tiles/freemarker/ src/test/java/...

Author: apetrelli
Date: Thu Dec  4 05:01:47 2008
New Revision: 723307

URL: http://svn.apache.org/viewvc?rev=723307&view=rev
Log:
TILESSB-3
Created context objects.
Created stub of a test case.

Added:
    tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java   (contents, props changed)
      - copied, changed from r722864, tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesContextFactory.java
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/
    tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java   (with props)
Removed:
    tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesContextFactory.java
Modified:
    tiles/sandbox/trunk/tiles-freemarker/pom.xml
    tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java

Modified: tiles/sandbox/trunk/tiles-freemarker/pom.xml
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-freemarker/pom.xml?rev=723307&r1=723306&r2=723307&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-freemarker/pom.xml (original)
+++ tiles/sandbox/trunk/tiles-freemarker/pom.xml Thu Dec  4 05:01:47 2008
@@ -52,5 +52,25 @@
         <version>2.5</version>
         <scope>provided</scope>
     </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.0</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>2.4</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.easymock</groupId>
+    	<artifactId>easymockclassextension</artifactId>
+    	<version>2.4</version>
+    	<scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Modified: tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java?rev=723307&r1=723306&r2=723307&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java (original)
+++ tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java Thu Dec  4 05:01:47 2008
@@ -2,64 +2,26 @@
 
 import java.io.IOException;
 import java.util.Locale;
-import java.util.Map;
 
-import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.freemarker.FreeMarkerTilesException;
-import org.apache.tiles.servlet.context.ServletTilesRequestContext;
+import org.apache.tiles.context.TilesRequestContextWrapper;
 
 import freemarker.core.Environment;
-import freemarker.ext.servlet.HttpRequestHashModel;
-import freemarker.template.TemplateModelException;
 
-public class FreeMarkerTilesRequestContext implements TilesRequestContext {
-
-    private TilesApplicationContext applicationContext;
+public class FreeMarkerTilesRequestContext extends TilesRequestContextWrapper implements TilesRequestContext {
     
     private Environment env;
     
-    private TilesRequestContext enclosedRequest;
-    
     public FreeMarkerTilesRequestContext(
-            TilesApplicationContext applicationContext, Environment env) {
-        this.applicationContext = applicationContext;
+            TilesRequestContext enclosedRequest, Environment env) {
+        super(enclosedRequest);
         this.env = env;
-        try {
-            HttpRequestHashModel request = (HttpRequestHashModel) env
-                    .getDataModel().get("Request");
-            enclosedRequest = new ServletTilesRequestContext(applicationContext,
-                    request.getRequest(), request.getResponse());
-        } catch (TemplateModelException e) {
-            throw new FreeMarkerTilesException(
-                    "Cannot obtain a hash from FreeMarker", e);
-        }
     }
     
 	public void dispatch(String path) throws IOException {
 	    include(path);
 	}
 
-	public TilesApplicationContext getApplicationContext() {
-		return applicationContext;
-	}
-
-	public Map<String, String> getHeader() {
-		return enclosedRequest.getHeader();
-	}
-
-	public Map<String, String[]> getHeaderValues() {
-		return enclosedRequest.getHeaderValues();
-	}
-
-	public Map<String, String> getParam() {
-		return enclosedRequest.getParam();
-	}
-
-	public Map<String, String[]> getParamValues() {
-		return enclosedRequest.getParamValues();
-	}
-
 	public Object getRequest() {
 		return env;
 	}
@@ -68,23 +30,7 @@
 		return env.getLocale();
 	}
 
-	public Map<String, Object> getRequestScope() {
-		return enclosedRequest.getRequestScope();
-	}
-
 	public Object getResponse() {
 		return env;
 	}
-
-	public Map<String, Object> getSessionScope() {
-		return enclosedRequest.getSessionScope();
-	}
-
-	public void include(String path) throws IOException {
-	    enclosedRequest.include(path);
-	}
-
-	public boolean isUserInRole(String role) {
-		return enclosedRequest.isUserInRole(role);
-	}
 }

Copied: tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java (from r722864, tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesContextFactory.java)
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java?p2=tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java&p1=tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesContextFactory.java&r1=722864&r2=723307&rev=723307&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesContextFactory.java (original)
+++ tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java Thu Dec  4 05:01:47 2008
@@ -2,25 +2,62 @@
 
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.tiles.TilesApplicationContext;
-import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.awareness.TilesRequestContextFactoryAware;
 import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.TilesRequestContextFactory;
+import org.apache.tiles.freemarker.FreeMarkerTilesException;
+import org.apache.tiles.servlet.context.ServletTilesRequestContext;
 
 import freemarker.core.Environment;
-
-public class FreeMarkerTilesContextFactory implements TilesContextFactory {
-
-    public TilesApplicationContext createApplicationContext(Object context) {
-        throw new UnsupportedOperationException(
-                "Cannot create an application context "
-                        + "since FreeMarker is only available at request time");
+import freemarker.ext.servlet.HttpRequestHashModel;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateModelException;
+
+public class FreeMarkerTilesRequestContextFactory implements
+        TilesRequestContextFactory, TilesRequestContextFactoryAware {
+
+    /**
+     * Parent Tiles context factory.
+     */
+    private TilesRequestContextFactory parent;
+
+    /** {@inheritDoc} */
+    public void setRequestContextFactory(
+            TilesRequestContextFactory contextFactory) {
+        parent = contextFactory;
     }
 
     public TilesRequestContext createRequestContext(
             TilesApplicationContext context, Object... requestItems) {
         if (requestItems.length == 1 && requestItems[0] instanceof Environment) {
-            return new FreeMarkerTilesRequestContext(context,
-                    (Environment) requestItems[0]);
+            Environment env = (Environment) requestItems[0];
+            TemplateHashModel dataModel = env.getDataModel();
+            try {
+                Object requestObj = dataModel.get("Request");
+                if (requestObj instanceof HttpRequestHashModel) {
+                    HttpRequestHashModel requestModel = (HttpRequestHashModel) requestObj;
+                    HttpServletRequest request = requestModel.getRequest();
+                    HttpServletResponse response = requestModel.getResponse();
+                    TilesRequestContext enclosedRequest;
+                    if (parent != null) {
+                        enclosedRequest = parent.createRequestContext(context, request,
+                                response);
+                    } else {
+                        enclosedRequest = new ServletTilesRequestContext(context,
+                                (HttpServletRequest) request,
+                                (HttpServletResponse) response);
+                    }
+                    return new FreeMarkerTilesRequestContext(enclosedRequest, env);
+                } else {
+                    throw new FreeMarkerTilesException("The request hash model is not present");
+                }
+            } catch (TemplateModelException e) {
+                throw new FreeMarkerTilesException("Cannot complete the FreeMarker request", e);
+            }
         }
         return null;
     }

Propchange: tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: tiles/sandbox/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextFactory.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java?rev=723307&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java (added)
+++ tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java Thu Dec  4 05:01:47 2008
@@ -0,0 +1,48 @@
+package org.apache.tiles.freemarker.context;
+
+import java.io.StringWriter;
+import java.util.HashMap;
+
+import org.easymock.classextension.EasyMock;
+
+import freemarker.core.Environment;
+import freemarker.template.Template;
+import freemarker.template.TemplateHashModel;
+import junit.framework.TestCase;
+
+public class FreeMarkerTilesRequestContextTest extends TestCase {
+
+    private FreeMarkerTilesRequestContext context;
+    
+    private StringWriter writer;
+    
+    protected void setUp() throws Exception {
+        Template template = EasyMock.createMock(Template.class);
+        TemplateHashModel model = EasyMock.createMock(TemplateHashModel.class);
+        writer = new StringWriter();
+        EasyMock.expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        EasyMock.replay(template, model);
+        Environment env = new Environment(template, model, writer);
+    }
+
+    public void testGetRequestScope() {
+        fail("Not yet implemented");
+    }
+
+    public void testDispatch() {
+        fail("Not yet implemented");
+    }
+
+    public void testGetRequestLocale() {
+        fail("Not yet implemented");
+    }
+
+    public void testGetRequest() {
+        fail("Not yet implemented");
+    }
+
+    public void testFreeMarkerTilesRequestContext() {
+        fail("Not yet implemented");
+    }
+
+}

Propchange: tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tiles/sandbox/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContextTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL