/** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * * Licensed 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 com.jfinal.render; import java.io.File; import javax.servlet.ServletContext; import com.jfinal.config.Constants; import com.jfinal.template.Engine; /** * RenderFactory. */ public class RenderFactory implements IRenderFactory { protected Engine engine; protected Constants constants; protected ServletContext servletContext; protected MainRenderFactory mainRenderFactory; // private static final RenderFactory me = new RenderFactory(); // private RenderFactory() {} // public static RenderFactory me() { // return me; // } public void init(Engine engine, Constants constants, ServletContext servletContext) { this.engine = engine; this.constants = constants; this.servletContext = servletContext; // create mainRenderFactory switch (constants.getViewType()) { case JFINAL_TEMPLATE: mainRenderFactory = new MainRenderFactory(); break ; case FREE_MARKER: mainRenderFactory = new FreeMarkerRenderFactory(); break ; case JSP: mainRenderFactory = new JspRenderFactory(); break ; case VELOCITY: mainRenderFactory = new VelocityRenderFactory(); break ; } } /** * Return Render by default ViewType which config in JFinalConfig */ public Render getRender(String view) { return mainRenderFactory.getRender(view); } public Render getTemplateRender(String view) { return new TemplateRender(view); } public Render getFreeMarkerRender(String view) { return new FreeMarkerRender(view); } public Render getJspRender(String view) { return new JspRender(view); } public Render getVelocityRender(String view) { return new VelocityRender(view); } public Render getJsonRender() { return new JsonRender(); } public Render getJsonRender(String key, Object value) { return new JsonRender(key, value); } public Render getJsonRender(String[] attrs) { return new JsonRender(attrs); } public Render getJsonRender(String jsonText) { return new JsonRender(jsonText); } public Render getJsonRender(Object object) { return new JsonRender(object); } public Render getTextRender(String text) { return new TextRender(text); } public Render getTextRender(String text, String contentType) { return new TextRender(text, contentType); } public Render getTextRender(String text, ContentType contentType) { return new TextRender(text, contentType); } public Render getDefaultRender(String view) { return getRender(view + constants.getViewExtension()); } public Render getErrorRender(int errorCode, String view) { return new ErrorRender(errorCode, view); } public Render getErrorRender(int errorCode) { return new ErrorRender(errorCode, constants.getErrorView(errorCode)); } public Render getFileRender(String fileName) { return new FileRender(fileName); } public Render getFileRender(String fileName, String downloadFileName) { return new FileRender(fileName, downloadFileName); } public Render getFileRender(File file) { return new FileRender(file); } public Render getFileRender(File file, String downloadFileName) { return new FileRender(file, downloadFileName); } public Render getRedirectRender(String url) { return new RedirectRender(url); } public Render getRedirectRender(String url, boolean withQueryString) { return new RedirectRender(url, withQueryString); } public Render getRedirect301Render(String url) { return new Redirect301Render(url); } public Render getRedirect301Render(String url, boolean withQueryString) { return new Redirect301Render(url, withQueryString); } public Render getNullRender() { return new NullRender(); } public Render getJavascriptRender(String jsText) { return new JavascriptRender(jsText); } public Render getHtmlRender(String htmlText) { return new HtmlRender(htmlText); } public Render getXmlRender(String view) { return new XmlRender(view); } public Render getCaptchaRender() { return new com.jfinal.captcha.CaptchaRender(); } public Render getQrCodeRender(String content, int width, int height) { return new QrCodeRender(content, width, height); } public Render getQrCodeRender(String content, int width, int height, char errorCorrectionLevel) { return new QrCodeRender(content, width, height, errorCorrectionLevel); } // -------- private static class MainRenderFactory { public Render getRender(String view) { return new TemplateRender(view); } } private static class FreeMarkerRenderFactory extends MainRenderFactory { public Render getRender(String view) { return new FreeMarkerRender(view); } } private static class JspRenderFactory extends MainRenderFactory { public Render getRender(String view) { return new JspRender(view); } } private static class VelocityRenderFactory extends MainRenderFactory { public Render getRender(String view) { return new VelocityRender(view); } } }