Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-7225

PDF Export throws an exception when an unterminated macro is used in a heading

    XMLWordPrintable

Details

    Description

      The PDF Export code can't handle the following wiki markup snippet. It just throws an exception. The markup may be invalid, but still the PDF renderer should cope with invalid input without throwing an unhandeled exception. Not good.

      Wiki markup:

      h1. {color:red}foo
      

      bar

      {color}
      

      Exception:

      com.atlassian.confluence.importexport.ImportExportException: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'exportWikiToXslFo' in class com.atlassian.confluence.importexport.impl.WikiExporter threw exception class com.atlassian.confluence.renderer.WikiRenderException : Error while generating XSL-FO for '~admin:pdf test'
      at com.atlassian.confluence.importexport.impl.PdfExporter.generateXslFo(PdfExporter.java:197)
      at com.atlassian.confluence.importexport.impl.PdfExporter.doExportEntity(PdfExporter.java:115)
      at com.atlassian.confluence.importexport.impl.AbstractRendererExporterImpl.exportPage(AbstractRendererExporterImpl.java:130)
      at com.atlassian.confluence.importexport.impl.AbstractRendererExporterImpl.doExport(AbstractRendererExporterImpl.java:100)
      at com.atlassian.confluence.importexport.impl.PdfExporter.doExport(PdfExporter.java:60)
      at com.atlassian.confluence.importexport.DefaultImportExportManager.exportAs(DefaultImportExportManager.java:113)
      at sun.reflect.GeneratedMethodAccessor437.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.springframework.aop.framework.AopProxyUtils.invokeJoinpointUsingReflection(AopProxyUtils.java:61)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:149)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:116)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:138)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:152)
      at $Proxy35.exportAs(Unknown Source)
      at com.atlassian.confluence.importexport.actions.ExportPageAction.execute(ExportPageAction.java:107)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
      at com.atlassian.confluence.core.ConfluenceWorkflowInterceptor.intercept(ConfluenceWorkflowInterceptor.java:39)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.atlassian.confluence.core.ConfluenceValidationInterceptor.intercept(ConfluenceValidationInterceptor.java:16)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.security.actions.PermissionCheckInterceptor.intercept(PermissionCheckInterceptor.java:39)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.pages.actions.PageAwareInterceptor.intercept(PageAwareInterceptor.java:114)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.spaces.actions.SpaceAwareInterceptor.intercept(SpaceAwareInterceptor.java:82)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)

      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.core.actions.LastModifiedInterceptor.intercept(LastModifiedInterceptor.java:39)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:25)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.atlassian.confluence.util.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:133)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
      at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:229)
      at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:199)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
      at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
      at net.elma.confluence.profile.UpdateProfilePictureFilter.doFilter(UpdateProfilePictureFilter.java:62)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:117)
      at com.atlassian.confluence.util.profiling.ProfilingPageFilter.parsePage(ProfilingPageFilter.java:143)
      at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:51)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.confluence.util.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:30)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.confluence.util.UserThreadLocalFilter.doFilter(UserThreadLocalFilter.java:45)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:96)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:170)
      at bucket.custom.FlushingSpringSessionInViewFilter.doFilterInternal(FlushingSpringSessionInViewFilter.java:31)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:122)
      at com.atlassian.confluence.util.error.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:27)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.core.filters.gzip.GzipFilter.doFilter(GzipFilter.java:61)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
      at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
      at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
      at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
      at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:420)
      at com.caucho.server.port.TcpConnection.run(TcpConnection.java:511)
      at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:516)
      at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'exportWikiToXslFo' in class com.atlassian.confluence.importexport.impl.WikiExporter threw exception class com.atlassian.confluence.renderer.WikiRenderException : Error while generating XSL-FO for '~admin:pdf test'
      at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:309)
      at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:207)
      at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:250)
      at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271)
      at org.apache.velocity.Template.merge(Template.java:296)
      at com.atlassian.confluence.util.TemplateSupport.processTemplate(TemplateSupport.java:70)
      at com.atlassian.confluence.importexport.impl.PdfExporter.generateXslFo(PdfExporter.java:193)
      ... 86 more
      caused by:
      com.atlassian.confluence.renderer.WikiRenderException: Error while generating XSL-FO for '~admin:pdf test'
      at com.atlassian.confluence.importexport.impl.WikiExporter.exportWikiToXslFo(WikiExporter.java:114)
      at sun.reflect.GeneratedMethodAccessor439.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260)
      at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:207)
      at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:250)
      at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271)
      at org.apache.velocity.Template.merge(Template.java:296)
      at com.atlassian.confluence.util.TemplateSupport.processTemplate(TemplateSupport.java:70)
      at com.atlassian.confluence.importexport.impl.PdfExporter.generateXslFo(PdfExporter.java:193)
      at com.atlassian.confluence.importexport.impl.PdfExporter.doExportEntity(PdfExporter.java:115)
      at com.atlassian.confluence.importexport.impl.AbstractRendererExporterImpl.exportPage(AbstractRendererExporterImpl.java:130)
      at com.atlassian.confluence.importexport.impl.AbstractRendererExporterImpl.doExport(AbstractRendererExporterImpl.java:100)
      at com.atlassian.confluence.importexport.impl.PdfExporter.doExport(PdfExporter.java:60)
      at com.atlassian.confluence.importexport.DefaultImportExportManager.exportAs(DefaultImportExportManager.java:113)
      at sun.reflect.GeneratedMethodAccessor437.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.springframework.aop.framework.AopProxyUtils.invokeJoinpointUsingReflection(AopProxyUtils.java:61)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:149)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:116)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:138)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:152)
      at $Proxy35.exportAs(Unknown Source)
      at com.atlassian.confluence.importexport.actions.ExportPageAction.execute(ExportPageAction.java:107)
      at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
      at com.opensymphony.xw

      Attachments

        Activity

          People

            Unassigned Unassigned
            744135a9a5ef Tuomas Jormola
            Votes:
            6 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: