use of com.liferay.faces.util.product.ProductFactory in project liferay-faces-bridge-impl by liferay.
the class ContextMapFactoryImpl method getUploadedFileMap.
@Override
public Map<String, List<UploadedFile>> getUploadedFileMap(PortletRequest portletRequest) {
Map<String, List<UploadedFile>> bridgeUploadedFileMap = Collections.emptyMap();
MultiPartFormData multiPartFormData = (MultiPartFormData) portletRequest.getAttribute(MULTIPART_FORM_DATA_FQCN);
if (multiPartFormData != null) {
Map<String, List<com.liferay.faces.util.model.UploadedFile>> uploadedFileMap = multiPartFormData.getUploadedFileMap();
if (uploadedFileMap != null) {
PortletSession portletSession = portletRequest.getPortletSession(true);
PortletContext portletContext = portletSession.getPortletContext();
Map<String, Object> applicationScopeMap = getApplicationScopeMap(portletContext, true);
ExternalContext externalContext = new ExternalContextProductImpl(applicationScopeMap);
ProductFactory productFactory = (ProductFactory) FactoryExtensionFinder.getFactory(externalContext, ProductFactory.class);
Product PRIMEFACES = productFactory.getProductInfo(Product.Name.PRIMEFACES);
boolean primeFacesDetected = PRIMEFACES.isDetected();
int primeFacesMajorVersion = PRIMEFACES.getMajorVersion();
bridgeUploadedFileMap = new HashMap<String, List<UploadedFile>>(uploadedFileMap.size());
Set<Map.Entry<String, List<com.liferay.faces.util.model.UploadedFile>>> entrySet = uploadedFileMap.entrySet();
for (Map.Entry<String, List<com.liferay.faces.util.model.UploadedFile>> mapEntry : entrySet) {
List<com.liferay.faces.util.model.UploadedFile> uploadedFileList = mapEntry.getValue();
if (uploadedFileList != null) {
List<UploadedFile> bridgeUploadedFileList = new ArrayList<UploadedFile>(uploadedFileList.size());
for (com.liferay.faces.util.model.UploadedFile uploadedFile : uploadedFileList) {
bridgeUploadedFileList.add(new UploadedFileBridgeImpl(uploadedFile, primeFacesDetected, primeFacesMajorVersion));
}
bridgeUploadedFileMap.put(mapEntry.getKey(), bridgeUploadedFileList);
}
}
}
}
return bridgeUploadedFileMap;
}
use of com.liferay.faces.util.product.ProductFactory 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;
}
use of com.liferay.faces.util.product.ProductFactory in project liferay-faces-bridge-impl by liferay.
the class PreDestroyInvokerFactoryImpl method getPreDestroyInvoker.
@Override
public PreDestroyInvoker getPreDestroyInvoker(PortletContext portletContext) {
ProductFactory productFactory = (ProductFactory) BridgeFactoryFinder.getFactory(portletContext, ProductFactory.class);
final Product MOJARRA = productFactory.getProductInfo(Product.Name.MOJARRA);
if (MOJARRA.isDetected()) {
return new PreDestroyInvokerMojarraImpl(portletContext);
} else {
return new PreDestroyInvokerImpl();
}
}
use of com.liferay.faces.util.product.ProductFactory in project liferay-faces-bridge-impl by liferay.
the class FacesRuntimeUtil method isAbleToNamespaceViewState.
public static boolean isAbleToNamespaceViewState(PortalContext portalContext, ExternalContext externalContext) {
Boolean namespacedViewStateSupported = false;
if (isStrictParameterNamespacingSupported(portalContext)) {
Map<String, Object> applicationMap = externalContext.getApplicationMap();
namespacedViewStateSupported = (Boolean) applicationMap.get(FacesRuntimeUtil.class.getName());
if (namespacedViewStateSupported == null) {
ProductFactory productFactory = (ProductFactory) FactoryExtensionFinder.getFactory(externalContext, ProductFactory.class);
namespacedViewStateSupported = isNamespacedViewStateSupported(productFactory);
}
}
return namespacedViewStateSupported;
}
use of com.liferay.faces.util.product.ProductFactory in project liferay-faces-bridge-impl by liferay.
the class FacesRuntimeUtil method isNamespaceViewState.
public static boolean isNamespaceViewState(boolean strictParameterNamespacingSupported, PortletContext portletContext) {
Boolean namespacedViewStateSupported = false;
if (strictParameterNamespacingSupported) {
namespacedViewStateSupported = (Boolean) portletContext.getAttribute(FacesRuntimeUtil.class.getName());
if (namespacedViewStateSupported == null) {
ProductFactory productFactory = (ProductFactory) BridgeFactoryFinder.getFactory(portletContext, ProductFactory.class);
namespacedViewStateSupported = isNamespacedViewStateSupported(productFactory);
}
}
return namespacedViewStateSupported;
}
Aggregations