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);
}
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;
}
}
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);
}
}
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;
}
Aggregations