Search in sources :

Example 1 with HeaderResponse

use of javax.portlet.HeaderResponse in project liferay-faces-bridge-ext by liferay.

the class BridgePortletResponseFactoryLiferayImpl method getHeaderResponse.

@Override
public HeaderResponse getHeaderResponse(HeaderRequest headerRequest, HeaderResponse headerResponse, PortletConfig portletConfig, BridgeConfig bridgeConfig) {
    HeaderResponse wrappedHeaderResponse = getWrapped().getHeaderResponse(headerRequest, headerResponse, portletConfig, bridgeConfig);
    PortletContext portletContext = portletConfig.getPortletContext();
    return new HeaderResponseBridgeLiferayImpl(portletContext, headerRequest, wrappedHeaderResponse);
}
Also used : HeaderResponse(javax.portlet.HeaderResponse) PortletContext(javax.portlet.PortletContext)

Example 2 with HeaderResponse

use of javax.portlet.HeaderResponse in project liferay-faces-bridge-impl by liferay.

the class Tests method bridgeSetsContentTypeTest.

/**
 * As defined in portlet.xml, this test uses {@link ManualBridgeInvokePortlet} rather than {@link
 * com.liferay.faces.bridge.tck.common.portlet.GenericFacesTestSuitePortlet}. It relies on
 * NullContentTypePortletFilter to decorate the HeaderResponse to ensure that the HeaderResponse.getContentType()
 * method returns null. {@link ManualBridgeInvokePortlet} will invoke the bridge directly and not set the
 * contentType (as is normally done in its outputTestResult method). All this will cause the bridge's implementation
 * of ExternalContext.getResponseContentType() to consult HeaderRequest.getContentType() in order to determine the
 * content type.
 */
// Test is Header test
// Test #5.29
@BridgeTest(test = "bridgeSetsContentTypeTest")
public String bridgeSetsContentTypeTest(TestBean testBean) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    testBean.setTestComplete(true);
    HeaderResponse headerResponse = (HeaderResponse) externalContext.getResponse();
    String headerResponseContentType = headerResponse.getContentType();
    HeaderRequest headerRequest = (HeaderRequest) externalContext.getRequest();
    String headerRequestContentType = headerRequest.getResponseContentType();
    String externalContextResponseContentType = externalContext.getResponseContentType();
    if ((headerResponseContentType == null) && (externalContextResponseContentType != null) && (headerRequestContentType != null) && externalContextResponseContentType.equals(headerRequestContentType)) {
        testBean.setTestResult(true, "Bridge correctly set the proper (default) content type when not set by portlet.");
        return Constants.TEST_SUCCESS;
    } else if (headerResponseContentType != null) {
        testBean.setTestResult(false, "NullContentTypePortletFilter did not return null for the response contentType. Current: " + headerRequestContentType + " expected: null");
        return Constants.TEST_FAILED;
    } else {
        testBean.setTestResult(false, "Bridge didn't set the proper (default) content type when not set by portlet.  Current: " + externalContextResponseContentType + " expected: " + headerRequestContentType);
        return Constants.TEST_FAILED;
    }
}
Also used : FacesContext(javax.faces.context.FacesContext) HeaderResponse(javax.portlet.HeaderResponse) ExternalContext(javax.faces.context.ExternalContext) HeaderRequest(javax.portlet.HeaderRequest) BridgeTest(com.liferay.faces.bridge.tck.annotation.BridgeTest)

Example 3 with HeaderResponse

use of javax.portlet.HeaderResponse in project liferay-faces-bridge-impl by liferay.

the class ViewDeclarationLanguageBridgeJspImpl method buildView.

