You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/02/21 05:01:43 UTC

[causeway] branch master updated: Bump structurizr-core from 1.19.0 to 1.20.1

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new ac1d1403fa Bump structurizr-core from 1.19.0 to 1.20.1
ac1d1403fa is described below

commit ac1d1403fa6a79028d66de348aea4e4bedf2fee8
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 21 06:01:38 2023 +0100

    Bump structurizr-core from 1.19.0 to 1.20.1
    
    - that is by replacing outdated structurizr-plantuml with
    structurizr-export
---
 tooling/c4modeling/pom.xml                         |  9 +---
 .../java/org/apache/causeway/tooling/c4/C4.java    | 34 +++++++------
 .../apache/causeway/tooling/c4/test/C4Test.java    | 17 ++++---
 .../tooling/c4/test/baeldung-example-v1.puml       | 55 ++++++++++++----------
 .../tooling/c4/test/baeldung-example-v2.puml       | 34 +++++++------
 tooling/pom.xml                                    | 20 +++-----
 6 files changed, 89 insertions(+), 80 deletions(-)

diff --git a/tooling/c4modeling/pom.xml b/tooling/c4modeling/pom.xml
index 671cf1f53d..c528782116 100644
--- a/tooling/c4modeling/pom.xml
+++ b/tooling/c4modeling/pom.xml
@@ -41,13 +41,8 @@
 		</dependency>
 
 		<dependency>
-			<groupId>com.structurizr</groupId>
-			<artifactId>structurizr-core</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.structurizr</groupId>
-			<artifactId>structurizr-plantuml</artifactId>
+		    <groupId>com.structurizr</groupId>
+		    <artifactId>structurizr-export</artifactId>
 		</dependency>
 
 	</dependencies>
diff --git a/tooling/c4modeling/src/main/java/org/apache/causeway/tooling/c4/C4.java b/tooling/c4modeling/src/main/java/org/apache/causeway/tooling/c4/C4.java
index 83a20cb784..5b935d5f4e 100644
--- a/tooling/c4modeling/src/main/java/org/apache/causeway/tooling/c4/C4.java
+++ b/tooling/c4modeling/src/main/java/org/apache/causeway/tooling/c4/C4.java
@@ -21,16 +21,15 @@ package org.apache.causeway.tooling.c4;
 import java.util.Optional;
 
 import com.structurizr.Workspace;
-import com.structurizr.io.plantuml.PlantUMLWriter;
-import com.structurizr.io.plantuml.StructurizrPlantUMLWriter;
+import com.structurizr.export.plantuml.StructurizrPlantUMLExporter;
 import com.structurizr.model.Element;
 import com.structurizr.model.Model;
 import com.structurizr.model.Person;
 import com.structurizr.model.SoftwareSystem;
 import com.structurizr.model.Tags;
+import com.structurizr.view.ContainerView;
 import com.structurizr.view.Shape;
 import com.structurizr.view.SystemContextView;
-import com.structurizr.view.View;
 import com.structurizr.view.ViewSet;
 
 import org.springframework.lang.Nullable;
