You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by wo...@apache.org on 2017/07/14 15:51:11 UTC
incubator-freemarker git commit: FREEMARKER-55: Renaming Freemarker
to FreeMarker
Repository: incubator-freemarker
Updated Branches:
refs/heads/3 aaa100c0c -> 5b856d3a5
FREEMARKER-55: Renaming Freemarker to FreeMarker
This closes #28
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/5b856d3a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/5b856d3a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/5b856d3a
Branch: refs/heads/3
Commit: 5b856d3a5f4e437e2f83055ea1c06c8fb49f4a00
Parents: aaa100c
Author: Woonsan Ko <wo...@apache.org>
Authored: Fri Jul 14 11:27:17 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Fri Jul 14 11:49:22 2017 -0400
----------------------------------------------------------------------
.../spring/web/view/AbstractFreeMarkerView.java | 170 ++++++++++++++++++
.../spring/web/view/AbstractFreemarkerView.java | 170 ------------------
.../spring/web/view/FreeMarkerView.java | 168 ++++++++++++++++++
.../spring/web/view/FreeMarkerViewResolver.java | 149 ++++++++++++++++
.../spring/web/view/FreemarkerView.java | 168 ------------------
.../spring/web/view/FreemarkerViewResolver.java | 149 ----------------
.../SpringResourceTemplateLoaderTest.java | 84 +++++++++
.../SpringResourceTemplateLoaderTest.java | 84 ---------
.../web/view/FreeMarkerViewResolverTest.java | 98 +++++++++++
.../spring/web/view/FreeMarkerViewTest.java | 176 +++++++++++++++++++
.../web/view/FreemarkerViewResolverTest.java | 98 -----------
.../spring/web/view/FreemarkerViewTest.java | 176 -------------------
12 files changed, 845 insertions(+), 845 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java
new file mode 100644
index 0000000..6d3c2ae
--- /dev/null
+++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring.web.view;
+
+import java.io.IOException;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.ParseException;
+import org.apache.freemarker.core.Template;
+import org.apache.freemarker.core.TemplateNotFoundException;
+import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
+import org.apache.freemarker.core.model.TemplateHashModel;
+import org.apache.freemarker.core.templateresolver.MalformedTemplateNameException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContextException;
+import org.springframework.web.servlet.view.AbstractTemplateView;
+
+/**
+ * Adapter base class for FreeMarker template-based views, with the ability to access {@link Configuration}
+ * and {@link ObjectWrapperAndUnwrapper}.
+ */
+public abstract class AbstractFreeMarkerView extends AbstractTemplateView {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractFreeMarkerView.class);
+
+ /**
+ * FreeMarker {@link Configuration} instance.
+ */
+ private Configuration configuration;
+
+ /**
+ * {@link ObjectWrapperAndUnwrapper} instance to use in model building.
+ */
+ private ObjectWrapperAndUnwrapper objectWrapper;
+
+ /**
+ * Template {@link Locale}.
+ */
+ private Locale locale;
+
+ /**
+ * Get FreeMarker {@link Configuration} instance.
+ * @return {@link Configuration} instance
+ */
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ /**
+ * Set FreeMarker {@link Configuration} instance.
+ * @param configuration {@link Configuration} instance
+ */
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ /**
+ * Get {@link ObjectWrapperAndUnwrapper} that is used in model building.
+ * @return {@link ObjectWrapperAndUnwrapper} that is used in model building
+ */
+ public ObjectWrapperAndUnwrapper getObjectWrapper() {
+ return objectWrapper;
+ }
+
+ /**
+ * Set {@link ObjectWrapperAndUnwrapper} that is used in model building.
+ * @param objectWrapper {@link ObjectWrapperAndUnwrapper} that is used in model building
+ */
+ public void setObjectWrapper(ObjectWrapperAndUnwrapper objectWrapper) {
+ this.objectWrapper = objectWrapper;
+ }
+
+ /**
+ * Get template locale.
+ * @return template locale
+ */
+ public Locale getLocale() {
+ return locale;
+ }
+
+ /**
+ * Set template locale.
+ * @param locale template locale
+ */
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean checkResource(Locale locale) throws Exception {
+ if (this.locale == null) {
+ this.locale = locale;
+ }
+
+ try {
+ // Check whether the underlying resource exists by trying to get the template.
+ getTemplate();
+ return true;
+ } catch (TemplateNotFoundException e) {
+ LOG.debug("No view found for URL: {}", getUrl());
+ } catch (MalformedTemplateNameException e) {
+ throw new ApplicationContextException("Malformed template name: " + getUrl(), e);
+ } catch (ParseException e) {
+ throw new ApplicationContextException("Template parsing exception: " + getUrl(), e);
+ } catch (IOException e) {
+ throw new ApplicationContextException("Template IO exception: " + getUrl(), e);
+ }
+
+ return false;
+ }
+
+ @Override
+ protected void renderMergedTemplateModel(Map<String, Object> model, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ getTemplate().process(createModel(model, getObjectWrapper(), request, response), response.getWriter());
+ }
+
+ /**
+ * Get template from the FreeMarker {@link Configuration} instance.
+ * @return template from the FreeMarker {@link Configuration} instance
+ * @throws TemplateNotFoundException if template is not found
+ * @throws MalformedTemplateNameException if template name is malformed
+ * @throws ParseException if the template is syntactically bad
+ * @throws IOException if template cannot be read due to IO error
+ */
+ protected Template getTemplate()
+ throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException {
+ return getConfiguration().getTemplate(normalizeTemplateName(getUrl()), getLocale());
+ }
+
+ /**
+ * Create model for the template.
+ * @param map map as initial source for the template model
+ * @param objectWrapperForModel ObjectWrapper to be used in model building
+ * @param request request
+ * @param response response
+ * @return model for the template
+ */
+ protected abstract TemplateHashModel createModel(Map<String, Object> map,
+ ObjectWrapperAndUnwrapper objectWrapperForModel, HttpServletRequest request, HttpServletResponse response);
+
+ private String normalizeTemplateName(String name) {
+ if (name != null) {
+ return (name.startsWith("/")) ? name.substring(1) : name;
+ }
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreemarkerView.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreemarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreemarkerView.java
deleted file mode 100644
index abd5e32..0000000
--- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreemarkerView.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.web.view;
-
-import java.io.IOException;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.ParseException;
-import org.apache.freemarker.core.Template;
-import org.apache.freemarker.core.TemplateNotFoundException;
-import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
-import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.templateresolver.MalformedTemplateNameException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContextException;
-import org.springframework.web.servlet.view.AbstractTemplateView;
-
-/**
- * Adapter base class for FreeMarker template-based views, with the ability to access {@link Configuration}
- * and {@link ObjectWrapperAndUnwrapper}.
- */
-public abstract class AbstractFreemarkerView extends AbstractTemplateView {
-
- private static final Logger LOG = LoggerFactory.getLogger(AbstractFreemarkerView.class);
-
- /**
- * FreeMarker {@link Configuration} instance.
- */
- private Configuration configuration;
-
- /**
- * {@link ObjectWrapperAndUnwrapper} instance to use in model building.
- */
- private ObjectWrapperAndUnwrapper objectWrapper;
-
- /**
- * Template {@link Locale}.
- */
- private Locale locale;
-
- /**
- * Get FreeMarker {@link Configuration} instance.
- * @return {@link Configuration} instance
- */
- public Configuration getConfiguration() {
- return configuration;
- }
-
- /**
- * Set FreeMarker {@link Configuration} instance.
- * @param configuration {@link Configuration} instance
- */
- public void setConfiguration(Configuration configuration) {
- this.configuration = configuration;
- }
-
- /**
- * Get {@link ObjectWrapperAndUnwrapper} that is used in model building.
- * @return {@link ObjectWrapperAndUnwrapper} that is used in model building
- */
- public ObjectWrapperAndUnwrapper getObjectWrapper() {
- return objectWrapper;
- }
-
- /**
- * Set {@link ObjectWrapperAndUnwrapper} that is used in model building.
- * @param objectWrapper {@link ObjectWrapperAndUnwrapper} that is used in model building
- */
- public void setObjectWrapper(ObjectWrapperAndUnwrapper objectWrapper) {
- this.objectWrapper = objectWrapper;
- }
-
- /**
- * Get template locale.
- * @return template locale
- */
- public Locale getLocale() {
- return locale;
- }
-
- /**
- * Set template locale.
- * @param locale template locale
- */
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Override
- public boolean checkResource(Locale locale) throws Exception {
- if (this.locale == null) {
- this.locale = locale;
- }
-
- try {
- // Check whether the underlying resource exists by trying to get the template.
- getTemplate();
- return true;
- } catch (TemplateNotFoundException e) {
- LOG.debug("No view found for URL: {}", getUrl());
- } catch (MalformedTemplateNameException e) {
- throw new ApplicationContextException("Malformed template name: " + getUrl(), e);
- } catch (ParseException e) {
- throw new ApplicationContextException("Template parsing exception: " + getUrl(), e);
- } catch (IOException e) {
- throw new ApplicationContextException("Template IO exception: " + getUrl(), e);
- }
-
- return false;
- }
-
- @Override
- protected void renderMergedTemplateModel(Map<String, Object> model, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- getTemplate().process(createModel(model, getObjectWrapper(), request, response), response.getWriter());
- }
-
- /**
- * Get template from the FreeMarker {@link Configuration} instance.
- * @return template from the FreeMarker {@link Configuration} instance
- * @throws TemplateNotFoundException if template is not found
- * @throws MalformedTemplateNameException if template name is malformed
- * @throws ParseException if the template is syntactically bad
- * @throws IOException if template cannot be read due to IO error
- */
- protected Template getTemplate()
- throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException {
- return getConfiguration().getTemplate(normalizeTemplateName(getUrl()), getLocale());
- }
-
- /**
- * Create model for the template.
- * @param map map as initial source for the template model
- * @param objectWrapperForModel ObjectWrapper to be used in model building
- * @param request request
- * @param response response
- * @return model for the template
- */
- protected abstract TemplateHashModel createModel(Map<String, Object> map,
- ObjectWrapperAndUnwrapper objectWrapperForModel, HttpServletRequest request, HttpServletResponse response);
-
- private String normalizeTemplateName(String name) {
- if (name != null) {
- return (name.startsWith("/")) ? name.substring(1) : name;
- }
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java
new file mode 100644
index 0000000..e827db5
--- /dev/null
+++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring.web.view;
+
+import java.util.Map;
+
+import javax.servlet.GenericServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
+import org.apache.freemarker.core.model.TemplateHashModel;
+import org.apache.freemarker.servlet.AllHttpScopesHashModel;
+import org.apache.freemarker.servlet.FreemarkerServlet;
+import org.apache.freemarker.servlet.HttpRequestHashModel;
+import org.apache.freemarker.servlet.HttpRequestParametersHashModel;
+import org.apache.freemarker.servlet.HttpSessionHashModel;
+import org.apache.freemarker.servlet.ServletContextHashModel;
+import org.apache.freemarker.servlet.jsp.TaglibFactory;
+
+/**
+ * FreeMarker template based view implementation, with being able to provide a {@link ServletContextHashModel}
+ * and {@link TaglibFactory} models to the templates.
+ */
+public class FreeMarkerView extends AbstractFreeMarkerView {
+
+ /**
+ * Internal servlet instance to provide a page object in JSP tag library usages.
+ * @see {@link javax.servlet.jsp.PageContext#getPage()}
+ */
+ private GenericServlet pageContextServlet;
+
+ /**
+ * {@link ServletContextHashModel} instance for templates to access servlet context attributes.
+ */
+ private ServletContextHashModel servletContextModel;
+
+ /**
+ * {@link TaglibFactory} instance for templates to be able to use JSP tag libraries.
+ */
+ private TaglibFactory taglibFactory;
+
+ /**
+ * Get {@link GenericServlet} instance which is a page object in JSP tag library usages.
+ * @return {@link GenericServlet} instance which is a page object in JSP tag library usages
+ */
+ public GenericServlet getPageContextServlet() {
+ return pageContextServlet;
+ }
+
+ /**
+ * Set {@link GenericServlet} instance which is a page object in JSP tag library usages.
+ * @param pageContextServlet {@link GenericServlet} instance which is a page object in JSP tag library
+ * usages
+ */
+ public void setPageContextServlet(GenericServlet pageContextServlet) {
+ this.pageContextServlet = pageContextServlet;
+ }
+
+ /**
+ * Get {@link ServletContextHashModel} instance by which templates can access servlet context attributes.
+ * @return {@link ServletContextHashModel} instance by which templates can access servlet context attributes
+ */
+ public ServletContextHashModel getServletContextModel() {
+ return servletContextModel;
+ }
+
+ /**
+ * Set {@link ServletContextHashModel} instance by which templates can access servlet context attributes.
+ * @param servletContextModel {@link ServletContextHashModel} instance by which templates can access servlet
+ * context attributes
+ */
+ public void setServletContextModel(ServletContextHashModel servletContextModel) {
+ this.servletContextModel = servletContextModel;
+ }
+
+ /**
+ * Get {@link TaglibFactory} instance by which templates can use JSP tag libraries.
+ * @return {@link TaglibFactory} instance by which templates can use JSP tag libraries.
+ */
+ public TaglibFactory getTaglibFactory() {
+ return taglibFactory;
+ }
+
+ /**
+ * Set {@link TaglibFactory} instance by which templates can use JSP tag libraries.
+ * @param taglibFactory {@link TaglibFactory} instance by which templates can use JSP tag libraries.
+ */
+ public void setTaglibFactory(TaglibFactory taglibFactory) {
+ this.taglibFactory = taglibFactory;
+ }
+
+ @Override
+ protected TemplateHashModel createModel(Map<String, Object> map, ObjectWrapperAndUnwrapper objectWrapper,
+ HttpServletRequest request, HttpServletResponse response) {
+
+ AllHttpScopesHashModel model = new AllHttpScopesHashModel(objectWrapper, getServletContext(), request);
+
+ model.putUnlistedModel(FreemarkerServlet.KEY_APPLICATION, getServletContextModel());
+
+ model.putUnlistedModel(FreemarkerServlet.KEY_SESSION,
+ getHttpSessionModel(objectWrapper, request, response));
+
+ HttpRequestHashModel requestModel = (HttpRequestHashModel) request
+ .getAttribute(FreemarkerServlet.ATTR_REQUEST_MODEL);
+ HttpRequestParametersHashModel requestParametersModel = (HttpRequestParametersHashModel) request
+ .getAttribute(FreemarkerServlet.ATTR_REQUEST_PARAMETERS_MODEL);
+
+ if (requestModel == null || requestModel.getRequest() != request) {
+ requestModel = new HttpRequestHashModel(request, response, objectWrapper);
+ request.setAttribute(FreemarkerServlet.ATTR_REQUEST_MODEL, requestModel);
+ requestParametersModel = new HttpRequestParametersHashModel(request, objectWrapper);
+ }
+
+ model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST, requestModel);
+ model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST_PARAMETERS, requestParametersModel);
+
+ model.putUnlistedModel(FreemarkerServlet.KEY_JSP_TAGLIBS, getTaglibFactory());
+
+ model.putAll(map);
+
+ return model;
+ }
+
+ /**
+ * Get {@link HttpSessionHashModel} instance by which templates can access session attributes.
+ * @param objectWrapperForModel ObjectWrapper to be used in model building
+ * @param request request
+ * @param response response
+ * @return {@link HttpSessionHashModel} instance by which templates can access session attributes
+ */
+ protected HttpSessionHashModel getHttpSessionModel(ObjectWrapperAndUnwrapper objectWrapperForModel,
+ HttpServletRequest request, HttpServletResponse response) {
+ HttpSessionHashModel sessionModel;
+ HttpSession session = request.getSession(false);
+
+ if (session != null) {
+ sessionModel = (HttpSessionHashModel) session.getAttribute(FreemarkerServlet.ATTR_SESSION_MODEL);
+
+ if (sessionModel == null || sessionModel.isOrphaned(session)) {
+ sessionModel = new HttpSessionHashModel(session, objectWrapperForModel);
+ session.setAttribute(FreemarkerServlet.ATTR_SESSION_MODEL, sessionModel);
+ }
+ } else {
+ sessionModel = new HttpSessionHashModel(getPageContextServlet(), request, response, objectWrapperForModel);
+ }
+
+ return sessionModel;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java
new file mode 100644
index 0000000..101f5be
--- /dev/null
+++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring.web.view;
+
+import javax.servlet.GenericServlet;
+import javax.servlet.ServletException;
+
+import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
+import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
+import org.apache.freemarker.servlet.ServletContextHashModel;
+import org.apache.freemarker.servlet.jsp.TaglibFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
+import org.springframework.web.servlet.view.AbstractUrlBasedView;
+import org.springframework.web.servlet.view.UrlBasedViewResolver;
+
+/**
+ * FreeMarker template view resolver implementation, extending {@link AbstractTemplateViewResolver} that extends
+ * {@link UrlBasedViewResolver}.
+ * <p>
+ * The FreeMarker {@link Configuration} property must be set at least. Otherwise this throws {@link IllegalStateException}
+ * during initialization. In the bean initialization phase, this retrieves {@link ObjectWrapperAndUnwrapper} from
+ * the {@link Configuration} and instantiate the internal page object ({@link PageContextServlet}) for JSP tag
+ * library usages, {@link ServletContextHashModel} property for servlet context attribute accesses and {@link TaglibFactory}
+ * property for JSP tag library usages.
+ * </p>
+ */
+public class FreeMarkerViewResolver extends AbstractTemplateViewResolver implements InitializingBean {
+
+ /**
+ * FreeMarker {@link Configuration} instance.
+ */
+ private Configuration configuration;
+
+ /**
+ * {@link ObjectWrapperAndUnwrapper} instance to be used in model building.
+ */
+ private ObjectWrapperAndUnwrapper objectWrapper;
+
+ /**
+ * Internal servlet instance to provide a page object in JSP tag library usages.
+ * @see {@link javax.servlet.jsp.PageContext#getPage()}
+ */
+ private GenericServlet pageContextServlet;
+
+ /**
+ * {@link ServletContextHashModel} instance for templates to access servlet context attributes.
+ */
+ private ServletContextHashModel servletContextModel;
+
+ /**
+ * {@link TaglibFactory} instance for templates to be able to use JSP tag libraries.
+ */
+ private TaglibFactory taglibFactory;
+
+ /**
+ * Constructs view resolver.
+ */
+ public FreeMarkerViewResolver() {
+ super();
+ setViewClass(FreeMarkerView.class);
+ }
+
+ /**
+ * Get FreeMarker {@link Configuration} instance.
+ * @return FreeMarker {@link Configuration} instance
+ */
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ /**
+ * Set FreeMarker {@link Configuration} instance.
+ * @param configuration FreeMarker {@link Configuration} instance
+ */
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ if (configuration == null) {
+ throw new IllegalStateException("Configuration is not set.");
+ }
+
+ if (objectWrapper == null) {
+ if (configuration.isObjectWrapperSet()) {
+ if (!(configuration.getObjectWrapper() instanceof ObjectWrapperAndUnwrapper)) {
+ throw new RuntimeException(
+ FreeMarkerViewResolver.class.getSimpleName() + " requires an ObjectWrapper that "
+ + "implements " + ObjectWrapperAndUnwrapper.class.getName()
+ + ", but the Configuration's ObjectWrapper doesn't do that: "
+ + configuration.getObjectWrapper().getClass().getName());
+ }
+
+ objectWrapper = (ObjectWrapperAndUnwrapper) configuration.getObjectWrapper();
+ } else {
+ objectWrapper = new DefaultObjectWrapper.Builder(configuration.getIncompatibleImprovements()).build();
+ }
+ }
+
+ pageContextServlet = new PageContextServlet();
+
+ try {
+ pageContextServlet
+ .init(new PageContextServletConfig(getServletContext(), PageContextServlet.class.getSimpleName()));
+ } catch (ServletException e) {
+ // never happens...
+ }
+
+ servletContextModel = new ServletContextHashModel(pageContextServlet, objectWrapper);
+
+ taglibFactory = new TaglibFactory.Builder(getServletContext(), objectWrapper).build();
+ }
+
+ @Override
+ protected Class<?> requiredViewClass() {
+ return FreeMarkerView.class;
+ }
+
+ @Override
+ protected AbstractUrlBasedView buildView(String viewName) throws Exception {
+ FreeMarkerView view = (FreeMarkerView) super.buildView(viewName);
+ view.setConfiguration(configuration);
+ view.setObjectWrapper(objectWrapper);
+ view.setPageContextServlet(pageContextServlet);
+ view.setServletContextModel(servletContextModel);
+ view.setTaglibFactory(taglibFactory);
+ return view;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
deleted file mode 100644
index f3ac63b..0000000
--- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.web.view;
-
-import java.util.Map;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
-import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.servlet.AllHttpScopesHashModel;
-import org.apache.freemarker.servlet.FreemarkerServlet;
-import org.apache.freemarker.servlet.HttpRequestHashModel;
-import org.apache.freemarker.servlet.HttpRequestParametersHashModel;
-import org.apache.freemarker.servlet.HttpSessionHashModel;
-import org.apache.freemarker.servlet.ServletContextHashModel;
-import org.apache.freemarker.servlet.jsp.TaglibFactory;
-
-/**
- * FreeMarker template based view implementation, with being able to provide a {@link ServletContextHashModel}
- * and {@link TaglibFactory} models to the templates.
- */
-public class FreemarkerView extends AbstractFreemarkerView {
-
- /**
- * Internal servlet instance to provide a page object in JSP tag library usages.
- * @see {@link javax.servlet.jsp.PageContext#getPage()}
- */
- private GenericServlet pageContextServlet;
-
- /**
- * {@link ServletContextHashModel} instance for templates to access servlet context attributes.
- */
- private ServletContextHashModel servletContextModel;
-
- /**
- * {@link TaglibFactory} instance for templates to be able to use JSP tag libraries.
- */
- private TaglibFactory taglibFactory;
-
- /**
- * Get {@link GenericServlet} instance which is a page object in JSP tag library usages.
- * @return {@link GenericServlet} instance which is a page object in JSP tag library usages
- */
- public GenericServlet getPageContextServlet() {
- return pageContextServlet;
- }
-
- /**
- * Set {@link GenericServlet} instance which is a page object in JSP tag library usages.
- * @param pageContextServlet {@link GenericServlet} instance which is a page object in JSP tag library
- * usages
- */
- public void setPageContextServlet(GenericServlet pageContextServlet) {
- this.pageContextServlet = pageContextServlet;
- }
-
- /**
- * Get {@link ServletContextHashModel} instance by which templates can access servlet context attributes.
- * @return {@link ServletContextHashModel} instance by which templates can access servlet context attributes
- */
- public ServletContextHashModel getServletContextModel() {
- return servletContextModel;
- }
-
- /**
- * Set {@link ServletContextHashModel} instance by which templates can access servlet context attributes.
- * @param servletContextModel {@link ServletContextHashModel} instance by which templates can access servlet
- * context attributes
- */
- public void setServletContextModel(ServletContextHashModel servletContextModel) {
- this.servletContextModel = servletContextModel;
- }
-
- /**
- * Get {@link TaglibFactory} instance by which templates can use JSP tag libraries.
- * @return {@link TaglibFactory} instance by which templates can use JSP tag libraries.
- */
- public TaglibFactory getTaglibFactory() {
- return taglibFactory;
- }
-
- /**
- * Set {@link TaglibFactory} instance by which templates can use JSP tag libraries.
- * @param taglibFactory {@link TaglibFactory} instance by which templates can use JSP tag libraries.
- */
- public void setTaglibFactory(TaglibFactory taglibFactory) {
- this.taglibFactory = taglibFactory;
- }
-
- @Override
- protected TemplateHashModel createModel(Map<String, Object> map, ObjectWrapperAndUnwrapper objectWrapper,
- HttpServletRequest request, HttpServletResponse response) {
-
- AllHttpScopesHashModel model = new AllHttpScopesHashModel(objectWrapper, getServletContext(), request);
-
- model.putUnlistedModel(FreemarkerServlet.KEY_APPLICATION, getServletContextModel());
-
- model.putUnlistedModel(FreemarkerServlet.KEY_SESSION,
- getHttpSessionModel(objectWrapper, request, response));
-
- HttpRequestHashModel requestModel = (HttpRequestHashModel) request
- .getAttribute(FreemarkerServlet.ATTR_REQUEST_MODEL);
- HttpRequestParametersHashModel requestParametersModel = (HttpRequestParametersHashModel) request
- .getAttribute(FreemarkerServlet.ATTR_REQUEST_PARAMETERS_MODEL);
-
- if (requestModel == null || requestModel.getRequest() != request) {
- requestModel = new HttpRequestHashModel(request, response, objectWrapper);
- request.setAttribute(FreemarkerServlet.ATTR_REQUEST_MODEL, requestModel);
- requestParametersModel = new HttpRequestParametersHashModel(request, objectWrapper);
- }
-
- model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST, requestModel);
- model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST_PARAMETERS, requestParametersModel);
-
- model.putUnlistedModel(FreemarkerServlet.KEY_JSP_TAGLIBS, getTaglibFactory());
-
- model.putAll(map);
-
- return model;
- }
-
- /**
- * Get {@link HttpSessionHashModel} instance by which templates can access session attributes.
- * @param objectWrapperForModel ObjectWrapper to be used in model building
- * @param request request
- * @param response response
- * @return {@link HttpSessionHashModel} instance by which templates can access session attributes
- */
- protected HttpSessionHashModel getHttpSessionModel(ObjectWrapperAndUnwrapper objectWrapperForModel,
- HttpServletRequest request, HttpServletResponse response) {
- HttpSessionHashModel sessionModel;
- HttpSession session = request.getSession(false);
-
- if (session != null) {
- sessionModel = (HttpSessionHashModel) session.getAttribute(FreemarkerServlet.ATTR_SESSION_MODEL);
-
- if (sessionModel == null || sessionModel.isOrphaned(session)) {
- sessionModel = new HttpSessionHashModel(session, objectWrapperForModel);
- session.setAttribute(FreemarkerServlet.ATTR_SESSION_MODEL, sessionModel);
- }
- } else {
- sessionModel = new HttpSessionHashModel(getPageContextServlet(), request, response, objectWrapperForModel);
- }
-
- return sessionModel;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolver.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolver.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolver.java
deleted file mode 100644
index 7969b56..0000000
--- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolver.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.web.view;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletException;
-
-import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
-import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
-import org.apache.freemarker.servlet.ServletContextHashModel;
-import org.apache.freemarker.servlet.jsp.TaglibFactory;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
-import org.springframework.web.servlet.view.AbstractUrlBasedView;
-import org.springframework.web.servlet.view.UrlBasedViewResolver;
-
-/**
- * FreeMarker template view resolver implementation, extending {@link AbstractTemplateViewResolver} that extends
- * {@link UrlBasedViewResolver}.
- * <p>
- * The FreeMarker {@link Configuration} property must be set at least. Otherwise this throws {@link IllegalStateException}
- * during initialization. In the bean initialization phase, this retrieves {@link ObjectWrapperAndUnwrapper} from
- * the {@link Configuration} and instantiate the internal page object ({@link PageContextServlet}) for JSP tag
- * library usages, {@link ServletContextHashModel} property for servlet context attribute accesses and {@link TaglibFactory}
- * property for JSP tag library usages.
- * </p>
- */
-public class FreemarkerViewResolver extends AbstractTemplateViewResolver implements InitializingBean {
-
- /**
- * FreeMarker {@link Configuration} instance.
- */
- private Configuration configuration;
-
- /**
- * {@link ObjectWrapperAndUnwrapper} instance to be used in model building.
- */
- private ObjectWrapperAndUnwrapper objectWrapper;
-
- /**
- * Internal servlet instance to provide a page object in JSP tag library usages.
- * @see {@link javax.servlet.jsp.PageContext#getPage()}
- */
- private GenericServlet pageContextServlet;
-
- /**
- * {@link ServletContextHashModel} instance for templates to access servlet context attributes.
- */
- private ServletContextHashModel servletContextModel;
-
- /**
- * {@link TaglibFactory} instance for templates to be able to use JSP tag libraries.
- */
- private TaglibFactory taglibFactory;
-
- /**
- * Constructs view resolver.
- */
- public FreemarkerViewResolver() {
- super();
- setViewClass(FreemarkerView.class);
- }
-
- /**
- * Get FreeMarker {@link Configuration} instance.
- * @return FreeMarker {@link Configuration} instance
- */
- public Configuration getConfiguration() {
- return configuration;
- }
-
- /**
- * Set FreeMarker {@link Configuration} instance.
- * @param configuration FreeMarker {@link Configuration} instance
- */
- public void setConfiguration(Configuration configuration) {
- this.configuration = configuration;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception {
- if (configuration == null) {
- throw new IllegalStateException("Configuration is not set.");
- }
-
- if (objectWrapper == null) {
- if (configuration.isObjectWrapperSet()) {
- if (!(configuration.getObjectWrapper() instanceof ObjectWrapperAndUnwrapper)) {
- throw new RuntimeException(
- FreemarkerViewResolver.class.getSimpleName() + " requires an ObjectWrapper that "
- + "implements " + ObjectWrapperAndUnwrapper.class.getName()
- + ", but the Configuration's ObjectWrapper doesn't do that: "
- + configuration.getObjectWrapper().getClass().getName());
- }
-
- objectWrapper = (ObjectWrapperAndUnwrapper) configuration.getObjectWrapper();
- } else {
- objectWrapper = new DefaultObjectWrapper.Builder(configuration.getIncompatibleImprovements()).build();
- }
- }
-
- pageContextServlet = new PageContextServlet();
-
- try {
- pageContextServlet
- .init(new PageContextServletConfig(getServletContext(), PageContextServlet.class.getSimpleName()));
- } catch (ServletException e) {
- // never happens...
- }
-
- servletContextModel = new ServletContextHashModel(pageContextServlet, objectWrapper);
-
- taglibFactory = new TaglibFactory.Builder(getServletContext(), objectWrapper).build();
- }
-
- @Override
- protected Class<?> requiredViewClass() {
- return FreemarkerView.class;
- }
-
- @Override
- protected AbstractUrlBasedView buildView(String viewName) throws Exception {
- FreemarkerView view = (FreemarkerView) super.buildView(viewName);
- view.setConfiguration(configuration);
- view.setObjectWrapper(objectWrapper);
- view.setPageContextServlet(pageContextServlet);
- view.setServletContextModel(servletContextModel);
- view.setTaglibFactory(taglibFactory);
- return view;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/SpringResourceTemplateLoaderTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/SpringResourceTemplateLoaderTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/SpringResourceTemplateLoaderTest.java
new file mode 100644
index 0000000..4fc59ee
--- /dev/null
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/SpringResourceTemplateLoaderTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring;
+
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.TemplateNotFoundException;
+import org.apache.freemarker.spring.SpringResourceTemplateLoader;
+import org.apache.freemarker.test.TestConfigurationBuilder;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.support.GenericApplicationContext;
+
+public class SpringResourceTemplateLoaderTest {
+
+ private static final String TEMPLATE_BASE_PATH = "classpath:META-INF/templates/";
+
+ private GenericApplicationContext appContext;
+ private SpringResourceTemplateLoader templateLoader;
+ private Configuration cfg;
+
+ @Before
+ public void setUp() throws IOException {
+ appContext = new GenericApplicationContext();
+ templateLoader = new SpringResourceTemplateLoader();
+ templateLoader.setBaseLocation(TEMPLATE_BASE_PATH);
+ templateLoader.setResourceLoader(appContext);
+ cfg = new TestConfigurationBuilder().templateLoader(templateLoader).build();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (appContext.isActive()) {
+ appContext.stop();
+ appContext.destroy();
+ appContext.close();
+ }
+ }
+
+ @Test
+ public void testSuccessful() throws Exception {
+ for (int i = 0; i < 2; i++) {
+ assertEquals("foo", cfg.getTemplate("sub1/sub2/t.ftl").toString());
+ }
+ }
+
+ @Test
+ public void testNotFound() throws Exception {
+ for (int i = 0; i < 2; i++) {
+ try {
+ cfg.getTemplate("sub1X/sub2/t.ftl");
+ fail();
+ } catch (TemplateNotFoundException e) {
+ assertThat(e.getMessage(), containsString("sub1X"));
+ assertNull(e.getCause());
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
deleted file mode 100644
index 30c7ed7..0000000
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.templateresolver;
-
-import static org.hamcrest.Matchers.containsString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.TemplateNotFoundException;
-import org.apache.freemarker.spring.SpringResourceTemplateLoader;
-import org.apache.freemarker.test.TestConfigurationBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.context.support.GenericApplicationContext;
-
-public class SpringResourceTemplateLoaderTest {
-
- private static final String TEMPLATE_BASE_PATH = "classpath:META-INF/templates/";
-
- private GenericApplicationContext appContext;
- private SpringResourceTemplateLoader templateLoader;
- private Configuration cfg;
-
- @Before
- public void setUp() throws IOException {
- appContext = new GenericApplicationContext();
- templateLoader = new SpringResourceTemplateLoader();
- templateLoader.setBaseLocation(TEMPLATE_BASE_PATH);
- templateLoader.setResourceLoader(appContext);
- cfg = new TestConfigurationBuilder().templateLoader(templateLoader).build();
- }
-
- @After
- public void tearDown() throws Exception {
- if (appContext.isActive()) {
- appContext.stop();
- appContext.destroy();
- appContext.close();
- }
- }
-
- @Test
- public void testSuccessful() throws Exception {
- for (int i = 0; i < 2; i++) {
- assertEquals("foo", cfg.getTemplate("sub1/sub2/t.ftl").toString());
- }
- }
-
- @Test
- public void testNotFound() throws Exception {
- for (int i = 0; i < 2; i++) {
- try {
- cfg.getTemplate("sub1X/sub2/t.ftl");
- fail();
- } catch (TemplateNotFoundException e) {
- assertThat(e.getMessage(), containsString("sub1X"));
- assertNull(e.getCause());
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
new file mode 100644
index 0000000..e75155e
--- /dev/null
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring.web.view;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+
+import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.mock.web.MockServletContext;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.GenericWebApplicationContext;
+
+public class FreeMarkerViewResolverTest {
+
+ private ServletContext servletContext;
+ private GenericWebApplicationContext applicationContext;
+
+ private StringTemplateLoader templateLoader;
+ private Configuration configuration;
+
+ private FreeMarkerViewResolver viewResolver;
+
+ private String prefix = "/WEB-INF/freemarker/";
+ private String normalizedPrefix = "WEB-INF/freemarker/";
+ private String suffix = ".ftl";
+
+ @Before
+ public void setUp() throws Exception {
+ servletContext = new MockServletContext();
+
+ applicationContext = new GenericWebApplicationContext(servletContext);
+ applicationContext.refresh();
+ servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
+
+ templateLoader = new StringTemplateLoader();
+ templateLoader.putTemplate(normalizedPrefix + "hello" + suffix, "Hello, World!");
+
+ configuration = new Configuration.Builder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)
+ .templateLoader(templateLoader).build();
+
+ viewResolver = new FreeMarkerViewResolver();
+ viewResolver.setServletContext(servletContext);
+ viewResolver.setApplicationContext(applicationContext);
+ viewResolver.setConfiguration(configuration);
+ viewResolver.setPrefix(prefix);
+ viewResolver.setSuffix(suffix);
+ viewResolver.afterPropertiesSet();
+ }
+
+ @Test
+ public void testViewResolver() throws Exception {
+ MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
+ request.setContextPath("/mycontext");
+ request.setServletPath("/myservlet");
+
+ MockHttpServletResponse response = new MockHttpServletResponse();
+
+ FreeMarkerView view = resolveFreemarkerView("hello", null);//Locale.ENGLISH);
+ Map<String, Object> model = new HashMap<String, Object>();
+ view.render(model, request, response);
+
+ assertEquals("Hello, World!", response.getContentAsString());
+ }
+
+ private FreeMarkerView resolveFreemarkerView(final String name, final Locale locale) throws Exception {
+ FreeMarkerView view = (FreeMarkerView) viewResolver.resolveViewName(name, locale);
+ view.setServletContext(servletContext);
+ view.setApplicationContext(applicationContext);
+ return view;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
new file mode 100644
index 0000000..078bfa0
--- /dev/null
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.spring.web.view;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.servlet.GenericServlet;
+import javax.servlet.ServletContext;
+
+import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
+import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
+import org.apache.freemarker.servlet.ServletContextHashModel;
+import org.apache.freemarker.servlet.jsp.TaglibFactory;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.mock.web.MockHttpSession;
+import org.springframework.mock.web.MockServletContext;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.GenericWebApplicationContext;
+
+public class FreeMarkerViewTest {
+
+ private ServletContext servletContext;
+ private GenericWebApplicationContext applicationContext;
+
+ private StringTemplateLoader templateLoader;
+ private Configuration configuration;
+ private ObjectWrapperAndUnwrapper objectWrapper;
+
+ private GenericServlet pageContextServlet;
+ private TaglibFactory taglibFactory;
+
+ private FreeMarkerViewResolver viewResolver;
+
+ private AtomicLong visitorCount;
+
+ @Before
+ public void setUp() throws Exception {
+ servletContext = new MockServletContext();
+
+ applicationContext = new GenericWebApplicationContext(servletContext);
+ applicationContext.refresh();
+ servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
+
+ templateLoader = new StringTemplateLoader();
+ configuration = new Configuration.Builder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)
+ .templateLoader(templateLoader).build();
+ objectWrapper = (ObjectWrapperAndUnwrapper) configuration.getObjectWrapper();
+
+ pageContextServlet = new PageContextServlet();
+ pageContextServlet.init(new PageContextServletConfig(servletContext, PageContextServlet.class.getSimpleName()));
+ taglibFactory = new TaglibFactory.Builder(servletContext, objectWrapper).build();
+
+ viewResolver = new FreeMarkerViewResolver();
+ viewResolver.setServletContext(servletContext);
+ viewResolver.setApplicationContext(applicationContext);
+ viewResolver.setConfiguration(configuration);
+ viewResolver.afterPropertiesSet();
+
+ visitorCount = new AtomicLong();
+ servletContext.setAttribute("visitorCount", visitorCount);
+ }
+
+ @Test
+ public void testViewWithBasicModel() throws Exception {
+ MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
+ request.setContextPath("/mycontext");
+ request.setServletPath("/myservlet");
+
+ templateLoader.putTemplate("hello.ftl", "Hello, ${name!\"World\"}! Visit count: ${visitCount!0}");
+
+ FreeMarkerView view = createFreemarkerView("hello.ftl");
+
+ int visitCount = 0;
+ Map<String, Object> model = new HashMap<String, Object>();
+
+ MockHttpServletResponse response = new MockHttpServletResponse();
+ view.render(model, request, response);
+ assertEquals("Hello, World! Visit count: 0", response.getContentAsString());
+
+ response = new MockHttpServletResponse();
+ model.put("name", "Dan");
+ model.put("visitCount", ++visitCount);
+ view.render(model, request, response);
+ assertEquals("Hello, Dan! Visit count: 1", response.getContentAsString());
+ }
+
+ @Test
+ public void testViewWithDefaultServletModel() throws Exception {
+ MockHttpSession session = new MockHttpSession(servletContext);
+ session.setAttribute("itemCountInCart", 3);
+
+ MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
+ request.setContextPath("/mycontext");
+ request.setServletPath("/myservlet");
+ request.setPathInfo(";mypathinfo");
+ request.addParameter("token1", "value1");
+ request.setSession(session);
+ request.setAttribute("promotion", "Fresh blue berries");
+
+ templateLoader.putTemplate("default-model.ftl",
+ "${name!}, you have ${Session.itemCountInCart!0} items in cart. " + "Hot deal: ${Request.promotion}. "
+ + "BTW, you're ${Application.visitorCount}th visitor. "
+ + "(token1: ${RequestParameters['token1']!})");
+
+ FreeMarkerView view = createFreemarkerView("default-model.ftl");
+
+ Map<String, Object> model = new HashMap<String, Object>();
+ model.put("name", "Dan");
+
+ final long count = visitorCount.incrementAndGet();
+ MockHttpServletResponse response = new MockHttpServletResponse();
+ view.render(model, request, response);
+ assertEquals("Dan, you have 3 items in cart. Hot deal: Fresh blue berries. BTW, you're " + count
+ + "th visitor. (token1: value1)", response.getContentAsString());
+ }
+
+ @Test
+ public void testViewWithTaglibs() throws Exception {
+ MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
+ request.setContextPath("/mycontext");
+ request.setServletPath("/myservlet");
+
+ templateLoader.putTemplate("taglibs.ftl",
+ "<#assign e=JspTaglibs ['http://freemarker.org/jsp/example/echo'] >"
+ + "<#assign msg=\"Hello!\" />"
+ + "<@e.echo message=msg />");
+
+ FreeMarkerView view = createFreemarkerView("taglibs.ftl");
+
+ Map<String, Object> model = new HashMap<String, Object>();
+ MockHttpServletResponse response = new MockHttpServletResponse();
+ view.render(model, request, response);
+ assertEquals("Hello!", response.getContentAsString());
+ }
+
+ private FreeMarkerView createFreemarkerView(final String name) throws Exception {
+ FreeMarkerView view = new FreeMarkerView();
+
+ view.setServletContext(servletContext);
+ view.setApplicationContext(applicationContext);
+ view.setConfiguration(configuration);
+ view.setObjectWrapper(objectWrapper);
+
+ view.setPageContextServlet(pageContextServlet);
+ view.setServletContextModel(new ServletContextHashModel(pageContextServlet, objectWrapper));
+ view.setTaglibFactory(taglibFactory);
+
+ view.setUrl(name);
+
+ return view;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolverTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolverTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolverTest.java
deleted file mode 100644
index 7baf7f2..0000000
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewResolverTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.web.view;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-
-import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.mock.web.MockServletContext;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.GenericWebApplicationContext;
-
-public class FreemarkerViewResolverTest {
-
- private ServletContext servletContext;
- private GenericWebApplicationContext applicationContext;
-
- private StringTemplateLoader templateLoader;
- private Configuration configuration;
-
- private FreemarkerViewResolver viewResolver;
-
- private String prefix = "/WEB-INF/freemarker/";
- private String normalizedPrefix = "WEB-INF/freemarker/";
- private String suffix = ".ftl";
-
- @Before
- public void setUp() throws Exception {
- servletContext = new MockServletContext();
-
- applicationContext = new GenericWebApplicationContext(servletContext);
- applicationContext.refresh();
- servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
-
- templateLoader = new StringTemplateLoader();
- templateLoader.putTemplate(normalizedPrefix + "hello" + suffix, "Hello, World!");
-
- configuration = new Configuration.Builder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)
- .templateLoader(templateLoader).build();
-
- viewResolver = new FreemarkerViewResolver();
- viewResolver.setServletContext(servletContext);
- viewResolver.setApplicationContext(applicationContext);
- viewResolver.setConfiguration(configuration);
- viewResolver.setPrefix(prefix);
- viewResolver.setSuffix(suffix);
- viewResolver.afterPropertiesSet();
- }
-
- @Test
- public void testViewResolver() throws Exception {
- MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
- request.setContextPath("/mycontext");
- request.setServletPath("/myservlet");
-
- MockHttpServletResponse response = new MockHttpServletResponse();
-
- FreemarkerView view = resolveFreemarkerView("hello", null);//Locale.ENGLISH);
- Map<String, Object> model = new HashMap<String, Object>();
- view.render(model, request, response);
-
- assertEquals("Hello, World!", response.getContentAsString());
- }
-
- private FreemarkerView resolveFreemarkerView(final String name, final Locale locale) throws Exception {
- FreemarkerView view = (FreemarkerView) viewResolver.resolveViewName(name, locale);
- view.setServletContext(servletContext);
- view.setApplicationContext(applicationContext);
- return view;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/5b856d3a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
deleted file mode 100644
index 1ed2831..0000000
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.freemarker.spring.web.view;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletContext;
-
-import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
-import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
-import org.apache.freemarker.servlet.ServletContextHashModel;
-import org.apache.freemarker.servlet.jsp.TaglibFactory;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.mock.web.MockHttpSession;
-import org.springframework.mock.web.MockServletContext;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.GenericWebApplicationContext;
-
-public class FreemarkerViewTest {
-
- private ServletContext servletContext;
- private GenericWebApplicationContext applicationContext;
-
- private StringTemplateLoader templateLoader;
- private Configuration configuration;
- private ObjectWrapperAndUnwrapper objectWrapper;
-
- private GenericServlet pageContextServlet;
- private TaglibFactory taglibFactory;
-
- private FreemarkerViewResolver viewResolver;
-
- private AtomicLong visitorCount;
-
- @Before
- public void setUp() throws Exception {
- servletContext = new MockServletContext();
-
- applicationContext = new GenericWebApplicationContext(servletContext);
- applicationContext.refresh();
- servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
-
- templateLoader = new StringTemplateLoader();
- configuration = new Configuration.Builder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)
- .templateLoader(templateLoader).build();
- objectWrapper = (ObjectWrapperAndUnwrapper) configuration.getObjectWrapper();
-
- pageContextServlet = new PageContextServlet();
- pageContextServlet.init(new PageContextServletConfig(servletContext, PageContextServlet.class.getSimpleName()));
- taglibFactory = new TaglibFactory.Builder(servletContext, objectWrapper).build();
-
- viewResolver = new FreemarkerViewResolver();
- viewResolver.setServletContext(servletContext);
- viewResolver.setApplicationContext(applicationContext);
- viewResolver.setConfiguration(configuration);
- viewResolver.afterPropertiesSet();
-
- visitorCount = new AtomicLong();
- servletContext.setAttribute("visitorCount", visitorCount);
- }
-
- @Test
- public void testViewWithBasicModel() throws Exception {
- MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
- request.setContextPath("/mycontext");
- request.setServletPath("/myservlet");
-
- templateLoader.putTemplate("hello.ftl", "Hello, ${name!\"World\"}! Visit count: ${visitCount!0}");
-
- FreemarkerView view = createFreemarkerView("hello.ftl");
-
- int visitCount = 0;
- Map<String, Object> model = new HashMap<String, Object>();
-
- MockHttpServletResponse response = new MockHttpServletResponse();
- view.render(model, request, response);
- assertEquals("Hello, World! Visit count: 0", response.getContentAsString());
-
- response = new MockHttpServletResponse();
- model.put("name", "Dan");
- model.put("visitCount", ++visitCount);
- view.render(model, request, response);
- assertEquals("Hello, Dan! Visit count: 1", response.getContentAsString());
- }
-
- @Test
- public void testViewWithDefaultServletModel() throws Exception {
- MockHttpSession session = new MockHttpSession(servletContext);
- session.setAttribute("itemCountInCart", 3);
-
- MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
- request.setContextPath("/mycontext");
- request.setServletPath("/myservlet");
- request.setPathInfo(";mypathinfo");
- request.addParameter("token1", "value1");
- request.setSession(session);
- request.setAttribute("promotion", "Fresh blue berries");
-
- templateLoader.putTemplate("default-model.ftl",
- "${name!}, you have ${Session.itemCountInCart!0} items in cart. " + "Hot deal: ${Request.promotion}. "
- + "BTW, you're ${Application.visitorCount}th visitor. "
- + "(token1: ${RequestParameters['token1']!})");
-
- FreemarkerView view = createFreemarkerView("default-model.ftl");
-
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("name", "Dan");
-
- final long count = visitorCount.incrementAndGet();
- MockHttpServletResponse response = new MockHttpServletResponse();
- view.render(model, request, response);
- assertEquals("Dan, you have 3 items in cart. Hot deal: Fresh blue berries. BTW, you're " + count
- + "th visitor. (token1: value1)", response.getContentAsString());
- }
-
- @Test
- public void testViewWithTaglibs() throws Exception {
- MockHttpServletRequest request = new MockHttpServletRequest("GET", "/mytest.do");
- request.setContextPath("/mycontext");
- request.setServletPath("/myservlet");
-
- templateLoader.putTemplate("taglibs.ftl",
- "<#assign e=JspTaglibs ['http://freemarker.org/jsp/example/echo'] >"
- + "<#assign msg=\"Hello!\" />"
- + "<@e.echo message=msg />");
-
- FreemarkerView view = createFreemarkerView("taglibs.ftl");
-
- Map<String, Object> model = new HashMap<String, Object>();
- MockHttpServletResponse response = new MockHttpServletResponse();
- view.render(model, request, response);
- assertEquals("Hello!", response.getContentAsString());
- }
-
- private FreemarkerView createFreemarkerView(final String name) throws Exception {
- FreemarkerView view = new FreemarkerView();
-
- view.setServletContext(servletContext);
- view.setApplicationContext(applicationContext);
- view.setConfiguration(configuration);
- view.setObjectWrapper(objectWrapper);
-
- view.setPageContextServlet(pageContextServlet);
- view.setServletContextModel(new ServletContextHashModel(pageContextServlet, objectWrapper));
- view.setTaglibFactory(taglibFactory);
-
- view.setUrl(name);
-
- return view;
- }
-}