updated to FreeMarker 2.3.15 (SPR-4962)

This commit is contained in:
Juergen Hoeller 2009-04-19 22:22:56 +00:00
parent 58a458986f
commit 4cf573ba98
12 changed files with 787 additions and 767 deletions

View File

@ -1,169 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4"> <module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" /> <excludeFolder url="file://$MODULE_DIR$/target" />
</content> </content>
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="module" module-name="beans" /> <orderEntry type="module" module-name="beans" />
<orderEntry type="module" module-name="context" /> <orderEntry type="module" module-name="context" />
<orderEntry type="module" module-name="core" /> <orderEntry type="module" module-name="core" />
<orderEntry type="module" module-name="jdbc" /> <orderEntry type="module" module-name="jdbc" />
<orderEntry type="module" module-name="transaction" /> <orderEntry type="module" module-name="transaction" />
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-sources-1.1.1.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-sources-1.1.1.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.apache.velocity/com.springsource.org.apache.velocity/1.5.0/com.springsource.org.apache.velocity-1.5.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.velocity/com.springsource.org.apache.velocity/1.5.0/com.springsource.org.apache.velocity-1.5.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.apache.velocity/com.springsource.org.apache.velocity/1.5.0/com.springsource.org.apache.velocity-sources-1.5.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.velocity/com.springsource.org.apache.velocity/1.5.0/com.springsource.org.apache.velocity-sources-1.5.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.12/com.springsource.freemarker-2.3.12.jar!/" /> <root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.15/com.springsource.freemarker-2.3.15.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.12/com.springsource.freemarker-sources-2.3.12.jar!/" /> <root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.15/com.springsource.freemarker-sources-2.3.15.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/net.sourceforge.jasperreports/com.springsource.net.sf.jasperreports/2.0.5/com.springsource.net.sf.jasperreports-2.0.5.jar!/" /> <root url="jar://$IVY_CACHE$/net.sourceforge.jasperreports/com.springsource.net.sf.jasperreports/2.0.5/com.springsource.net.sf.jasperreports-2.0.5.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/net.sourceforge.jasperreports/com.springsource.net.sf.jasperreports/2.0.5/com.springsource.net.sf.jasperreports-sources-2.0.5.jar!/" /> <root url="jar://$IVY_CACHE$/net.sourceforge.jasperreports/com.springsource.net.sf.jasperreports/2.0.5/com.springsource.net.sf.jasperreports-sources-2.0.5.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/com.opensymphony.quartz/com.springsource.org.quartz/1.6.2/com.springsource.org.quartz-1.6.2.jar!/" /> <root url="jar://$IVY_CACHE$/com.opensymphony.quartz/com.springsource.org.quartz/1.6.2/com.springsource.org.quartz-1.6.2.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/com.opensymphony.quartz/com.springsource.org.quartz/1.6.2/com.springsource.org.quartz-sources-1.6.2.jar!/" /> <root url="jar://$IVY_CACHE$/com.opensymphony.quartz/com.springsource.org.quartz/1.6.2/com.springsource.org.quartz-sources-1.6.2.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/com.bea.commonj/com.springsource.commonj/1.1.0/com.springsource.commonj-1.1.0.jar!/" /> <root url="jar://$IVY_CACHE$/com.bea.commonj/com.springsource.commonj/1.1.0/com.springsource.commonj-1.1.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/com.bea.commonj/com.springsource.commonj/1.1.0/com.springsource.commonj-sources-1.1.0.jar!/" /> <root url="jar://$IVY_CACHE$/com.bea.commonj/com.springsource.commonj/1.1.0/com.springsource.commonj-sources-1.1.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-1.2.15.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-1.2.15.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-sources-1.2.15.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-sources-1.2.15.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-4.5.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-4.5.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-sources-4.5.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-sources-4.5.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-3.2.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-3.2.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-sources-3.2.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-sources-3.2.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/javax.mail/com.springsource.javax.mail/1.4.0/com.springsource.javax.mail-1.4.0.jar!/" /> <root url="jar://$IVY_CACHE$/javax.mail/com.springsource.javax.mail/1.4.0/com.springsource.javax.mail-1.4.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/javax.mail/com.springsource.javax.mail/1.4.0/com.springsource.javax.mail-sources-1.4.0.jar!/" /> <root url="jar://$IVY_CACHE$/javax.mail/com.springsource.javax.mail/1.4.0/com.springsource.javax.mail-sources-1.4.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/net.sourceforge.ehcache/com.springsource.net.sf.ehcache/1.3.0/com.springsource.net.sf.ehcache-1.3.0.jar!/" /> <root url="jar://$IVY_CACHE$/net.sourceforge.ehcache/com.springsource.net.sf.ehcache/1.3.0/com.springsource.net.sf.ehcache-1.3.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/net.sourceforge.ehcache/com.springsource.net.sf.ehcache/1.3.0/com.springsource.net.sf.ehcache-sources-1.3.0.jar!/" /> <root url="jar://$IVY_CACHE$/net.sourceforge.ehcache/com.springsource.net.sf.ehcache/1.3.0/com.springsource.net.sf.ehcache-sources-1.3.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.apache.poi/com.springsource.org.apache.poi/3.0.2.FINAL/com.springsource.org.apache.poi-3.0.2.FINAL.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.poi/com.springsource.org.apache.poi/3.0.2.FINAL/com.springsource.org.apache.poi-3.0.2.FINAL.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.apache.poi/com.springsource.org.apache.poi/3.0.2.FINAL/com.springsource.org.apache.poi-sources-3.0.2.FINAL.jar!/" /> <root url="jar://$IVY_CACHE$/org.apache.poi/com.springsource.org.apache.poi/3.0.2.FINAL/com.springsource.org.apache.poi-sources-3.0.2.FINAL.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar!/" /> <root url="jar://$IVY_CACHE$/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
</component> </component>
<component name="copyright"> <component name="copyright">
<Base> <Base>
<setting name="state" value="2" /> <setting name="state" value="2" />
</Base> </Base>
</component> </component>
</module> </module>