@@ -47,7 +46,7 @@ import lombok.val;
 public class C4 {
 
     @Getter private final Workspace workspace;
-    private final PlantUMLWriter plantUMLWriter;
+    private final StructurizrPlantUMLExporter plantUMLExporter;
 
     /**
      * Creates a new workspace.
@@ -55,8 +54,8 @@ public class C4 {
      * @param name          the name of the workspace
      * @param description   a short description
      */
-    public static C4 of(@NonNull String name, @Nullable String description) {
-        val plantUMLWriter = new StructurizrPlantUMLWriter();
+    public static C4 of(@NonNull final String name, @Nullable final String description) {
+        val plantUMLWriter = new StructurizrPlantUMLExporter();
         val c4 = new C4(new Workspace(name, _Strings.nullToEmpty(description)), plantUMLWriter);
         c4.applyDefaultStyles();
         return c4;
@@ -81,33 +80,40 @@ public class C4 {
     }
 
     /**
-     * @return a single {@code view} as a PlantUML diagram definition
+     * @return a single {@link ContainerView} as a PlantUML diagram definition
      */
-    public String toPlantUML(View view) {
-        return plantUMLWriter.toString(view);
+    public String toPlantUML(final ContainerView containerView) {
+        return plantUMLExporter.export(containerView).getDefinition();
+    }
+
+    /**
+     * @return a single {@link SystemContextView} as a PlantUML diagram definition
+     */
+    public String toPlantUML(final SystemContextView systemContextView) {
+        return plantUMLExporter.export(systemContextView).getDefinition();
     }
 
     // -- SIMPLE FACTORIES
 
-    public Person person(@NonNull String name, @Nullable String description) {
+    public Person person(@NonNull final String name, @Nullable final String description) {
         return getModel().addPerson(name, _Strings.nullToEmpty(description));
     }
 
-    public SoftwareSystem softwareSystem(@NonNull String name, @Nullable String description) {
+    public SoftwareSystem softwareSystem(@NonNull final String name, @Nullable final String description) {
         return getModel().addSoftwareSystem(name, _Strings.nullToEmpty(description));
     }
 
-    public SystemContextView systemContextView(@NonNull SoftwareSystem softwareSystem, @NonNull String key, @Nullable String description) {
+    public SystemContextView systemContextView(@NonNull final SoftwareSystem softwareSystem, @NonNull final String key, @Nullable final String description) {
         return getViewSet().createSystemContextView(softwareSystem, key, _Strings.nullToEmpty(description));
     }
 
     // -- EXPERIMENTAL
 
-    public static void setTypeOverride(Element element, String typeOverride) {
+    public static void setTypeOverride(final Element element, final String typeOverride) {
         element.addProperty("typeOverride", typeOverride);
     }
 
-    public static Optional<String> getTypeOverride(Element element) {
+    public static Optional<String> getTypeOverride(final Element element) {
         return Optional.ofNullable(element.getProperties().get("typeOverride"));
     }
 
diff --git a/tooling/c4modeling/src/test/java/org/apache/causeway/tooling/c4/test/C4Test.java b/tooling/c4modeling/src/test/java/org/apache/causeway/tooling/c4/test/C4Test.java
index fb9fbfbb2d..691a866f52 100644
--- a/tooling/c4modeling/src/test/java/org/apache/causeway/tooling/c4/test/C4Test.java
+++ b/tooling/c4modeling/src/test/java/org/apache/causeway/tooling/c4/test/C4Test.java
@@ -19,11 +19,10 @@
 package org.apache.causeway.tooling.c4.test;
 
 import java.io.IOException;
-import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
 
 import com.structurizr.Workspace;
-import com.structurizr.io.plantuml.BasicPlantUMLWriter;
+import com.structurizr.export.plantuml.StructurizrPlantUMLExporter;
 import com.structurizr.model.Person;
 import com.structurizr.model.SoftwareSystem;
 import com.structurizr.view.SystemContextView;
@@ -81,13 +80,19 @@ class C4Test {
 
         // Now the view needs to be rendered.
 
-        val stringWriter = new StringWriter();
-        val plantUMLWriter = new BasicPlantUMLWriter();
-        plantUMLWriter.write(workspace, stringWriter);
+        val sb = new StringBuffer();
+        val plantUMLExporter = new StructurizrPlantUMLExporter();
+        plantUMLExporter.export(workspace).forEach(diagram->sb.append(diagram.getDefinition()));
+
+        System.err.println("---");
+        System.err.printf("%s%n", sb.toString());
+        System.err.println("---");
 
         _Text.assertTextEquals(
                 _Text.readLinesFromResource(this.getClass(), "baeldung-example-v1.puml", StandardCharsets.UTF_8),
-                stringWriter.toString());
+                sb.toString());
+
+
     }
 
     /**
diff --git a/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v1.puml b/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v1.puml
index 8cee7c1db9..837f48c5e0 100644
--- a/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v1.puml
+++ b/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v1.puml
@@ -1,34 +1,39 @@
-@startuml(id=context)
+@startuml
+set separator none
 title Payment Terminal - System Context
-caption Payment Gateway Diagram
+
+top to bottom direction
 
 skinparam {
   shadowing false
-  arrowColor #707070
-  actorBorderColor #707070
-  componentBorderColor #707070
-  rectangleBorderColor #707070
-  noteBackgroundColor #ffffff
-  noteBorderColor #707070
+  arrowFontSize 10
   defaultTextAlignment center
   wrapWidth 200
   maxMessageSize 100
 }
-rectangle 1 <<Person>> #dddddd [
-  Merchant
-  --
-  Merchant
-]
-rectangle 4 <<Software System>> #dddddd [
-  Fraud Detector
-  --
-  Fraud Detector
-]
-rectangle 2 <<Software System>> #dddddd [
-  Payment Terminal
-  --
-  Payment Terminal
-]
-1 .[#707070].> 2 : Makes payment
-2 .[#707070].> 4 : Obtains fraud score
+
+hide stereotype
+
+skinparam rectangle<<FraudDetector>> {
+  BackgroundColor #dddddd
+  FontColor #000000
+  BorderColor #9a9a9a
+}
+skinparam rectangle<<Merchant>> {
+  BackgroundColor #dddddd
+  FontColor #000000
+  BorderColor #9a9a9a
+}
+skinparam rectangle<<PaymentTerminal>> {
+  BackgroundColor #dddddd
+  FontColor #000000
+  BorderColor #9a9a9a
+}
+
+rectangle "==Merchant\n<size:10>[Person]</size>\n\nMerchant" <<Merchant>> as Merchant
+rectangle "==Payment Terminal\n<size:10>[Software System]</size>\n\nPayment Terminal" <<PaymentTerminal>> as PaymentTerminal
+rectangle "==Fraud Detector\n<size:10>[Software System]</size>\n\nFraud Detector" <<FraudDetector>> as FraudDetector
+
+Merchant .[#707070,thickness=2].> PaymentTerminal : "<color:#707070>Makes payment"
+PaymentTerminal .[#707070,thickness=2].> FraudDetector : "<color:#707070>Obtains fraud score"
 @enduml
\ No newline at end of file
diff --git a/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v2.puml b/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v2.puml
index 4e5563f83d..2792abe813 100644
--- a/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v2.puml
+++ b/tooling/c4modeling/src/test/resources/org/apache/causeway/tooling/c4/test/baeldung-example-v2.puml
@@ -1,6 +1,8 @@
-@startuml(id=context)
+@startuml
+set separator none
 title Payment Terminal - System Context
-caption Payment Gateway Diagram
+
+top to bottom direction
 
 skinparam {
   shadowing false
@@ -9,25 +11,29 @@ skinparam {
   wrapWidth 200
   maxMessageSize 100
 }
+
 hide stereotype
-skinparam rectangle<<1>> {
-  BackgroundColor #08427b
-  FontColor #ffffff
-  BorderColor #052e56
-}
-skinparam rectangle<<2>> {
+
+skinparam rectangle<<FraudDetector>> {
   BackgroundColor #dddddd
   FontColor #fffffe
   BorderColor #9a9a9a
 }
-skinparam rectangle<<3>> {
+skinparam person<<Merchant>> {
+  BackgroundColor #08427b
+  FontColor #ffffff
+  BorderColor #052e56
+}
+skinparam rectangle<<PaymentTerminal>> {
   BackgroundColor #dddddd
   FontColor #fffffe
   BorderColor #9a9a9a
 }
-rectangle "==Merchant\n<size:10>[Person]</size>\n\nMerchant" <<1>> as 1
-rectangle "==Fraud Detector\n<size:10>[Software System]</size>\n\nFraud Detector" <<3>> as 3
-rectangle "==Payment Terminal\n<size:10>[Software System]</size>\n\nPayment Terminal" <<2>> as 2
-1 .[#707070,thickness=2].> 2 : "Makes payment"
-2 .[#707070,thickness=2].> 3 : "Obtains fraud score"
+
+person "==Merchant\n<size:10>[Person]</size>\n\nMerchant" <<Merchant>> as Merchant
+rectangle "==Payment Terminal\n<size:10>[Software System]</size>\n\nPayment Terminal" <<PaymentTerminal>> as PaymentTerminal
+rectangle "==Fraud Detector\n<size:10>[Software System]</size>\n\nFraud Detector" <<FraudDetector>> as FraudDetector
+
+Merchant .[#707070,thickness=2].> PaymentTerminal : "<color:#707070>Makes payment"
+PaymentTerminal .[#707070,thickness=2].> FraudDetector : "<color:#707070>Obtains fraud score"
 @enduml
\ No newline at end of file
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 43ccc60008..99deba28c4 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -43,11 +43,9 @@
 		<maven-model-builder.version>3.9.0</maven-model-builder.version>
 		<picocli.version>4.7.1</picocli.version>
 		
-		<!-- structurizr-core 1.20+ needs structurizr-plantuml newer than 1.6.3,
-			which is not availabale as of yet (19-feb-2023) -->
-		<structurizr.version>1.19.0</structurizr.version> 
-		<structurizr-plantuml.version>1.6.3</structurizr-plantuml.version>
-
+		<!-- brings in structurizr-core as a transitive dependency -->
+		<structurizr-export.version>1.10.0</structurizr-export.version>
+		
 	</properties>
 
 	<repositories>
@@ -240,15 +238,9 @@
 			</dependency>
 
 			<dependency>
-				<groupId>com.structurizr</groupId>
-				<artifactId>structurizr-core</artifactId>
-				<version>${structurizr.version}</version>
-			</dependency>
-
-			<dependency>
-				<groupId>com.structurizr</groupId>
-				<artifactId>structurizr-plantuml</artifactId>
-				<version>${structurizr-plantuml.version}</version>
+			    <groupId>com.structurizr</groupId>
+			    <artifactId>structurizr-export</artifactId>
+			    <version>${structurizr-export.version}</version>
 			</dependency>
 
 		</dependencies>