You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/08/23 01:07:06 UTC
[groovy] branch master updated: generate uml inline (and make it
pdf compatible)
This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 2c013fd generate uml inline (and make it pdf compatible)
2c013fd is described below
commit 2c013fd6cbdab971d29fe8aac07aef1ea71850e2
Author: Paul King <pa...@asert.com.au>
AuthorDate: Sun Aug 23 11:06:56 2020 +1000
generate uml inline (and make it pdf compatible)
---
gradle/asciidoctor.gradle | 2 +-
src/spec/doc/assets/img/CompositeClasses.gif | Bin 5334 -> 0 bytes
src/spec/doc/assets/img/CompositeComponents.gif | Bin 3930 -> 0 bytes
.../doc/fragment_design-pattern-composite.adoc | 36 +++++++++++++++++++--
4 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/gradle/asciidoctor.gradle b/gradle/asciidoctor.gradle
index 623d841..7959ec7 100644
--- a/gradle/asciidoctor.gradle
+++ b/gradle/asciidoctor.gradle
@@ -77,7 +77,7 @@ asciidoctorj {
}
}
modules {
-// diagram.version('2.0.2')
+ diagram.version('2.0.2')
pdf.version('1.5.3')
}
}
diff --git a/src/spec/doc/assets/img/CompositeClasses.gif b/src/spec/doc/assets/img/CompositeClasses.gif
deleted file mode 100644
index 8ce2c9b..0000000
Binary files a/src/spec/doc/assets/img/CompositeClasses.gif and /dev/null differ
diff --git a/src/spec/doc/assets/img/CompositeComponents.gif b/src/spec/doc/assets/img/CompositeComponents.gif
deleted file mode 100644
index 2611360..0000000
Binary files a/src/spec/doc/assets/img/CompositeComponents.gif and /dev/null differ
diff --git a/src/spec/doc/fragment_design-pattern-composite.adoc b/src/spec/doc/fragment_design-pattern-composite.adoc
index 24e33ca..ca6e259 100644
--- a/src/spec/doc/fragment_design-pattern-composite.adoc
+++ b/src/spec/doc/fragment_design-pattern-composite.adoc
@@ -27,13 +27,45 @@ The https://en.wikipedia.org/wiki/Composite_pattern[Composite Pattern] allows yo
Consider this usage of the composite pattern where we want to call `toString()` on either `Leaf` or `Composite` objects.
-image::assets/img/CompositeClasses.gif[]
+[plantuml, CompositeClasses, png]
+....
+skinparam linetype ortho
+class Component {
+ +toString()
+}
+class Leaf {
+ +toString()
+}
+class Composite {
+ +toString()
+}
+object componentClient
+hide fields
+Composite "1" *-- "*" Component : children
+componentClient ..r..> "uses" Component
+Component <|-- Leaf
+Component <|-- Composite
+....
In Java, the `Component` class is essential as it provides the type used for both leaf and composite nodes. In Groovy, because of duck-typing, we don't need it for that purpose, however, it can still serve as a useful place to place common behaviour between the leaf and composite nodes.
For our purposes, we will assemble the following hierarchy of components.
-image::assets/img/CompositeComponents.gif[]
+[plantuml, CompositeComponents, png]
+....
+object root
+object "leaf A" as leafA
+object "comp B" as compB
+object "leaf C" as leafC
+object "leaf B1" as leafB1
+object "leaf B2" as leafB2
+
+root -- leafA
+root -- compB
+root -- leafC
+compB -- leafB1
+compB -- leafB2
+....
Here is the code: