Patch looks good to me Kito, are you able to commit or do you want me to do it?

Scott

Scott O'Bryan (JIRA) wrote:
[ https://issues.apache.org/jira/browse/PORTLETBRIDGE-31?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12581651#action_12581651 ]
Scott O'Bryan commented on PORTLETBRIDGE-31:
--------------------------------------------

Looking at this again, your totally correct.  Some maps treat setting the value 
to null as being the same as removing the value.  This is in no way enforced by 
the contract though.  :)  In either case, let me take a look at the patch and 
I'll see about committing it.

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.


Reply via email to