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;
+
+    /** [EMAIL PROTECTED] */
+    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


Reply via email to