hallvard / plantuml

Embed UML diagrams in files and view them in Eclipse
http://plantuml.sourceforge.net/
209 stars 57 forks source link

Relative `!include` path resolution in Eclipse preview broken #73

Closed redcatbear closed 5 years ago

redcatbear commented 5 years ago

Description

When using the !include directive with relative paths and previewing a UML diagram, instead of the diagram a rendered error message is displayed stating that the file to be included could not be found.

Looking at the error message it is clear that the absolute path is not resolved correctly. It starts with the workspace as root instead of the file systems root.

Steps to reproduce

  1. Create the following two files inside an Eclipse project: foo.plantuml, bar.plantuml, contents see below.
  2. Open the PlantUML preview: "Window" → "Show View" → "Other..." , Pick view "PlantUML"
  3. Open foo.plantuml with the Eclipse-internal text editor
  4. The following PlantUML error message is rendered in the preview view:

    Cannot include /<path inside workspace>/bar.plantuml

File A: foo.plantuml

@startuml
!include bar.plantuml
class "Foo"
@enduml

File B: bar.plantuml

@startuml
class "Bar"
@enduml

Expected Behavior

Relative include paths are resolved to absolute paths starting at the file system root.

Actual Behavior

Relative include paths are resolved to absolute paths starting at the workspace root. Inclusion fails.

Environment

Also tested on Eclipse Photon with the same result. PlantUML plugin 1.1.19 in contrast worked.

hallvard commented 5 years ago

Thank you for a very thorough bug report. I could easily reproduce it. I believe I moved to using relative paths to support the save (and regenerate on build) feature, without considering that the include feature needed the absolute path. The fix was to locate the real file and use its absolute location.

hallvard commented 5 years ago

The strange thing is that it doesn't work with the 1.2018.11 version of the plantuml.jar. I'll have to check if the include logic has changed...

redcatbear commented 5 years ago

Thanks for investigating the issue so quickly and for providing the plug-in as free software. The plugin is very useful and I know a large number of people using it on a daily basis both for open-source and commercial projects.

The include feature is key to using PlantUML as a modelling tool instead of just a drawing tool for UML.

redcatbear commented 5 years ago

I just realized that I see the same error message in AsciiDoctor's PlantUML preview. That seems to support your theory that something changed on the PlantUML-side.

redcatbear commented 5 years ago

In the PlantUML change log of 1.2018.11 there is one mention of changed !include behavior: http://forum.plantuml.net/8108/includes-from-classpath-or-local-zip-file

hallvard commented 5 years ago

Yes, the bug is in plantuml.jar, we debugged it yesterday, and Arnaud found a fix that will be released soon, probably this weekend. I'll try to be quick in releasing the plugin.

hallvard commented 5 years ago

I'm about to release, so closing.