Example usage for com.liferay.portal.kernel.util UnsyncPrintWriterPool borrow

List of usage examples for com.liferay.portal.kernel.util UnsyncPrintWriterPool borrow

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.util UnsyncPrintWriterPool borrow.

Prototype

public static UnsyncPrintWriter borrow(Writer writer) 

Source Link

Usage

From source file:com.liferay.content.targeting.portlet.FreeMarkerPortlet.java

License:Open Source License

@Override
protected void include(String path, PortletRequest portletRequest, PortletResponse portletResponse,
        String lifecycle) throws IOException, PortletException {

    PortletContext portletContext = getPortletContext();

    String servletContextName = portletContext.getPortletContextName();

    String resourcePath = servletContextName.concat(TemplateConstants.SERVLET_SEPARATOR).concat(path);

    boolean resourceExists = false;

    try {/* w  w w.  ja v  a  2 s  . c  o m*/
        resourceExists = TemplateResourceLoaderUtil.hasTemplateResource(TemplateConstants.LANG_TYPE_FTL,
                resourcePath);
    } catch (TemplateException te) {
        throw new IOException(te.getMessage());
    }

    if (!resourceExists) {
        _log.error(path + " is not a valid include");
    } else {
        try {
            TemplateResource templateResource = TemplateResourceLoaderUtil
                    .getTemplateResource(TemplateConstants.LANG_TYPE_FTL, resourcePath);

            Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_FTL,
                    templateResource, false);

            TemplateTaglibSupportProvider templateTaglibSupportProvider = getTaglibSupportProvider();

            if (templateTaglibSupportProvider != null) {
                templateTaglibSupportProvider.addTaglibSupport(template, servletContextName, portletRequest,
                        portletResponse);
            }

            // LPS-43725

            HttpServletRequestWrapper httpServletRequestWrapper = new HttpServletRequestWrapper(
                    PortalUtil.getHttpServletRequest(portletRequest));

            HttpServletResponseWrapper httpServletResponseWrapper = new HttpServletResponseWrapper(
                    PortalUtil.getHttpServletResponse(portletResponse));

            HttpRequestHashModel httpRequestHashModel = new HttpRequestHashModel(httpServletRequestWrapper,
                    httpServletResponseWrapper, ObjectWrapper.DEFAULT_WRAPPER);

            template.put("Request", httpRequestHashModel);

            populateContext(path, portletRequest, portletResponse, template);

            Writer writer = null;

            if (portletResponse instanceof MimeResponse) {
                MimeResponse mimeResponse = (MimeResponse) portletResponse;

                writer = UnsyncPrintWriterPool.borrow(mimeResponse.getWriter());
            } else {
                writer = new UnsyncStringWriter();
            }

            template.processTemplate(writer);
        } catch (Exception e) {
            throw new PortletException(e);
        }
    }

    if (clearRequestParameters) {
        if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
            portletResponse.setProperty("clear-request-parameters", "true");
        }
    }
}

From source file:com.liferay.mvc.freemarker.FreeMarkerMVCPortlet.java

License:Open Source License

@Override
protected void include(String path, PortletRequest portletRequest, PortletResponse portletResponse,
        String lifecycle) throws IOException, PortletException {

    PortletContext portletContext = getPortletContext();

    URL resource = portletContext.getResource(path);

    if (resource == null) {
        _log.error(path + " is not a valid include");
    } else {//from   ww w. j a v a2s  . c o  m
        try {
            FreeMarkerContext freeMarkerContext = getFreeMarkerContext(portletRequest, portletResponse);

            Writer writer = null;

            if (portletResponse instanceof MimeResponse) {
                MimeResponse mimeResponse = (MimeResponse) portletResponse;

                writer = UnsyncPrintWriterPool.borrow(mimeResponse.getWriter());
            } else {
                writer = new UnsyncStringWriter();
            }

            // Merge templates

            String template = HttpUtil.URLtoString(resource);

            String templateId = portletResponse.getNamespace() + path;

            if (!_templateIds.contains(templateId)) {
                _templateIds.add(templateId);
            }

            FreeMarkerEngineUtil.mergeTemplate(templateId, template, freeMarkerContext, writer);
        } catch (Exception e) {
            throw new PortletException(e);
        }
    }

    if (clearRequestParameters) {
        if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
            portletResponse.setProperty("clear-request-parameters", "true");
        }
    }
}

From source file:com.liferay.portlet.admin.action.EditServerAction.java

License:Open Source License

protected void runScript(PortletConfig portletConfig, ActionRequest actionRequest,
        ActionResponse actionResponse) throws Exception {

    String language = ParamUtil.getString(actionRequest, "language");
    String script = ParamUtil.getString(actionRequest, "script");

    PortletContext portletContext = portletConfig.getPortletContext();

    Map<String, Object> portletObjects = ScriptingUtil.getPortletObjects(portletConfig, portletContext,
            actionRequest, actionResponse);

    UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = new UnsyncByteArrayOutputStream();

    UnsyncPrintWriter unsyncPrintWriter = UnsyncPrintWriterPool.borrow(unsyncByteArrayOutputStream);

    portletObjects.put("out", unsyncPrintWriter);

    try {/*from  www . j  a v  a  2s . c  o  m*/
        SessionMessages.add(actionRequest, "language", language);
        SessionMessages.add(actionRequest, "script", script);

        ScriptingUtil.exec(null, portletObjects, language, script);

        unsyncPrintWriter.flush();

        SessionMessages.add(actionRequest, "script_output", unsyncByteArrayOutputStream.toString());
    } catch (ScriptingException se) {
        SessionErrors.add(actionRequest, ScriptingException.class.getName(), se);

        _log.error(se.getMessage());
    }
}

From source file:com.liferay.portlet.PortletServletResponse.java

License:Open Source License

@Override
public PrintWriter getWriter() throws IOException {
    if (_lifecycle.equals(PortletRequest.RENDER_PHASE) || _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {

        MimeResponse mimeResponse = _getMimeResponse();

        return mimeResponse.getWriter();
    } else {//from  w w  w .j ava 2 s  .c  om
        return UnsyncPrintWriterPool.borrow(new NullServletOutputStream());
    }
}

From source file:com.liferay.portlet.shopping.action.PayPalNotificationAction.java

License:Open Source License

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    String invoice = null;// w  ww. j av  a 2s  .co m

    try {
        if (_log.isDebugEnabled()) {
            _log.debug("Receiving notification from PayPal");
        }

        String query = "cmd=_notify-validate";

        Enumeration<String> enu = request.getParameterNames();

        while (enu.hasMoreElements()) {
            String name = enu.nextElement();

            String value = request.getParameter(name);

            query = query + "&" + name + "=" + HttpUtil.encodeURL(value);
        }

        if (_log.isDebugEnabled()) {
            _log.debug("Sending response to PayPal " + query);
        }

        URL url = new URL("https://www.paypal.com/cgi-bin/webscr");

        URLConnection urlc = url.openConnection();

        urlc.setDoOutput(true);
        urlc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        PrintWriter pw = UnsyncPrintWriterPool.borrow(urlc.getOutputStream());

        pw.println(query);

        pw.close();

        UnsyncBufferedReader unsyncBufferedReader = new UnsyncBufferedReader(
                new InputStreamReader(urlc.getInputStream()));

        String payPalStatus = unsyncBufferedReader.readLine();

        unsyncBufferedReader.close();

        String itemName = ParamUtil.getString(request, "item_name");
        String itemNumber = ParamUtil.getString(request, "item_number");
        invoice = ParamUtil.getString(request, "invoice");
        String txnId = ParamUtil.getString(request, "txn_id");
        String paymentStatus = ParamUtil.getString(request, "payment_status");
        double paymentGross = ParamUtil.getDouble(request, "mc_gross");
        String receiverEmail = ParamUtil.getString(request, "receiver_email");
        String payerEmail = ParamUtil.getString(request, "payer_email");

        if (_log.isDebugEnabled()) {
            _log.debug("Receiving response from PayPal");
            _log.debug("Item name " + itemName);
            _log.debug("Item number " + itemNumber);
            _log.debug("Invoice " + invoice);
            _log.debug("Transaction ID " + txnId);
            _log.debug("Payment status " + paymentStatus);
            _log.debug("Payment gross " + paymentGross);
            _log.debug("Receiver email " + receiverEmail);
            _log.debug("Payer email " + payerEmail);
        }

        if (payPalStatus.equals("VERIFIED") && validate(request)) {
            ServiceContext serviceContext = ServiceContextFactory.getInstance(request);

            ShoppingOrderLocalServiceUtil.completeOrder(invoice, txnId, paymentStatus, paymentGross,
                    receiverEmail, payerEmail, true, serviceContext);
        } else if (payPalStatus.equals("INVALID")) {
        }

        return null;
    } catch (Exception e) {
        PortalUtil.sendError(e, request, response);

        return null;
    }
}

From source file:com.liferay.portlet.VelocityPortlet.java

License:Open Source License

