@Override public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { String hstDispURL = resolveEmbeddedDispatchURL(request, response); if (hstDispURL != null) { HstResponseState portletResponseState = new HstPortletResponseState(request, response); request.setAttribute(HstResponseState.class.getName(), portletResponseState); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(hstDispURL); if (dispatcher != null) { dispatcher.include(request, response); portletResponseState.flush(); } } }
protected String resolveEmbeddedDispatchURL(PortletRequest request, PortletResponse response) { HstPortalContextProvider pcp = getPortalContextProvider(request); HstPortalRequestContext prc = pcp != null ? pcp.getPortalRequestContext(request) : null; ResolvedSiteMapItem rsmi = prc != null ? prc.getResolvedSiteMapItem() : null; HstComponentConfiguration hcc = rsmi != null ? rsmi.getHstComponentConfiguration() : null; if (hcc != null) { HstMutablePortletRequestContext hrc = createHstRequestContext(request, response); hrc.setTargetComponentPath(request.getPreferences().getValue(HST_COMPONENT_PATH, defaultHstComponentPath)); hrc.setEmbeddingContextPath(prc.getEmbeddingContextPath()); hrc.setResolvedEmbeddingSiteMount(prc.getResolvedEmbeddingSiteMount()); hrc.setResolvedSiteMount(rsmi.getResolvedSiteMount()); hrc.setResolvedSiteMapItem(rsmi); return new StringBuilder(rsmi.getResolvedSiteMount().getResolvedMountPath()).append("/").append(rsmi.getPathInfo()).toString(); } return null; } }
protected HstMutablePortletRequestContext createHstRequestContext(PortletRequest request, PortletResponse response) { HstMutablePortletRequestContext prc = null; if (HstServices.isAvailable()) { HstRequestContextComponent rcc = (HstRequestContextComponent)HstServices.getComponentManager().getComponent("org.hippoecm.hst.core.internal.HstRequestContextComponent"); prc = (HstMutablePortletRequestContext)rcc.create(true); prc.setContextNamespace(response.getNamespace()); prc.setPortletConfig(getPortletConfig()); prc.setPortletRequest(request); prc.setPortletResponse(response); request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, prc); } return prc; }
@Override public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException, IOException { if (request.getResourceID() != null && resolveEmbeddedDispatchURL(request,response) != null) { // only handle serveResource by ResourceID parameter HstResponseState portletResponseState = new HstPortletResponseState(request, response); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(request.getResourceID()); if (dispatcher != null) { dispatcher.include(request, response); portletResponseState.flush(); } } }
@Override public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { if (resolveEmbeddedDispatchURL(request, response) != null) { PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(hstDispURL);