diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index bd4a9d1fd..9c33edc4f 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -75,6 +75,7 @@ For example `ViewUsage` elements are no longer rendered in _parts_ compartments. - https://github.com/eclipse-syson/syson/issues/1998[#1998] [metamodel] Missing implicit TypeFeaturing. - https://github.com/eclipse-syson/syson/issues/2023[#2023] [diagrans] On diagrams, `ConnectionDefinition` graphical nodes are now correctly labelled as `«connection def»`. - https://github.com/eclipse-syson/syson/issues/2034[#2034] [import] Fix textual import to be able to annotate `Relationships`. +- https://github.com/eclipse-syson/syson/issues/2032[#2032] [export] Fix NPE when exporting `LiteralString`. === Improvements diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/sysml/textual/SysMLElementSerializerTest.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/sysml/textual/SysMLElementSerializerTest.java index 2c0053ad4..7f3d8d123 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/sysml/textual/SysMLElementSerializerTest.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/sysml/textual/SysMLElementSerializerTest.java @@ -1257,6 +1257,9 @@ public void literalString() { literalStr.setValue("value"); this.assertTextualFormEquals("\"value\"", literalStr); + + literalStr.setValue(null); + this.assertTextualFormEquals("\"\"", literalStr); } @Test diff --git a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/textual/SysMLElementSerializer.java b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/textual/SysMLElementSerializer.java index 82a971882..25d7568f0 100644 --- a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/textual/SysMLElementSerializer.java +++ b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/textual/SysMLElementSerializer.java @@ -631,7 +631,9 @@ private String toPreciseReal(double value) { public String caseLiteralString(LiteralString literal) { Appender builder = this.newAppender(); builder.append("\""); - builder.append(literal.getValue().replace("\"", "\\\"")); + if (literal.getValue() != null) { + builder.append(literal.getValue().replace("\"", "\\\"")); + } builder.append("\""); return builder.toString(); } diff --git a/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc b/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc index 26043d5c4..e4708e08b 100644 --- a/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc +++ b/doc/content/modules/user-manual/pages/release-notes/2026.3.0.adoc @@ -84,6 +84,8 @@ package Test { } ``` +** Fix a textual export problem while exporting `LiteralString` with no value. + * In _Explorer_ view: ** Fix an issue where creating a new model using the _Create a new model_ action in the _Explorer_ view was not adding the ".sysml" extension to the model name.