Sorry to comment again on this. This patch won't quite work.. I think we only want the null value to effect whether or not we check for the annotation. The other logic still needs to hold true. For example, lets say we have a key of "mybean" configured in the face-config.xml to be excluded and that value is set to null on the map. With your logic the isExcludedFromBridgeRequestScope would return false, when in actuality it should return true. I think the net effect is trivial, but it may effect some usecases.
> BridgeImpl doesn't check for null Map values
> --------------------------------------------
>
> Key: PORTLETBRIDGE-31
> URL:
https://issues.apache.org/jira/browse/PORTLETBRIDGE-31> Project: MyFaces Portlet Bridge
> Issue Type: Bug
> Components: Impl
> Affects Versions: 1.0.0-alpha-2
> Environment: Windows XP, Tomcat 6, eXo portal, JSF RI
> Reporter: Kito D. Mann
> Attachments: BridgeImpl.patch
>
>
> When copying request values, the Bridge doesn't check for null. Specifically, the isExcludedFromBridgeRequestScope method doesn't check for null. This causes a problem with eXo portal (I suppose it puts a null value in that map). Here's the stack trace:
> java.lang.NullPointerException
> at org.apache.myfaces.portlet.faces.bridge.BridgeImpl.isExcludedFromBridgeRequestScope(BridgeImpl.java:893)
> at org.apache.myfaces.portlet.faces.bridge.BridgeImpl.copyRequestMap(BridgeImpl.java:877)
> at org.apache.myfaces.portlet.faces.bridge.BridgeImpl.saveBridgeRequestScopeData(BridgeImpl.java:837)
> at org.apache.myfaces.portlet.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:267)
> at javax.portlet.faces.GenericFacesPortlet.doBridgeDispatch(GenericFacesPortlet.java:331)
> at javax.portlet.faces.GenericFacesPortlet.processAction(GenericFacesPortlet.java:189)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.PortletMethodCommand.processAction(PortletMethodCommand.java:67)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.executeNextUnit(ExecutionContext.java:38)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.processAction(BaseCommandUnit.java:61)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.executeNextUnit(ExecutionContext.java:38)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.PortletCacheCommand.processAction(PortletCacheCommand.java:220)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.executeNextUnit(ExecutionContext.java:38)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.PortletFilterCommand.processAction(PortletFilterCommand.java:71)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.executeNextUnit(ExecutionContext.java:38)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.PortletSecurityCommand.processAction(PortletSecurityCommand.java:52)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.executeNextUnit(ExecutionContext.java:38)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.processAction(BaseCommandUnit.java:61)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.BaseCommandUnit.execute(BaseCommandUnit.java:45)
> at org.exoplatform.container.component.ExecutionContext.execute(ExecutionContext.java:32)
> at org.exoplatform.services.portletcontainer.plugins.pc.aop.PortletCommandChain.doProcessAction(PortletCommandChain.java:52)
> at org.exoplatform.services.portletcontainer.plugins.pc.PortletApplicationHandler.process(PortletApplicationHandler.java:241)
> at org.exoplatform.services.portletcontainer.impl.servlet.ServletWrapper.service(ServletWrapper.java:100)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
> at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590)
> at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505)
> at org.exoplatform.services.portletcontainer.plugins.pc.PortletContainerDispatcher.dispatch(PortletContainerDispatcher.java:537)
> at org.exoplatform.services.portletcontainer.plugins.pc.PortletContainerDispatcher.process(PortletContainerDispatcher.java:472)
> at org.exoplatform.services.portletcontainer.plugins.pc.PortletContainerDispatcher.processAction(PortletContainerDispatcher.java:367)
> at org.exoplatform.services.portletcontainer.impl.PortletContainerServiceImpl.processAction(PortletContainerServiceImpl.java:205)
> at org.exoplatform.portal.webui.application.UIPortletActionListener$ProcessActionActionListener.execute(UIPortletActionListener.java:109)
> at org.exoplatform.webui.event.Event.broadcast(Event.java:52)
> at org.exoplatform.portal.webui.application.UIPortletLifecycle.processAction(UIPortletLifecycle.java:116)
> at org.exoplatform.webui.core.UIComponent.processAction(UIComponent.java:90)
> at org.exoplatform.portal.webui.workspace.UIPortalApplicationLifecycle.processAction(UIPortalApplicationLifecycle.java:56)
> at org.exoplatform.webui.core.UIComponent.processAction(UIComponent.java:90)
> at org.exoplatform.webui.core.UIApplication.processAction(UIApplication.java:80)
> at org.exoplatform.webui.application.WebuiApplication.processAction(WebuiApplication.java:105)
> at org.exoplatform.portal.application.PortalRequestHandler.execute(PortalRequestHandler.java:87)
> at org.exoplatform.web.WebAppController.service(WebAppController.java:126)
> at org.exoplatform.portal.application.PortalController.service(PortalController.java:92)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.exoplatform.frameworks.jcr.web.SimpleSessionFactoryInitializedFilter.doFilter(SimpleSessionFactoryInitializedFilter.java:144)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at com.virtua.knowesis.portal.UrlFilter.doFilter(UrlFilter.java:204)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at com.virtua.knowesis.web.common.SessionInViewFilter.doFilter(SessionInViewFilter.java:32)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
> at java.lang.Thread.run(Thread.java:595)
> The fix is just to check for null in this method. The patch is attached.