jelovirt / org.lwdita

LwDITA parser for DITA-OT
http://lwdita.org/
Apache License 2.0
25 stars 19 forks source link

Admonition in a list item fails with #193

Closed kirkilj closed 11 months ago

kirkilj commented 11 months ago

Expected Behavior

A list item containing an admonition should convert to DITA without causing a parsing error.

VS-Code Markdown Preview shows expected result:

image

Actual Behavior

Fails with Java exception in 3 different scenarios.

[gen-list] Processing file:/C:/gitworks/dita-ot-bug-prep/test-UA_TM-1720.md
Error: Failed to run pipeline: class com.vladsch.flexmark.ext.admonition.AdmonitionBlock cannot be cast to class com.vladsch.flexmark.ast.ListItem (com.vladsch.flexmark.ext.admonition.AdmonitionBlock and com.vladsch.flexmark.ast.ListItem are in unnamed module of loader java.net.URLClassLoader @3498ed)

when the following Markdown source is used:

1. Retrieve the PersistentVolume defined for an application:
    !!! note
        If the STATUS value is not "Bound", then the application does not have access to the required storage.

Possible Solution

flexmark issue?

Steps to Reproduce

Run project dita-ot-bug-prep.zip

Copy of the error message, log file or stack trace

[gen-list] Processing file:/C:/gitworks/dita-ot-bug-prep/test-UA_TM-1720.md

Error: Failed to run pipeline: class com.vladsch.flexmark.ext.admonition.AdmonitionBlock cannot be cast to class com.vladsch.flexmark.ast.ListItem (com.vladsch.flexmark.ext.admonition.AdmonitionBlock and com.vladsch.flexmark.ast.ListItem are in unnamed module of loader java.net.URLClassLoader @3498ed)

Environment

DITA-OT: 4.1.2 LwDITA version: 5.5.0 Operating system and version: Windows 10

Test Method 1 (DITA 4.1.2 from command line)

"C:\Users\kirkilis\Downloads\dita-ot-4.1.2/bin/dita.bat" -v -f pdf2 -o C:\gitworks\dita-ot-bug-prep/out/pdf -t C:\gitworks\dita-ot-bug-prep/temp/pdf -i C:\gitworks\dita-ot-bug-prep\test-UA_TM-1720.ditamap "-Dpdf.formatter=fop"

Test Method 2

Reproduced it in OxygenXML Editor v26.0 in its DITA preview tab:

image

Test Method 3 (Using VS-Code Debugger to see if I could find the root cause)

  1. Downloaded lwdita repo from GitHub (master branch)
  2. Built the project
  3. Added the attached file to the src/test/resources/markdown directory
  4. Referenced the attached file at the beginning of MarkdownReaderTest.java and ran in debugger:

    @ParameterizedTest
    @ValueSource(
            strings = {
               "test-UA_TM-1720.md",
               "abbreviation.md",
               "admonition.md",

    resulted in the following VS-Code stack trace building lwdita 5.5.0 and running MarkdownReaderTest.java in debugger:

java.lang.ClassCastException: class com.vladsch.flexmark.ext.admonition.AdmonitionBlock cannot be cast to class com.vladsch.flexmark.ast.ListItem (com.vladsch.flexmark.ext.admonition.AdmonitionBlock and com.vladsch.flexmark.ast.ListItem are in unnamed module of loader 'app')
 at com.elovirta.dita.markdown.renderer.TopicRenderer.render(TopicRenderer.java:838)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.lambda$52(TopicRenderer.java:235)
 at com.elovirta.dita.markdown.renderer.NodeRenderingHandler.render(NodeRenderingHandler.java:16)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderNode(DitaRenderer.java:258)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderChildren(DitaRenderer.java:275)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.render(TopicRenderer.java:313)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.lambda$28(TopicRenderer.java:206)
 at com.elovirta.dita.markdown.renderer.NodeRenderingHandler.render(NodeRenderingHandler.java:16)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderNode(DitaRenderer.java:258)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderChildren(DitaRenderer.java:275)
 at com.elovirta.dita.markdown.renderer.AbstractRenderer.printTag(AbstractRenderer.java:203)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.render(TopicRenderer.java:796)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.lambda$49(TopicRenderer.java:232)
 at com.elovirta.dita.markdown.renderer.NodeRenderingHandler.render(NodeRenderingHandler.java:16)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderNode(DitaRenderer.java:258)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderChildren(DitaRenderer.java:275)
 at com.elovirta.dita.markdown.renderer.AbstractRenderer.printTag(AbstractRenderer.java:203)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.render(TopicRenderer.java:809)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.lambda$51(TopicRenderer.java:234)
 at com.elovirta.dita.markdown.renderer.NodeRenderingHandler.render(NodeRenderingHandler.java:16)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderNode(DitaRenderer.java:258)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderChildren(DitaRenderer.java:275)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.render(TopicRenderer.java:271)
 at com.elovirta.dita.markdown.renderer.TopicRenderer.lambda$34(TopicRenderer.java:215)
 at com.elovirta.dita.markdown.renderer.NodeRenderingHandler.render(NodeRenderingHandler.java:16)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.renderNode(DitaRenderer.java:242)
 at com.elovirta.dita.markdown.DitaRenderer$MainNodeRenderer.render(DitaRenderer.java:219)
 at com.elovirta.dita.markdown.DitaRenderer.render(DitaRenderer.java:170)
 at com.elovirta.dita.markdown.MarkdownParserImpl.render(MarkdownParserImpl.java:83)
 at com.elovirta.dita.markdown.MarkdownParserImpl.convert(MarkdownParserImpl.java:42)
 at com.elovirta.dita.markdown.MarkdownReader.parse(MarkdownReader.java:258)