Relative `!include` path resolution in Eclipse preview broken
redcatbear opened this issue · comments
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
- Create the following two files inside an Eclipse project:
foo.plantuml
,bar.plantuml
, contents see below. - Open the PlantUML preview: "Window" → "Show View" → "Other..." , Pick view "PlantUML"
- Open
foo.plantuml
with the Eclipse-internal text editor - 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
- Eclipse DE for Java Developers, Version: Oxygen.3a Release (4.7.3a), Build id: 20180405-1200
- PlantUML Feature, Version: 1.1.20
- PlantUML Library Feature, Version: 1.2018.9
- Linux, v.4.18.12-200.fc28.x86_64, x86_64
- gtk 3.22.30
Also tested on Eclipse Photon with the same result.
PlantUML plugin 1.1.19 in contrast worked.
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.
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...
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.
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.
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
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.
I'm about to release, so closing.