Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-19909

EmoticonRendererComponent throws NPE on JAC

    XMLWordPrintable

Details

    Description

      There are a number of NullPointerExceptions in the JAC logs being thrown by the EmoticonRendererComponent.

      I have not been able to reproduce this, but judging from the stack trace, they are thrown when viewing an XML search result page that contains a null value in a wiki-markup-rendered field.

      The problem appears to be that EmoticonRendererComponent does not check that the markup string is not null before calling indexOf on it:

      EmoticonRendererComponent.java
      29    public String render(String wiki, RenderContext context)
      30    {
      31        Pattern[] patterns = getEmoticonPatterns();
      32        for (int i = 0; i < patterns.length; i++)
      33        {
      34            if (wiki.indexOf(emoticonSymbols[i]) != -1)
      

      Error from the logs:

      2009-12-02 16:08:21,076 http-j2ee.jira.atlassian.com%2F127.0.0.101-8080-Processor68 ERROR anonymous 58082x9x9 - 
      http://jira.atlassian.com/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml
      [atlassian.renderer.v2.V2Renderer] Unable to render content due to system error: null
      java.lang.NullPointerException
              at java.lang.String.indexOf(String.java:1733)
              at java.lang.String.indexOf(String.java:1715)
              at com.atlassian.renderer.v2.components.phrase.EmoticonRendererComponent.render(EmoticonRendererComponent.java:33)
              at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:53)
              at com.atlassian.renderer.v2.V2SubRenderer.render(V2SubRenderer.java:44)
              at com.atlassian.renderer.v2.components.block.BlockRendererComponent.renderParagraph(BlockRendererComponent.java:112)
              at com.atlassian.renderer.v2.components.block.BlockRendererComponent.render(BlockRendererComponent.java:46)
              at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:53)
              at com.atlassian.renderer.v2.V2RendererFacade.convertWikiToXHtml(V2RendererFacade.java:57)
              at com.atlassian.jira.issue.fields.renderer.wiki.AtlassianWikiRenderer.render(AtlassianWikiRenderer.java:23)
              at com.atlassian.jira.issue.managers.DefaultRendererManager.getRenderedContent(DefaultRendererManager.java:92)
              at com.atlassian.jira.issue.views.util.DefaultIssueViewUtil.getRenderedContent(DefaultIssueViewUtil.java:73)
              at com.atlassian.jira.issue.views.IssueXMLView.getRenderedContent(IssueXMLView.java:194)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:234)
              at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:201)
              at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175)
              at org.apache.velocity.runtime.directive.VMProxyArg.getObject(VMProxyArg.java:273)
              at org.apache.velocity.context.VMContext.get(VMContext.java:181)
              at org.apache.velocity.runtime.parser.node.ASTReference.getVariableValue(ASTReference.java:623)
              at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:151)
              at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:327)
              at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:147)
              at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175)
              at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:220)
              at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
              at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:172)
              at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:114)
              at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:55)
              at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
              at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:89)
              at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:55)
              at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:70)
              at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
              at org.apache.velocity.Template.merge(Template.java:256)
              at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:450)
              at com.atlassian.velocity.DefaultVelocityManager.getEncodedBody(DefaultVelocityManager.java:77)
              at com.atlassian.velocity.DefaultVelocityManager.getEncodedBody(DefaultVelocityManager.java:61)
              at com.atlassian.velocity.DefaultVelocityManager.getEncodedBody(DefaultVelocityManager.java:56)
              at com.atlassian.jira.plugin.JiraResourcedModuleDescriptor.getHtml(JiraResourcedModuleDescriptor.java:105)
              at com.atlassian.jira.issue.views.IssueXMLView.getBody(IssueXMLView.java:189)
              at com.atlassian.jira.issue.views.SearchRequestXMLView$1.writeIssue(SearchRequestXMLView.java:77)
              at com.atlassian.jira.issue.views.util.DefaultSearchRequestViewBodyWriterUtil$1.writeIssue(DefaultSearchRequestViewBodyWriterUtil.java:49)
              at com.atlassian.jira.issue.views.util.IssueWriterHitCollector.collect(IssueWriterHitCollector.java:30)
              at com.atlassian.jira.issue.statistics.util.DocumentHitCollector.collect(DocumentHitCollector.java:23)
              at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.searchAndSort(LuceneSearchProvider.java:289)
              at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.searchAndSort(LuceneSearchProvider.java:110)
              at com.atlassian.jira.issue.views.util.DefaultSearchRequestViewBodyWriterUtil.writeBody(DefaultSearchRequestViewBodyWriterUtil.java:53)
              at com.atlassian.jira.issue.views.SearchRequestXMLView.writeSearchResults(SearchRequestXMLView.java:81)
              at com.atlassian.jira.plugin.searchrequestview.DefaultSearchRequestURLHandler.handleRequest(DefaultSearchRequestURLHandler.java:386)
              at com.atlassian.jira.web.servlet.SearchRequestViewServlet.doGet(SearchRequestViewServlet.java:28)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:154)
              at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:133)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:206)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:131)
              at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
              at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
              at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:69)
              at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
              at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:99)
              at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:59)
              at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:53)
              at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:72)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:81)
              at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:51)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
              at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.jira.web.filters.CurlyQuotesFilter.doFilter(CurlyQuotesFilter.java:24)
              at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33)
              at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:41)
              at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:72)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
              at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
              at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
              at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
              at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
              at java.lang.Thread.run(Thread.java:619)
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            pwyatt Penny Wyatt (On Leave to July 2021)
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: