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