You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Cédric Durmont <cd...@gmail.com> on 2012/01/17 11:41:22 UTC

[Tomahawk] NPE using JsCookMenu on Tomahawk 1.1.11 / JSF2

Hello,

Here's my setup :
- Myfaces 2.1.5
- Trinidad 2.0.0 / 2.0.2-SNAPSHOT (updated yesterday)
- Tomahawk .1.1.11, core20 branch (also updated yesterday)

I have a simple test page with a facelets template using Tomahawk's JsCookMenu :
[...]
<trh:body styleClass="#{styleBody}">
<tr:form usesUpload="#{upload}">
<t:jscookMenu theme="ThemeMiniBlack" layout="hbr">
	<t:navigationMenuItem itemLabel="whatever">
[...]

(note that the same page runs fine in another application, which uses
a JSF1.2 setup)

Upon accessing the page, I get this error :

java.lang.NullPointerException

viewId=/test.xhtml
location=C:\devjava\workspace\authentic\src\main\webapp\test.xhtml
phaseId=RENDER_RESPONSE(6)
java.lang.NullPointerException
	at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addThemeSpecificResourcesWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:554)
	at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addResourcesToHeaderWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:464)
	at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.processEvent(HtmlJSCookMenuRenderer.java:103)
	at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1522)
	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
	at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2250)
	at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:558)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:98)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:92)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
	at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:165)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:294)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
	at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
	at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:326)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)


HtmlJSCookMenuRenderer.java contains this:

553:  Resource resource =
context.getApplication().getResourceHandler().createResource(";j","oam.custom.navmenu.jscookmenu."+themeName);
554:  buf.append(resource.getRequestPath());

