[ https://issues.apache.org/jira/browse/TRINIDAD-1558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias Weßendorf updated TRINIDAD-1558: ----------------------------------------- Resolution: Duplicate Fix Version/s: 1.2.13-core Status: Resolved (was: Patch Available) this is a duplicate of TRINIDAD-1520. The bug has been fixed with the fix for TRINIDAD-1520 > java.lang.NullPointerException: version must be non-null with Googlebot agent > (trindad trunk) > ---------------------------------------------------------------------------------------------- > > Key: TRINIDAD-1558 > URL: https://issues.apache.org/jira/browse/TRINIDAD-1558 > Project: MyFaces Trinidad > Issue Type: Bug > Affects Versions: 1.2.13-core > Environment: Linux 2.6 Java(TM) SE Runtime Environment (build > 1.6.0_16-b01) tomcat 6.0.18 myfaces-api/impl-1.2.7 trinidad-api/impl > 1.2.13-SNAPSHOT (trunk) > Reporter: Angel > Priority: Critical > Fix For: 1.2.13-core > > > when request with the header of Googlebots comes > org/apache/myfaces/trinidadinternal/agent/AgentImpl.java gets initialized > with String _agent = NULL; and String _agentVersion = NULL; and a NPE is > thrown: > java.lang.NullPointerException: version must be non-null > at > org.apache.myfaces.trinidad.context.Version._checkNonEmptyString(Version.java:197) > at org.apache.myfaces.trinidad.context.Version.<init>(Version.java:69) > at org.apache.myfaces.trinidad.context.Version.<init>(Version.java:54) > at > org.apache.myfaces.trinidadinternal.style.util.NameUtils._isBrowserAndVersionMatch(NameUtils.java:640) > at > org.apache.myfaces.trinidadinternal.style.util.NameUtils.getContextName(NameUtils.java:344) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache.getTargetStyleSheetName(FileSystemStyleCache.java:325) > at > org.apache.myfaces.trinidadinternal.skin.SkinStyleProvider.getTargetStyleSheetName(SkinStyleProvider.java:199) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._getOutputFiles(FileSystemStyleCache.java:879) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._createStyleSheetFiles(FileSystemStyleCache.java:757) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._createEntry(FileSystemStyleCache.java:542) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._getEntry(FileSystemStyleCache.java:445) > at > org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache.getStyleSheetURIs(FileSystemStyleCache.java:165) > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.StyleSheetRenderer.encodeAll(StyleSheetRenderer.java:97) > at > org.apache.myfaces.trinidad.render.CoreRenderer.delegateRenderer(CoreRenderer.java:446) > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.HeadRenderer.encodeBegin(HeadRenderer.java:80) > at > org.apache.myfaces.trinidad.render.CoreRenderer.encodeBegin(CoreRenderer.java:311) > at > org.apache.myfaces.trinidad.component.UIXComponentBase.encodeBegin(UIXComponentBase.java:718) > at > org.apache.myfaces.trinidad.component.UIXComponentBase.__encodeRecursive(UIXComponentBase.java:1478) > at > org.apache.myfaces.trinidad.component.UIXComponentBase.__encodeRecursive(UIXComponentBase.java:1489) > at > org.apache.myfaces.trinidad.component.UIXComponentBase.encodeAll(UIXComponentBase.java:771) > at javax.faces.component.UIComponent.encodeAll(UIComponent.java:257) > at > org.apache.myfaces.application.jsp.JspViewHandlerImpl.actuallyRenderView(JspViewHandlerImpl.java:427) > at > org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:383) > at > javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:48) > at > org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:193) > at > org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) > at > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:155) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown > Source) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown > Source) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157) > at > org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown > Source) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown > Source) > at org.piranko.filters.LocaleFilter.doFilter(LocaleFilter.java:82) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown > Source) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown > Source) > at > org.piranko.filters.ExceptionsFilter.doFilter(ExceptionsFilter.java:61) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown > Source) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown > Source) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157) > at > org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown > Source) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown > Source) > at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source) > at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source) > at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source) > at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown Source) > at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source) > at org.apache.catalina.connector.CoyoteAdapter.service(Unknown Source) > at org.apache.jk.server.JkCoyoteHandler.invoke(Unknown Source) > at org.apache.jk.common.HandlerRequest.invoke(Unknown Source) > at org.apache.jk.common.ChannelSocket.invoke(Unknown Source) > at org.apache.jk.common.ChannelSocket.processConnection(Unknown Source) > at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Unknown > Source) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown Source) > at java.lang.Thread.run(Thread.java:619) > We have patched the code temporary with: > Index: > trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Agent.java > =================================================================== > --- trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Agent.java > (revision 807570) > +++ trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/Agent.java > (working copy) > @@ -124,7 +124,12 @@ > */ > public static final String AGENT_UNKNOWN = "unknown"; > > + > /** > + * Constant used for unknown versions of agents > + */ > + public static final String VERSION_UNKNOWN = "unknown"; > + /** > * Constant for Konqueror agent > */ > public static final String AGENT_KONQUEROR = "konqueror"; > and > Index: > trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentImpl.java > =================================================================== > --- > trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentImpl.java > (revision 807570) > +++ > trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentImpl.java > (working copy) > @@ -146,8 +146,8 @@ > private static class AgentEntry > { > Object _type = TYPE_UNKNOWN; > - String _agent; > - String _agentVersion; > + String _agent = AGENT_UNKNOWN; > + String _agentVersion = VERSION_UNKNOWN; > String _platform; > String _platformVersion; > String _makeModel; > so that the AgentEntry class _agent and _agentVersion will always be > initialized. Is that acceptable solution or another brake might be expected. > We have also observed that to reproduce the error one must not call the local > server with "http://localhost:8080/" but with "http://10.1.1.208:8080/" > otherwise the problem does not apear. This is probably because the styles are > pulled out of cache of some sort and not freshly created when the problem > appears when creating new stylesheet. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.