View File

@ -29,7 +29,7 @@
<dependencies> <dependencies>
<dependency org="com.bea.commonj" name="com.springsource.commonj" rev="1.1.0" conf="optional, commonj->compile"/> <dependency org="com.bea.commonj" name="com.springsource.commonj" rev="1.1.0" conf="optional, commonj->compile"/>
<dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.12" conf="optional, freemarker->compile"/> <dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.15" conf="optional, freemarker->compile"/>
<dependency org="javax.activation" name="com.springsource.javax.activation" rev="1.1.0" conf="provided->compile"/> <dependency org="javax.activation" name="com.springsource.javax.activation" rev="1.1.0" conf="provided->compile"/>
<dependency org="javax.mail" name="com.springsource.javax.mail" rev="1.4.0" conf="optional, mail->compile"/> <dependency org="javax.mail" name="com.springsource.javax.mail" rev="1.4.0" conf="optional, mail->compile"/>
<dependency org="net.sourceforge.ehcache" name="com.springsource.net.sf.ehcache" rev="1.3.0" conf="optional, ehcache->compile"/> <dependency org="net.sourceforge.ehcache" name="com.springsource.net.sf.ehcache" rev="1.3.0" conf="optional, ehcache->compile"/>

View File

@ -24,9 +24,6 @@
<artifactId>jta</artifactId> <artifactId>jta</artifactId>
<version>1.1</version> <version>1.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>quartz</groupId> <groupId>quartz</groupId>
<artifactId>quartz</artifactId> <artifactId>quartz</artifactId>
@ -38,12 +35,10 @@
<version>1.6.0</version> <version>1.6.0</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
<version>2.3.12</version> <version>2.3.15</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>

File diff suppressed because it is too large Load Diff

View File