As you may guess, resource on line 554 is null. themeName is "ThemeMiniBlack".
I'm not familiar with that code, but I did some debugging, and :
- createRessource tries to determine the mime type  of ";j", which -of
course- fails
- fallback is handled by a class related to CAPTCHAs (it was
CAPTCHAResource or CAPTCHAResourceHandlerWrapper, can't remember)

Could it be something in my config files ? Or is there something
broken in Tomahawk's resource handling ?

Thanks,
Cedric Durmont

Re: [Tomahawk] NPE using JsCookMenu on Tomahawk 1.1.11 / JSF2

Posted by Cédric Durmont <cd...@gmail.com>.
Thanks a lot, it works now !
FYI, the dummy file is also missing from ThemeGray...

Regards,
Cédric Durmont

2012/1/17 Leonardo Uribe <lu...@gmail.com>:
> Hi
>
> It seems "ThemeMiniBlack" does not have the dummy file ;j that helps
> to split the request path. The solution is simple, just add an empty
> file named ;j under
> META-INF/resources/oam.custom.navmenu.jscookmenu.ThemeMiniBlack
> inside tomahawk jar, or just extract the theme, and use styleLibrary,
> imageLibrary and javascriptLibrary to point to a new location that
> includes that file. If you look other themes the file is there. Thanks
> for notice it.
>
> regards,
>
> Leonardo Uribe
>
> 2012/1/17 Cédric Durmont <cd...@gmail.com>:
>> Hello,
>>
>> Here's my setup :
>> - Myfaces 2.1.5
>> - Trinidad 2.0.0 / 2.0.2-SNAPSHOT (updated yesterday)
>> - Tomahawk .1.1.11, core20 branch (also updated yesterday)
>>
>> I have a simple test page with a facelets template using Tomahawk's JsCookMenu :
>> [...]
>> <trh:body styleClass="#{styleBody}">
>> <tr:form usesUpload="#{upload}">
>> <t:jscookMenu theme="ThemeMiniBlack" layout="hbr">
>>        <t:navigationMenuItem itemLabel="whatever">
>> [...]
>>
>> (note that the same page runs fine in another application, which uses
>> a JSF1.2 setup)
>>
>> Upon accessing the page, I get this error :
>>
>> java.lang.NullPointerException
>>
>> viewId=/test.xhtml
>> location=C:\devjava\workspace\authentic\src\main\webapp\test.xhtml
>> phaseId=RENDER_RESPONSE(6)
>> java.lang.NullPointerException
>>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addThemeSpecificResourcesWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:554)
>>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addResourcesToHeaderWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:464)
>>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.processEvent(HtmlJSCookMenuRenderer.java:103)
>>        at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1522)
>>        at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
>>        at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2250)
>>        at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:558)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:98)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:92)
>>        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
>>        at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:165)
>>        at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
>>        at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
>>        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
>>        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
>>        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:294)
>>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>>        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
>>        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
>>        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
>>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>>        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
>>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>>        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
>>        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>>        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>>        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
>>        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>>        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>>        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>        at org.mortbay.jetty.Server.handle(Server.java:326)
>>        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>>        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
>>        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
>>        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>>        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>>        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
>>        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>>
>>
>> HtmlJSCookMenuRenderer.java contains this:
>>
>> 553:  Resource resource =
>> context.getApplication().getResourceHandler().createResource(";j","oam.custom.navmenu.jscookmenu."+themeName);
>> 554:  buf.append(resource.getRequestPath());
>>
>> As you may guess, resource on line 554 is null. themeName is "ThemeMiniBlack".
>> I'm not familiar with that code, but I did some debugging, and :
>> - createRessource tries to determine the mime type  of ";j", which -of
>> course- fails
>> - fallback is handled by a class related to CAPTCHAs (it was
>> CAPTCHAResource or CAPTCHAResourceHandlerWrapper, can't remember)
>>
>> Could it be something in my config files ? Or is there something
>> broken in Tomahawk's resource handling ?
>>
>> Thanks,
>> Cedric Durmont

Re: [Tomahawk] NPE using JsCookMenu on Tomahawk 1.1.11 / JSF2

Posted by Leonardo Uribe <lu...@gmail.com>.
Hi

It seems "ThemeMiniBlack" does not have the dummy file ;j that helps
to split the request path. The solution is simple, just add an empty
file named ;j under
META-INF/resources/oam.custom.navmenu.jscookmenu.ThemeMiniBlack
inside tomahawk jar, or just extract the theme, and use styleLibrary,
imageLibrary and javascriptLibrary to point to a new location that
includes that file. If you look other themes the file is there. Thanks
for notice it.

regards,

Leonardo Uribe

2012/1/17 Cédric Durmont <cd...@gmail.com>:
> Hello,
>
> Here's my setup :
> - Myfaces 2.1.5
> - Trinidad 2.0.0 / 2.0.2-SNAPSHOT (updated yesterday)
> - Tomahawk .1.1.11, core20 branch (also updated yesterday)
>
> I have a simple test page with a facelets template using Tomahawk's JsCookMenu :
> [...]
> <trh:body styleClass="#{styleBody}">
> <tr:form usesUpload="#{upload}">
> <t:jscookMenu theme="ThemeMiniBlack" layout="hbr">
>        <t:navigationMenuItem itemLabel="whatever">
> [...]
>
> (note that the same page runs fine in another application, which uses
> a JSF1.2 setup)
>
> Upon accessing the page, I get this error :
>
> java.lang.NullPointerException
>
> viewId=/test.xhtml
> location=C:\devjava\workspace\authentic\src\main\webapp\test.xhtml
> phaseId=RENDER_RESPONSE(6)
> java.lang.NullPointerException
>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addThemeSpecificResourcesWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:554)
>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.addResourcesToHeaderWithJSF2ResourceAPI(HtmlJSCookMenuRenderer.java:464)
>        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.processEvent(HtmlJSCookMenuRenderer.java:103)
>        at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1522)
>        at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
>        at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2250)
>        at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:558)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:98)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper._publishPreRenderViewAddResourceEvent(ResourceViewHandlerWrapper.java:105)
>        at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:92)
>        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
>        at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:165)
>        at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
>        at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
>        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
>        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
>        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:294)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
>        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
>        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
>        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
>        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>        at org.mortbay.jetty.Server.handle(Server.java:326)
>        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
>        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
>        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
>        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>
>
> HtmlJSCookMenuRenderer.java contains this:
>
> 553:  Resource resource =
> context.getApplication().getResourceHandler().createResource(";j","oam.custom.navmenu.jscookmenu."+themeName);
> 554:  buf.append(resource.getRequestPath());
>
> As you may guess, resource on line 554 is null. themeName is "ThemeMiniBlack".
> I'm not familiar with that code, but I did some debugging, and :
> - createRessource tries to determine the mime type  of ";j", which -of
> course- fails
> - fallback is handled by a class related to CAPTCHAs (it was
> CAPTCHAResource or CAPTCHAResourceHandlerWrapper, can't remember)
>
> Could it be something in my config files ? Or is there something
> broken in Tomahawk's resource handling ?
>
> Thanks,
> Cedric Durmont