/* * JBoss, Home of Professional Open Source. * Copyright 2012, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.portletbridge.bridge.config; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.faces.lifecycle.LifecycleFactory; import javax.portlet.PortletConfig; import javax.portlet.PortletContext; import javax.portlet.faces.Bridge; import javax.portlet.faces.BridgeEventHandler; import javax.portlet.faces.BridgePublicRenderParameterHandler; import javax.portlet.faces.BridgeWriteBehindResponse; import org.jboss.portletbridge.bridge.factory.BridgeFactoryFinder; import org.jboss.portletbridge.bridge.factory.BridgeLoggerFactory; import org.jboss.portletbridge.bridge.logger.BridgeLogger; /** * Represents values that a Portlet can configure for a given Bridge instance. Per the spec, this information is passed to the * Bridge via {@link PortletContext} attributes. As part of the init() method the Bridge will store all these values into a * BridgeConfig for use by all parts of the Bridge. * * @author kenfinnigan */ public class BridgeConfigImpl implements BridgeConfig { public static final String VIEWID_RENDER_PARAMETER_NAME = "__pbrVIEWID"; public static final String VIEWID_RESOURCE_PARAMETER_NAME = "__pbrVIEWRESID"; private PortletConfig portletConfig; private Map<String, String> defaultViewMappings; private Map<Class<? extends Throwable>, String> errorViewMappings; private List<String> facesServletMappings; private BridgeLogger logger; private BridgeEventHandler eventHandler; private BridgePublicRenderParameterHandler publicRenderParameterHandler; private boolean preserveActionParams = false; private List<String> excludedRequestAttributes; private Map<String, String> publicRenderParameterMappings; private Class<? extends BridgeWriteBehindResponse> writeBehindRenderResponseWrapperClass; private Class<? extends BridgeWriteBehindResponse> writeBehindResourceResponseWrapperClass; private List<String> facesSuffixes; private String lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE; private String viewIdParameterName = Bridge.FACES_VIEW_ID_PARAMETER; private String viewIdResourceParameterName = VIEWID_RESOURCE_PARAMETER_NAME; private Map<String, Object> attributes; private boolean preventSelfClosingScriptTag = false; private boolean insideJsf22Runtime = false; private boolean viewParamHandlingDisabled = false; private boolean bridgeScopeEnabledOnAjaxRequest = false; private boolean facesMessagesStoredOnAjaxRequest = true; private String sessionIdParameterName = "jsessionid"; private boolean bridgeScopePreservedPostRender = false; private boolean componentNamespaceShortened = true; public BridgeConfigImpl() { } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPortletConfig(javax.portlet.PortletConfig) */ public void setPortletConfig(PortletConfig config) { portletConfig = config; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getPortletConfig() */ public PortletConfig getPortletConfig() { return portletConfig; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setDefaultViewMappings(java.util.Map) */ public void setDefaultViewMappings(Map<String, String> defaultMappings) { defaultViewMappings = null; if (null != defaultMappings) { defaultViewMappings = new ConcurrentHashMap<String, String>(defaultMappings); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getDefaultViewMappings() */ public Map<String, String> getDefaultViewMappings() { if (null == defaultViewMappings) { defaultViewMappings = new ConcurrentHashMap<String, String>(); } return defaultViewMappings; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setFacesServletMappings(java.util.List) */ public void setFacesServletMappings(List<String> mappings) { facesServletMappings = null; if (null != mappings) { facesServletMappings = new ArrayList<String>(mappings); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getFacesServletMappings() */ public List<String> getFacesServletMappings() { if (null == facesServletMappings) { facesServletMappings = new ArrayList<String>(); } return facesServletMappings; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setFacesErrorViewMappings(java.util.Map) */ public void setFacesErrorViewMappings(Map<Class<? extends Throwable>, String> errorViewMappings) { this.errorViewMappings = null; if (null != errorViewMappings) { this.errorViewMappings = new ConcurrentHashMap<Class<? extends Throwable>, String>(errorViewMappings); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getFacesErrorViewMappings() */ public Map<Class<? extends Throwable>, String> getFacesErrorViewMappings() { if (null == errorViewMappings) { errorViewMappings = new ConcurrentHashMap<Class<? extends Throwable>, String>(); } return errorViewMappings; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setViewIdRenderParameterName(java.lang.String) */ public void setViewIdRenderParameterName(String name) { viewIdParameterName = name; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getViewIdRenderParameterName() */ public String getViewIdRenderParameterName() { return viewIdParameterName; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setViewIdResourceParameterName(java.lang.String) */ public void setViewIdResourceParameterName(String name) { viewIdResourceParameterName = name; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getViewIdResourceParameterName() */ public String getViewIdResourceParameterName() { return viewIdResourceParameterName; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setLogger(org.jboss.portletbridge.bridge.logger.BridgeLogger) */ public void setLogger(BridgeLogger logger) { this.logger = logger; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getLogger() */ public BridgeLogger getLogger() { if (null == logger) { setLogger(((BridgeLoggerFactory) BridgeFactoryFinder.getFactoryInstance(BridgeLoggerFactory.class)) .getBridgeLogger(this)); } return logger; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setEventHandler(javax.portlet.faces.BridgeEventHandler) */ public void setEventHandler(BridgeEventHandler handler) { eventHandler = handler; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getEventHandler() */ public BridgeEventHandler getEventHandler() { return eventHandler; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPublicRenderParameterHandler(javax.portlet.faces.BridgePublicRenderParameterHandler) */ public void setPublicRenderParameterHandler(BridgePublicRenderParameterHandler handler) { publicRenderParameterHandler = handler; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getPublicRenderParameterHandler() */ public BridgePublicRenderParameterHandler getPublicRenderParameterHandler() { return publicRenderParameterHandler; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPreserveActionParameters(boolean) */ public void setPreserveActionParameters(boolean preserve) { preserveActionParams = preserve; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPreserveActionParameters(java.lang.Boolean) */ public void setPreserveActionParameters(Boolean preserve) { preserveActionParams = false; if (null != preserve) { preserveActionParams = preserve.booleanValue(); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#hasPreserveActionParameters() */ public boolean hasPreserveActionParameters() { return preserveActionParams; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setExcludedRequestAttributes(java.util.List) */ public void setExcludedRequestAttributes(List<String> excludedAttributes) { excludedRequestAttributes = null; if (null != excludedAttributes) { excludedRequestAttributes = new ArrayList<String>(excludedAttributes); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getExcludedRequestAttributes() */ public List<String> getExcludedRequestAttributes() { if (null == excludedRequestAttributes) { excludedRequestAttributes = new ArrayList<String>(); } return excludedRequestAttributes; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPublicRenderParameterMappings(java.util.Map) */ public void setPublicRenderParameterMappings(Map<String, String> prpMappings) { publicRenderParameterMappings = null; if (null != prpMappings) { publicRenderParameterMappings = new ConcurrentHashMap<String, String>(prpMappings); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getPublicRenderParameterMappings() */ public Map<String, String> getPublicRenderParameterMappings() { if (null == publicRenderParameterMappings) { publicRenderParameterMappings = new ConcurrentHashMap<String, String>(); } return publicRenderParameterMappings; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#hasPublicRenderParameterMappings() */ public boolean hasPublicRenderParameterMappings() { return publicRenderParameterMappings != null && !publicRenderParameterMappings.isEmpty(); } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setWriteBehindRenderResponseWrapper(java.lang.Class) */ public void setWriteBehindRenderResponseWrapper(Class<? extends BridgeWriteBehindResponse> renderResponseWrapper) { writeBehindRenderResponseWrapperClass = renderResponseWrapper; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getWriteBehindRenderResponseWrapper() */ public Class<? extends BridgeWriteBehindResponse> getWriteBehindRenderResponseWrapper() { return writeBehindRenderResponseWrapperClass; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setWriteBehindResourceResponseWrapper(java.lang.Class) */ public void setWriteBehindResourceResponseWrapper(Class<? extends BridgeWriteBehindResponse> resourceResponseWrapper) { writeBehindResourceResponseWrapperClass = resourceResponseWrapper; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getWriteBehindResourceResponseWrapper() */ public Class<? extends BridgeWriteBehindResponse> getWriteBehindResourceResponseWrapper() { return writeBehindResourceResponseWrapperClass; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setFacesSuffixes(java.util.List) */ public void setFacesSuffixes(List<String> suffixes) { facesSuffixes = null; if (null != suffixes) { facesSuffixes = new ArrayList<String>(suffixes); } } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getFacesSuffixes() */ public List<String> getFacesSuffixes() { if (null == facesSuffixes) { facesSuffixes = new ArrayList<String>(); } return facesSuffixes; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setLifecyleId(java.lang.String) */ public void setLifecyleId(String id) { lifecycleId = id; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getLifecycleId() */ public String getLifecycleId() { return lifecycleId; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getAttributes() */ public Map<String, Object> getAttributes() { if (null == attributes) { attributes = new ConcurrentHashMap<String, Object>(10); } return attributes; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getDefaultRenderKitId() */ public String getDefaultRenderKitId() { return (String) portletConfig.getPortletContext().getAttribute( Bridge.BRIDGE_PACKAGE_PREFIX + portletConfig.getPortletName() + "." + Bridge.DEFAULT_RENDERKIT_ID); } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#doPreventSelfClosingScriptTag() */ @Override public boolean doPreventSelfClosingScriptTag() { return preventSelfClosingScriptTag; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setPreventSelfClosingScriptTag(boolean) */ @Override public void setPreventSelfClosingScriptTag(boolean preventSelfClosingScriptTag) { this.preventSelfClosingScriptTag = preventSelfClosingScriptTag; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isJsf22Runtime() */ @Override public boolean isJsf22Runtime() { return insideJsf22Runtime; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setJsf22Runtime(boolean) */ @Override public void setJsf22Runtime(boolean jsf22Runtime) { this.insideJsf22Runtime = jsf22Runtime; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isViewParamHandlingDisabled() */ @Override public boolean isViewParamHandlingDisabled() { return viewParamHandlingDisabled; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setViewParamHandlingDisabled(boolean) */ @Override public void setViewParamHandlingDisabled(boolean viewParamHandlingDisabled) { this.viewParamHandlingDisabled = viewParamHandlingDisabled; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isBridgeScopeEnabledOnAjaxRequest() */ @Override public boolean isBridgeScopeEnabledOnAjaxRequest() { return bridgeScopeEnabledOnAjaxRequest; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setBridgeScopeEnabledOnAjaxRequest(boolean) */ @Override public void setBridgeScopeEnabledOnAjaxRequest(boolean bridgeScopeEnabledOnAjaxRequest) { this.bridgeScopeEnabledOnAjaxRequest = bridgeScopeEnabledOnAjaxRequest; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isFacesMessagesStoredOnAjaxRequest() */ @Override public boolean isFacesMessagesStoredOnAjaxRequest() { return facesMessagesStoredOnAjaxRequest; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setFacesMessagesStoredOnAjaxRequest(boolean) */ @Override public void setFacesMessagesStoredOnAjaxRequest(boolean facesMessagesStoredOnAjaxRequest) { this.facesMessagesStoredOnAjaxRequest = facesMessagesStoredOnAjaxRequest; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#getSessionIdParameterName() */ @Override public String getSessionIdParameterName() { return sessionIdParameterName; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setSessionIdParameterName(String) */ @Override public void setSessionIdParameterName(String sessionIdParameterName) { this.sessionIdParameterName = sessionIdParameterName; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isBridgeScopePreservedPostRender() */ @Override public boolean isBridgeScopePreservedPostRender() { return bridgeScopePreservedPostRender; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setBridgeScopePreservedPostRender(boolean) */ @Override public void setBridgeScopePreservedPostRender(boolean bridgeScopePreservedPostRender) { this.bridgeScopePreservedPostRender = bridgeScopePreservedPostRender; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#isComponentNamespaceShortened() */ @Override public boolean isComponentNamespaceShortened() { return componentNamespaceShortened; } /** * @see org.jboss.portletbridge.bridge.config.BridgeConfig#setComponentNamespaceShortened(boolean) */ @Override public void setComponentNamespaceShortened(boolean componentNamespaceShortened) { this.componentNamespaceShortened = componentNamespaceShortened; } }