use of com.liferay.faces.util.context.map.FacesRequestParameterMap in project liferay-faces-bridge-impl by liferay.
the class ContextMapFactoryImpl method getFacesRequestParameterMap.
protected FacesRequestParameterMap getFacesRequestParameterMap(PortletRequest portletRequest, String responseNamespace, PortletConfig portletConfig, BridgeRequestScope bridgeRequestScope, String defaultRenderKitId, String facesViewQueryString) {
FacesRequestParameterMap facesRequestParameterMap = null;
Map<String, String> facesViewParameterMap = getFacesViewParameterMap(facesViewQueryString);
PortalContext portalContext = portletRequest.getPortalContext();
boolean strictParameterNamespacingSupported = FacesRuntimeUtil.isStrictParameterNamespacingSupported(portalContext);
PortletContext portletContext = portletConfig.getPortletContext();
boolean namespaceViewState = strictParameterNamespacingSupported && FacesRuntimeUtil.isNamespaceViewState(strictParameterNamespacingSupported, portletContext);
if (portletRequest instanceof ClientDataRequest) {
ClientDataRequest clientDataRequest = (ClientDataRequest) portletRequest;
String contentType = clientDataRequest.getContentType();
// Note: af:inputFile (ADF Faces) ace:fileEntry (ICEfaces) rely on their own mechanisms for handling file
// uploads.
ProductFactory productFactory = (ProductFactory) BridgeFactoryFinder.getFactory(portletContext, ProductFactory.class);
Product ADF_FACES_RICH_CLIENT = productFactory.getProductInfo(Product.Name.ADF_FACES);
Product ICEFACES = productFactory.getProductInfo(Product.Name.ICEFACES);
if (!ADF_FACES_RICH_CLIENT.isDetected() && !ICEFACES.isDetected() && (contentType != null) && contentType.toLowerCase().startsWith("multipart/")) {
MultiPartFormData multiPartFormData = (MultiPartFormData) portletRequest.getAttribute(MULTIPART_FORM_DATA_FQCN);
if (multiPartFormData == null) {
facesRequestParameterMap = new FacesRequestParameterMapImpl(responseNamespace, bridgeRequestScope, facesViewParameterMap, defaultRenderKitId, getSeparatorChar(), strictParameterNamespacingSupported, namespaceViewState);
MultiPartFormDataProcessor multiPartFormDataProcessor = new MultiPartFormDataProcessorImpl();
Map<String, List<com.liferay.faces.util.model.UploadedFile>> uploadedFileMap = multiPartFormDataProcessor.process(clientDataRequest, portletConfig, facesRequestParameterMap);
multiPartFormData = new MultiPartFormDataImpl(facesRequestParameterMap, uploadedFileMap);
// Save the multipart/form-data in a request attribute so that it can be referenced later-on in the
// JSF lifecycle by file upload component renderers.
portletRequest.setAttribute(MULTIPART_FORM_DATA_FQCN, multiPartFormData);
} else {
facesRequestParameterMap = multiPartFormData.getFacesRequestParameterMap();
}
}
}
if (facesRequestParameterMap == null) {
Map<String, String[]> parameterMap = portletRequest.getParameterMap();
facesRequestParameterMap = new FacesRequestParameterMapImpl(parameterMap, responseNamespace, bridgeRequestScope, facesViewParameterMap, defaultRenderKitId, getSeparatorChar(), strictParameterNamespacingSupported, namespaceViewState);
}
return facesRequestParameterMap;
}
Aggregations