@ -69,7 +69,7 @@
<dependency org="org.easymock" name="com.springsource.org.easymock.classextension" rev="2.3.0" conf="test->compile"/> <dependency org="org.easymock" name="com.springsource.org.easymock.classextension" rev="2.3.0" conf="test->compile"/>
<dependency org="org.eclipse.persistence" name="com.springsource.org.eclipse.persistence" rev="1.0.1" conf="test->compile"/> <dependency org="org.eclipse.persistence" name="com.springsource.org.eclipse.persistence" rev="1.0.1" conf="test->compile"/>
<dependency org="org.eclipse.persistence" name="com.springsource.org.eclipse.persistence.jpa" rev="1.0.1" conf="test->compile"/> <dependency org="org.eclipse.persistence" name="com.springsource.org.eclipse.persistence.jpa" rev="1.0.1" conf="test->compile"/>
<dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.12" conf="test->compile"/> <dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.15" conf="test->compile"/>
<dependency org="org.hibernate" name="com.springsource.org.hibernate" rev="3.3.1.GA" conf="test->compile"/> <dependency org="org.hibernate" name="com.springsource.org.hibernate" rev="3.3.1.GA" conf="test->compile"/>
<dependency org="org.hibernate" name="com.springsource.org.hibernate.annotations" rev="3.4.0.GA" conf="test->compile"/> <dependency org="org.hibernate" name="com.springsource.org.hibernate.annotations" rev="3.4.0.GA" conf="test->compile"/>
<dependency org="org.hibernate" name="com.springsource.org.hibernate.annotations.common" rev="3.3.0.ga" conf="test->compile"/> <dependency org="org.hibernate" name="com.springsource.org.hibernate.annotations.common" rev="3.3.0.ga" conf="test->compile"/>

View File

@ -309,7 +309,7 @@
<dependency> <dependency>
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
<version>2.3.12</version> <version>2.3.15</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -34,7 +34,7 @@
conf="optional, feed->compile"/> conf="optional, feed->compile"/>
<dependency org="com.lowagie.text" name="com.springsource.com.lowagie.text" rev="2.0.8" <dependency org="com.lowagie.text" name="com.springsource.com.lowagie.text" rev="2.0.8"
conf="optional, itext->compile"/> conf="optional, itext->compile"/>
<dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.12" <dependency org="org.freemarker" name="com.springsource.freemarker" rev="2.3.15"
conf="optional, freemarker->compile"/> conf="optional, freemarker->compile"/>
<dependency org="javax.el" name="com.springsource.javax.el" rev="1.0.0" conf="provided->compile"/> <dependency org="javax.el" name="com.springsource.javax.el" rev="1.0.0" conf="provided->compile"/>
<dependency org="javax.servlet" name="com.springsource.javax.servlet" rev="2.5.0" conf="provided->compile"/> <dependency org="javax.servlet" name="com.springsource.javax.servlet" rev="2.5.0" conf="provided->compile"/>

View File

