Example usage for com.liferay.portal.theme PortletDisplayFactory create

List of usage examples for com.liferay.portal.theme PortletDisplayFactory create

Introduction

In this page you can find the example usage for com.liferay.portal.theme PortletDisplayFactory create.

Prototype

public static PortletDisplay create() 

Source Link

Usage

From source file:com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.java

License:Open Source License

public String processPortlet(ServletContext servletContext, HttpServletRequest request,
        HttpServletResponse response, RenderRequest renderRequest, RenderResponse renderResponse,
        Portlet portlet, String portletId, String queryString, String columnId, Integer columnPos,
        Integer columnCount, String path, boolean writeOutput) throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    if (portlet == null) {
        portlet = PortletLocalServiceUtil.getPortletById(themeDisplay.getCompanyId(), portletId);
    }//from w  ww . ja  v a 2  s  .  c  om

    if ((portlet != null) && (portlet.isInstanceable()) && (!portlet.isAddDefaultResource())) {

        String instanceId = portlet.getInstanceId();

        if (Validator.isNotNull(instanceId) && Validator.isPassword(instanceId) && (instanceId.length() >= 4)) {

            /*portletId += PortletConstants.INSTANCE_SEPARATOR + instanceId;
                    
            portlet = PortletLocalServiceUtil.getPortletById(
               themeDisplay.getCompanyId(), portletId);*/
        } else {
            if (_log.isDebugEnabled()) {
                _log.debug("Portlet " + portlet.getPortletId() + " is instanceable but does not have a "
                        + "valid instance id");
            }

            portlet = null;
        }
    }

    if (portlet == null) {
        return StringPool.BLANK;
    }

    // Capture the current portlet's settings to reset them once the child
    // portlet is rendered

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    PortletDisplay portletDisplayClone = PortletDisplayFactory.create();

    portletDisplay.copyTo(portletDisplayClone);

    PortletConfig portletConfig = (PortletConfig) request.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);

    try {
        return PortalUtil.renderPortlet(servletContext, request, response, portlet, queryString, columnId,
                columnPos, columnCount, path, writeOutput);
    } finally {
        portletDisplay.copyFrom(portletDisplayClone);

        portletDisplayClone.recycle();

        _defineObjects(request, portletConfig, renderRequest, renderResponse);
    }
}