protected void mergeTemplate(String velocityTemplateId, VelocityContext velocityContext,
        PortletRequest portletRequest, PortletResponse portletResponse) throws Exception {

    if (portletResponse instanceof MimeResponse) {
        MimeResponse mimeResponse = (MimeResponse) portletResponse;

        mimeResponse.setContentType(portletRequest.getResponseContentType());
    }//from  ww w .  j  a va  2  s  .c o m

    VelocityWriter velocityWriter = null;

    try {
        velocityWriter = (VelocityWriter) _writerPool.get();

        PrintWriter output = null;

        if (portletResponse instanceof MimeResponse) {
            MimeResponse mimeResponse = (MimeResponse) portletResponse;

            output = mimeResponse.getWriter();
        } else {
            output = UnsyncPrintWriterPool.borrow(System.out);
        }

        if (velocityWriter == null) {
            velocityWriter = new VelocityWriter(output, 4 * 1024, true);
        } else {
            velocityWriter.recycle(output);
        }

        VelocityEngineUtil.mergeTemplate(velocityTemplateId, null, velocityContext, velocityWriter);
    } finally {
        try {
            if (velocityWriter != null) {
                velocityWriter.flush();
                velocityWriter.recycle(null);

                _writerPool.put(velocityWriter);
            }
        } catch (Exception e) {
        }
    }
}

From source file:com.liferay.rtl.servlet.filters.dynamiccss.DynamicCSSUtil.java

License:Open Source License

private static String _parseSass(ServletContext servletContext, HttpServletRequest request,
        ThemeDisplay themeDisplay, Theme theme, String resourcePath, String content) throws Exception {

    Map<String, Object> inputObjects = new HashMap<String, Object>();

    String cssThemePath = _getCssThemePath(servletContext, request, themeDisplay, theme);

    inputObjects.put("content", content);
    inputObjects.put("cssRealPath", resourcePath);
    inputObjects.put("cssThemePath", cssThemePath);

    File sassTempDir = _getSassTempDir(servletContext);

    inputObjects.put("sassCachePath", sassTempDir.getCanonicalPath());

    UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = new UnsyncByteArrayOutputStream();

    UnsyncPrintWriter unsyncPrintWriter = UnsyncPrintWriterPool.borrow(unsyncByteArrayOutputStream);

    inputObjects.put("out", unsyncPrintWriter);

    _rubyExecutor.eval(null, inputObjects, null, _rubyScript);

    unsyncPrintWriter.flush();//from www  .  j  a va2s  .c  om

    return unsyncByteArrayOutputStream.toString();
}

From source file:com.liferay.server.admin.web.internal.portlet.action.EditServerMVCActionCommand.java

License:Open Source License

protected void runScript(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    String language = ParamUtil.getString(actionRequest, "language");
    String script = ParamUtil.getString(actionRequest, "script");

    PortletConfig portletConfig = getPortletConfig(actionRequest);

    PortletContext portletContext = portletConfig.getPortletContext();

    Map<String, Object> portletObjects = ScriptingHelperUtil.getPortletObjects(portletConfig, portletContext,
            actionRequest, actionResponse);

    UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = new UnsyncByteArrayOutputStream();

    UnsyncPrintWriter unsyncPrintWriter = UnsyncPrintWriterPool.borrow(unsyncByteArrayOutputStream);

    portletObjects.put("out", unsyncPrintWriter);

    try {//w  w  w  .  j av a2 s  . com
        SessionMessages.add(actionRequest, "language", language);
        SessionMessages.add(actionRequest, "script", script);

        _scripting.exec(null, portletObjects, language, script);

        unsyncPrintWriter.flush();

        SessionMessages.add(actionRequest, "scriptOutput", unsyncByteArrayOutputStream.toString());
    } catch (ScriptingException se) {
        SessionErrors.add(actionRequest, ScriptingException.class.getName(), se);

        Log log = SanitizerLogWrapper.allowCRLF(_log);

        log.error(se.getMessage());
    }
}

From source file:com.liferay.shipping.portlet.ShippingPortlet.java

License:Open Source License

@Override
protected void include(String path, PortletRequest portletRequest, PortletResponse portletResponse,
        String lifecycle) throws IOException, PortletException {

    PortletContext portletContext = getPortletContext();

    String servletContextName = portletContext.getPortletContextName();

    String resourcePath = servletContextName.concat(TemplateConstants.SERVLET_SEPARATOR).concat(path);

    boolean resourceExists = false;

    try {//from   www .j a  v  a2 s  . c om
        resourceExists = TemplateResourceLoaderUtil.hasTemplateResource(TemplateConstants.LANG_TYPE_FTL,
                resourcePath);
    } catch (TemplateException te) {
        throw new IOException(te.getMessage());
    }

    if (!resourceExists) {
        _log.error(path + " is not a valid include");
    } else {
        try {
            Template template = getTemplateWithTaglibSupport(portletRequest, portletResponse,
                    servletContextName, resourcePath);

            populateContext(portletRequest, portletResponse, template);

            Writer writer = null;

            if (portletResponse instanceof MimeResponse) {
                MimeResponse mimeResponse = (MimeResponse) portletResponse;

                writer = UnsyncPrintWriterPool.borrow(mimeResponse.getWriter());
            } else {
                writer = new UnsyncStringWriter();
            }

            template.processTemplate(writer);
        } catch (Exception e) {
            throw new PortletException(e);
        }
    }

    if (clearRequestParameters) {
        if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
            portletResponse.setProperty("clear-request-parameters", "true");
        }
    }
}

From source file:com.liferay.taglib.util.ThemeUtil.java

License:Open Source License

public static String includeFTL(ServletContext servletContext, HttpServletRequest request,
        PageContext pageContext, String path, Theme theme, boolean write) throws Exception {

    // The servlet context name will be null when the theme is deployed to
    // the root directory in Tomcat. See
    // com.liferay.portal.servlet.MainServlet and
    // com.liferay.portlet.PortletContextImpl for other cases where a null
    // servlet context name is also converted to an empty string.

    String servletContextName = GetterUtil.getString(theme.getServletContextName());

    if (ServletContextPool.get(servletContextName) == null) {

        // This should only happen if the FreeMarker template is the first
        // page to be accessed in the system

        ServletContextPool.put(servletContextName, servletContext);
    }/*from  www.j  a va 2 s  .  c o  m*/

    String portletId = getPortletId(request);

    String resourcePath = theme.getResourcePath(servletContext, portletId, path);

    if (Validator.isNotNull(portletId) && !FreeMarkerEngineUtil.resourceExists(resourcePath)
            && portletId.contains(PortletConstants.INSTANCE_SEPARATOR)) {

        String rootPortletId = PortletConstants.getRootPortletId(portletId);

        resourcePath = theme.getResourcePath(servletContext, rootPortletId, path);
    }

    if (Validator.isNotNull(portletId) && !FreeMarkerEngineUtil.resourceExists(resourcePath)) {

        resourcePath = theme.getResourcePath(servletContext, null, path);
    }

    if (!FreeMarkerEngineUtil.resourceExists(resourcePath)) {
        _log.error(resourcePath + " does not exist");

        return null;
    }

    FreeMarkerContext freeMarkerContext = FreeMarkerEngineUtil.getWrappedStandardToolsContext();

    // FreeMarker variables

    FreeMarkerVariablesUtil.insertVariables(freeMarkerContext, request);

    // Theme servlet context

    ServletContext themeServletContext = ServletContextPool.get(servletContextName);

    freeMarkerContext.put("themeServletContext", themeServletContext);

    // Tag libraries

    HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();

    Writer writer = null;

    if (write) {

        // Wrapping is needed because of a bug in FreeMarker

        writer = UnsyncPrintWriterPool.borrow(pageContext.getOut());
    } else {
        writer = new UnsyncStringWriter();
    }

    VelocityTaglib velocityTaglib = new VelocityTaglib(servletContext, request,
            new PipingServletResponse(response, writer), pageContext);

    request.setAttribute(WebKeys.VELOCITY_TAGLIB, velocityTaglib);

    freeMarkerContext.put("taglibLiferay", velocityTaglib);
    freeMarkerContext.put("theme", velocityTaglib);
    freeMarkerContext.put("writer", writer);

    // Portal JSP tag library factory

    TemplateHashModel portalTaglib = FreeMarkerTaglibFactoryUtil.createTaglibFactory(servletContext);

    freeMarkerContext.put("PortalJspTagLibs", portalTaglib);

    // Theme JSP tag library factory

    TemplateHashModel themeTaglib = FreeMarkerTaglibFactoryUtil.createTaglibFactory(themeServletContext);

    freeMarkerContext.put("ThemeJspTaglibs", themeTaglib);

    // FreeMarker JSP tag library support

    final Servlet servlet = (Servlet) pageContext.getPage();

    GenericServlet genericServlet = null;

    if (servlet instanceof GenericServlet) {
        genericServlet = (GenericServlet) servlet;
    } else {
        genericServlet = new GenericServlet() {

            @Override
            public void service(ServletRequest servletRequest, ServletResponse servletResponse)
                    throws ServletException, IOException {

                servlet.service(servletRequest, servletResponse);
            }

        };

        genericServlet.init(pageContext.getServletConfig());
    }

    ServletContextHashModel servletContextHashModel = new ServletContextHashModel(genericServlet,
            ObjectWrapper.DEFAULT_WRAPPER);

    freeMarkerContext.put("Application", servletContextHashModel);

    HttpRequestHashModel httpRequestHashModel = new HttpRequestHashModel(request, response,
            ObjectWrapper.DEFAULT_WRAPPER);

    freeMarkerContext.put("Request", httpRequestHashModel);

    // Merge templates

    FreeMarkerEngineUtil.mergeTemplate(resourcePath, freeMarkerContext, writer);

    if (write) {
        return null;
    } else {
        return writer.toString();
    }
}