@ -28,7 +28,7 @@
<dependency> <dependency>
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
<version>2.3.12</version> <version>2.3.15</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -34,6 +34,7 @@ import javax.servlet.http.HttpSession;
import freemarker.core.ParseException; import freemarker.core.ParseException;
import freemarker.ext.jsp.TaglibFactory; import freemarker.ext.jsp.TaglibFactory;
import freemarker.ext.servlet.AllHttpScopesHashModel;
import freemarker.ext.servlet.FreemarkerServlet; import freemarker.ext.servlet.FreemarkerServlet;
import freemarker.ext.servlet.HttpRequestHashModel; import freemarker.ext.servlet.HttpRequestHashModel;
import freemarker.ext.servlet.HttpRequestParametersHashModel; import freemarker.ext.servlet.HttpRequestParametersHashModel;
@ -41,6 +42,7 @@ import freemarker.ext.servlet.HttpSessionHashModel;
import freemarker.ext.servlet.ServletContextHashModel; import freemarker.ext.servlet.ServletContextHashModel;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.ObjectWrapper; import freemarker.template.ObjectWrapper;
import freemarker.template.SimpleHash;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
@ -250,7 +252,7 @@ public class FreeMarkerView extends AbstractTemplateView {
* library hash model. * library hash model.
* <p>Can be overridden to customize the behavior, for example to render * <p>Can be overridden to customize the behavior, for example to render
* multiple templates into a single view. * multiple templates into a single view.
* @param model the template model to use for rendering * @param model the model to use for rendering
* @param request current HTTP request * @param request current HTTP request
* @param response current servlet response * @param response current servlet response
* @throws IOException if the template file could not be retrieved * @throws IOException if the template file could not be retrieved
@ -264,20 +266,34 @@ public class FreeMarkerView extends AbstractTemplateView {
protected void doRender(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { protected void doRender(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
// Expose model to JSP tags (as request attributes). // Expose model to JSP tags (as request attributes).
exposeModelAsRequestAttributes(model, request); exposeModelAsRequestAttributes(model, request);
// Expose all standard FreeMarker hash models. // Expose all standard FreeMarker hash models.
model.put(FreemarkerServlet.KEY_JSP_TAGLIBS, this.taglibFactory); SimpleHash fmModel = buildTemplateModel(model, request, response);
model.put(FreemarkerServlet.KEY_APPLICATION, this.servletContextHashModel);
model.put(FreemarkerServlet.KEY_SESSION, buildSessionModel(request, response));
model.put(FreemarkerServlet.KEY_REQUEST, new HttpRequestHashModel(request, response, getObjectWrapper()));
model.put(FreemarkerServlet.KEY_REQUEST_PARAMETERS, new HttpRequestParametersHashModel(request));
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("Rendering FreeMarker template [" + getUrl() + "] in FreeMarkerView '" + getBeanName() + "'"); logger.debug("Rendering FreeMarker template [" + getUrl() + "] in FreeMarkerView '" + getBeanName() + "'");
} }
// Grab the locale-specific version of the template. // Grab the locale-specific version of the template.
Locale locale = RequestContextUtils.getLocale(request); Locale locale = RequestContextUtils.getLocale(request);
processTemplate(getTemplate(locale), model, response); processTemplate(getTemplate(locale), fmModel, response);
}
/**
* Build a FreeMarker template model for the given model Map.
* <p>The default implementation builds a {@link AllHttpScopesHashModel}.
* @param model the model to use for rendering
* @param request current HTTP request
* @param response current servlet response
* @return the FreeMarker template model, as a {@link SimpleHash} or subclass thereof
*/
protected SimpleHash buildTemplateModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
AllHttpScopesHashModel fmModel = new AllHttpScopesHashModel(getObjectWrapper(), getServletContext(), request);
fmModel.put(FreemarkerServlet.KEY_JSP_TAGLIBS, this.taglibFactory);
fmModel.put(FreemarkerServlet.KEY_APPLICATION, this.servletContextHashModel);
fmModel.put(FreemarkerServlet.KEY_SESSION, buildSessionModel(request, response));
fmModel.put(FreemarkerServlet.KEY_REQUEST, new HttpRequestHashModel(request, response, getObjectWrapper()));
fmModel.put(FreemarkerServlet.KEY_REQUEST_PARAMETERS, new HttpRequestParametersHashModel(request));
fmModel.putAll(model);
return fmModel;
} }
/** /**
@ -338,7 +354,7 @@ public class FreeMarkerView extends AbstractTemplateView {
* @throws TemplateException if thrown by FreeMarker * @throws TemplateException if thrown by FreeMarker
* @see freemarker.template.Template#process(Object, java.io.Writer) * @see freemarker.template.Template#process(Object, java.io.Writer)
*/ */
protected void processTemplate(Template template, Map<String, Object> model, HttpServletResponse response) protected void processTemplate(Template template, SimpleHash model, HttpServletResponse response)
throws IOException, TemplateException { throws IOException, TemplateException {
template.process(model, response.getWriter()); template.process(model, response.getWriter());

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2007 the original author or authors. * Copyright 2002-2009 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -24,6 +24,9 @@ import javax.servlet.http.HttpServletResponse;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateModel;
import freemarker.template.SimpleHash;
import freemarker.template.TemplateException;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.springframework.beans.TestBean; import org.springframework.beans.TestBean;
@ -79,7 +82,9 @@ public class FreeMarkerMacroTests extends TestCase {
public void testExposeSpringMacroHelpers() throws Exception { public void testExposeSpringMacroHelpers() throws Exception {
FreeMarkerView fv = new FreeMarkerView() { FreeMarkerView fv = new FreeMarkerView() {
protected void processTemplate(Template template, Map model, HttpServletResponse response) { @Override
protected void processTemplate(Template template, SimpleHash fmModel, HttpServletResponse response) throws TemplateException {
Map model = fmModel.toMap();
assertTrue(model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE) instanceof RequestContext); assertTrue(model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE) instanceof RequestContext);
RequestContext rc = (RequestContext) model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE); RequestContext rc = (RequestContext) model.get(FreeMarkerView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE);
BindStatus status = rc.getBindStatus("tb.name"); BindStatus status = rc.getBindStatus("tb.name");
@ -100,7 +105,8 @@ public class FreeMarkerMacroTests extends TestCase {
final String helperTool = "wrongType"; final String helperTool = "wrongType";
FreeMarkerView fv = new FreeMarkerView() { FreeMarkerView fv = new FreeMarkerView() {
protected void processTemplate(Template template, Map model, HttpServletResponse response) { @Override
protected void processTemplate(Template template, SimpleHash model, HttpServletResponse response) {
fail(); fail();
} }
}; };
@ -155,6 +161,7 @@ public class FreeMarkerMacroTests extends TestCase {
view.setUrl("test.ftl"); view.setUrl("test.ftl");
view.setExposeSpringMacroHelpers(false); view.setExposeSpringMacroHelpers(false);
view.setConfiguration(config); view.setConfiguration(config);
view.setServletContext(new MockServletContext());
view.render(model, request, response); view.render(model, request, response);

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2008 the original author or authors. * Copyright 2002-2009 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -24,7 +24,9 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import freemarker.ext.servlet.AllHttpScopesHashModel;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.SimpleScalar;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import org.easymock.MockControl; import org.easymock.MockControl;
@ -104,7 +106,7 @@ public class FreeMarkerViewTests {
wac.getParentBeanFactory(); wac.getParentBeanFactory();
wmc.setReturnValue(null); wmc.setReturnValue(null);
wac.getServletContext(); wac.getServletContext();
wmc.setReturnValue(sc, 4); wmc.setReturnValue(sc, 5);
wmc.replay(); wmc.replay();
fv.setUrl("templateName"); fv.setUrl("templateName");
@ -141,7 +143,7 @@ public class FreeMarkerViewTests {
wac.getParentBeanFactory(); wac.getParentBeanFactory();
wmc.setReturnValue(null); wmc.setReturnValue(null);
wac.getServletContext(); wac.getServletContext();
wmc.setReturnValue(sc, 4); wmc.setReturnValue(sc, 5);
wmc.replay(); wmc.replay();
fv.setUrl("templateName"); fv.setUrl("templateName");
@ -170,9 +172,9 @@ public class FreeMarkerViewTests {
return new Template(name, new StringReader("test")) { return new Template(name, new StringReader("test")) {
public void process(Object model, Writer writer) throws TemplateException, IOException { public void process(Object model, Writer writer) throws TemplateException, IOException {
assertEquals(Locale.US, locale); assertEquals(Locale.US, locale);
assertTrue(model instanceof Map); assertTrue(model instanceof AllHttpScopesHashModel);
Map modelMap = (Map) model; AllHttpScopesHashModel fmModel = (AllHttpScopesHashModel) model;
assertEquals("myvalue", modelMap.get("myattr")); assertEquals("myvalue", fmModel.get("myattr").toString());
} }
}; };
} }

View File

@ -43,11 +43,11 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.12/com.springsource.freemarker-2.3.12.jar!/" /> <root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.15/com.springsource.freemarker-2.3.15.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.12/com.springsource.freemarker-sources-2.3.12.jar!/" /> <root url="jar://$IVY_CACHE$/org.freemarker/com.springsource.freemarker/2.3.15/com.springsource.freemarker-sources-2.3.15.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>