Converting XHTML to wiki markup with ConfluenceWysiwygConverter in Confluence 11.0 fails with NoClassDefFoundError

XMLWordPrintable

    • Severity 3 - Minor

      Issue Summary

      In Confluence 11.0, every call to ConfluenceWysiwygConverter#convertXHtmlToWikiMarkup fails with java.lang.NoClassDefFoundError: org/cyberneko/html/parsers/DOMFragmentParser. 

      DefaultConfluenceWysiwygConverter calls com.atlassian.renderer.wysiwyg.converter.DefaultWysiwygConverter (atlassian-renderer-legacy 6.5.4). That class still references the original NekoHTML package org.cyberneko.html, but the 11.0 webapp only provides org.htmlunit:neko-htmlunit 4.21.0 (package org.htmlunit.cyberneko).

      Steps to Reproduce

      1. Install Confluence 11.0.0.
      2. Install an app that injects ConfluenceWysiwygConverter (exported as an OSGi service) and calls convertXHtmlToWikiMarkup:
        @Bean
        public ConfluenceWysiwygConverter confluenceWysiwygConverter() {
            return importOsgiService(ConfluenceWysiwygConverter.class);
        }
        
        // in a class
        String wiki = converter.convertXHtmlToWikiMarkup("<p>Hello <strong>world</strong></p>", "");
        
      3. Trigger the code

      Expected Results

      The XHTML is converted to wiki markup.

      Actual Results

      The request fails with HTTP 500.

      The below exception is thrown in the atlassian-confluence.log file:

      Caused by: java.lang.NoClassDefFoundError: org/cyberneko/html/parsers/DOMFragmentParser
      	at com.atlassian.renderer.wysiwyg.converter.DefaultWysiwygConverter.convertXHtmlToWikiMarkup(DefaultWysiwygConverter.java:418)
      	at com.atlassian.confluence.pages.wysiwyg.DefaultConfluenceWysiwygConverter.convertXHtmlToWikiMarkup(DefaultConfluenceWysiwygConverter.java:26)
      	at com.atlassian.confluence.pages.wysiwyg.DefaultConfluenceWysiwygConverter.convertXHtmlToWikiMarkup(DefaultConfluenceWysiwygConverter.java:38)
      	...
      	at jdk.proxy4/jdk.proxy4.$Proxy431.convertXHtmlToWikiMarkup(Unknown Source)
      	at com.atlassian.ecohelp.page.WikiServlet.doGet(WikiServlet.java:65)
      	...
      Caused by: java.lang.ClassNotFoundException: org.cyberneko.html.parsers.DOMFragmentParser
      

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available

              Assignee:
              Tom Smallridge
              Reporter:
              James Richards
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: