Testing the ICEfaces 4 trunk, I hit a couple of snags just trying to deploy some portlets. The first one is:
Caused by: java.lang.NullPointerException
at com.liferay.faces.bridge.context.IncongruityContextCompatImpl.getRequestContentLength(IncongruityContextCompatImpl.java:230)
at com.liferay.faces.bridge.context.ExternalContextCompatImpl.getRequestContentLength(ExternalContextCompatImpl.java:523)
at org.icefaces.util.EnvUtils.createSessionOnPageLoad(EnvUtils.java:672)
at org.icefaces.impl.application.SessionAwareResourceHandlerWrapper.isResourceRequest(SessionAwareResourceHandlerWrapper.java:28)
I have a temp fix for this (which I should be able to turn into a real fix) but then I ran into:
Caused by: java.lang.NullPointerException
at org.icefaces.ace.component.qrcode.generator.QRCodeResourceHandler.extractResourceId(QRCodeResourceHandler.java:88)
at org.icefaces.ace.component.qrcode.generator.QRCodeResourceHandler.handleResourceRequest(QRCodeResourceHandler.java:55)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
at org.icefaces.impl.push.servlet.ICEpushResourceHandler$ICEpushResourceHandlerImpl.handleResourceRequest(ICEpushResourceHandler.java:229)
at org.icefaces.impl.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:128)
Don't have anything for this yet.
Went back to the ICEfaces 3.3 maintenance branch and thought I had the same issue with the EnvUtils call but now it seems like it's okay. The same problematic code is present but is not called during the initial page render like it is in ICEfaces 4. The QRCode resource handling code doesn't exist in ICEfaces 3.3 so that isn't a factor.
However, turning on coalescing still impacts certain components under ICEfaces 3.3. maintenance.
Resolving as fixed.
In order to use request attributes that span across multiple portlets on the page, we have our own portal-specific code that attempts to get at the original HttpServletRequest rather than use the PortletRequest. From a strict portal sense this behaviour is not encourage which is why we require specific code for different portal containers and even different versions.
In Liferay 6.1.2, they changed the internal request wrapper so in our LiferayOriginalRequestGetter we had to accommodate for this.