@Override
public void buildView(FacesContext facesContext, UIViewRoot uiViewRoot) throws IOException {
    ExternalContext externalContext = facesContext.getExternalContext();
    ProductFactory productFactory = (ProductFactory) FactoryExtensionFinder.getFactory(externalContext, ProductFactory.class);
    final Product MYFACES = productFactory.getProductInfo(Product.Name.MYFACES);
    final boolean MYFACES_DETECTED = MYFACES.isDetected();
    PortletRequest portletRequest = (PortletRequest) externalContext.getRequest();
    PortletResponse portletResponse = (PortletResponse) externalContext.getResponse();
    // adapter that implements HttpServletRequest.
    if (MYFACES_DETECTED) {
        if (portletRequest instanceof HeaderRequest) {
            String requestCharacterEncoding = externalContext.getRequestCharacterEncoding();
            externalContext.setRequest(new HeaderRequestHttpServletAdapter((HeaderRequest) portletRequest, requestCharacterEncoding));
        } else if (portletRequest instanceof ResourceRequest) {
            externalContext.setRequest(new ResourceRequestHttpServletAdapter((ResourceRequest) portletRequest));
        }
    }
    final Product MOJARRA = productFactory.getProductInfo(Product.Name.MOJARRA);
    final boolean MOJARRA_DETECTED = MOJARRA.isDetected();
    // PortletResponse with an adapter that implements HttpServletResponse.
    if (MOJARRA_DETECTED || MYFACES_DETECTED) {
        if (portletResponse instanceof HeaderResponse) {
            externalContext.setResponse(new HeaderResponseHttpServletAdapter((HeaderResponse) portletResponse));
        } else if (portletResponse instanceof ResourceResponse) {
            externalContext.setResponse(new ResourceResponseHttpServletAdapter((ResourceResponse) portletResponse));
        }
    }
    // Delegate
    super.buildView(facesContext, uiViewRoot);
    // If Mojarra or MyFaces is detected, then un-decorate the PortletRequest.
    if (MOJARRA_DETECTED || MYFACES_DETECTED) {
        externalContext.setResponse(portletResponse);
    }
    // If MyFaces is detected, then un-decorate the PortletResponse.
    if (MYFACES_DETECTED) {
        externalContext.setRequest(portletRequest);
    }
}
Also used : ProductFactory(com.liferay.faces.util.product.ProductFactory) ResourceResponseHttpServletAdapter(com.liferay.faces.bridge.filter.internal.ResourceResponseHttpServletAdapter) PortletResponse(javax.portlet.PortletResponse) Product(com.liferay.faces.util.product.Product) ResourceRequestHttpServletAdapter(com.liferay.faces.bridge.filter.internal.ResourceRequestHttpServletAdapter) HeaderResponseHttpServletAdapter(com.liferay.faces.bridge.filter.internal.HeaderResponseHttpServletAdapter) HeaderResponse(javax.portlet.HeaderResponse) PortletRequest(javax.portlet.PortletRequest) HeaderRequestHttpServletAdapter(com.liferay.faces.bridge.filter.internal.HeaderRequestHttpServletAdapter) ResourceResponse(javax.portlet.ResourceResponse) ExternalContext(javax.faces.context.ExternalContext) HeaderRequest(javax.portlet.HeaderRequest) ResourceRequest(javax.portlet.ResourceRequest)

Example 4 with HeaderResponse

use of javax.portlet.HeaderResponse in project liferay-faces-bridge-impl by liferay.

the class BridgePortletResponseFactoryTCKMainImpl method getHeaderResponse.

@Override
public HeaderResponse getHeaderResponse(HeaderRequest headerRequest, HeaderResponse headerResponse, PortletConfig portletConfig, BridgeConfig bridgeConfig) {
    HeaderResponse returnHeaderResponse = wrappedBridgePortletResponseFactory.getHeaderResponse(headerRequest, headerResponse, portletConfig, bridgeConfig);
    String testName = (String) headerRequest.getAttribute(Constants.TEST_NAME);
    if (RESOURCES_RENDERED_IN_HEAD_TEST.equals(testName)) {
        returnHeaderResponse = new DependencyTrackingHeaderResponse(returnHeaderResponse);
    } else {
        returnHeaderResponse = new HeaderResponseTCKMainImpl(returnHeaderResponse);
    }
    return returnHeaderResponse;
}
Also used : DependencyTrackingHeaderResponse(com.liferay.faces.bridge.tck.tests.chapter_5.section_5_2.DependencyTrackingHeaderResponse) HeaderResponse(javax.portlet.HeaderResponse) DependencyTrackingHeaderResponse(com.liferay.faces.bridge.tck.tests.chapter_5.section_5_2.DependencyTrackingHeaderResponse)

Aggregations

HeaderResponse (javax.portlet.HeaderResponse)4 ExternalContext (javax.faces.context.ExternalContext)2 HeaderRequest (javax.portlet.HeaderRequest)2 HeaderRequestHttpServletAdapter (com.liferay.faces.bridge.filter.internal.HeaderRequestHttpServletAdapter)1 HeaderResponseHttpServletAdapter (com.liferay.faces.bridge.filter.internal.HeaderResponseHttpServletAdapter)1 ResourceRequestHttpServletAdapter (com.liferay.faces.bridge.filter.internal.ResourceRequestHttpServletAdapter)1 ResourceResponseHttpServletAdapter (com.liferay.faces.bridge.filter.internal.ResourceResponseHttpServletAdapter)1 BridgeTest (com.liferay.faces.bridge.tck.annotation.BridgeTest)1 DependencyTrackingHeaderResponse (com.liferay.faces.bridge.tck.tests.chapter_5.section_5_2.DependencyTrackingHeaderResponse)1 Product (com.liferay.faces.util.product.Product)1 ProductFactory (com.liferay.faces.util.product.ProductFactory)1 FacesContext (javax.faces.context.FacesContext)1 PortletContext (javax.portlet.PortletContext)1 PortletRequest (javax.portlet.PortletRequest)1 PortletResponse (javax.portlet.PortletResponse)1 ResourceRequest (javax.portlet.ResourceRequest)1 ResourceResponse (javax.portlet.ResourceResponse)1