Inline PlantUML diagrams (#1180)
@ -1,49 +0,0 @@
|
|||||||
## Working with PlantUML
|
|
||||||
|
|
||||||
If you are unfamiliar with PlantUML, review the [quick start](https://plantuml.com/starting) instructions.
|
|
||||||
|
|
||||||
### Editing
|
|
||||||
|
|
||||||
#### Online
|
|
||||||
|
|
||||||
Use [https://kroki.io/](https://kroki.io/).
|
|
||||||
|
|
||||||
#### IDE
|
|
||||||
|
|
||||||
* Install [Graphviz](https://plantuml.com/graphviz-dot) on your machine.
|
|
||||||
* Get and install the [PlantUML Integration plugin](https://plugins.jetbrains.com/plugin/7017-plantuml-integration) for IntelliJ IDEA:
|
|
||||||
* Set the `GRAPHVIZ_DOT` system or environment property to point to the directory containing the Graphviz executable on your machine.
|
|
||||||
For example, `export GRAPHVIZ_DOT="/usr/local/Cellar/graphviz/2.42.3/bin/dot"`
|
|
||||||
* In the PlantUML plugin Settings (**Settings \| Other Settings \| PlantUML**) set:
|
|
||||||
* The "Additional 'plantuml.include.path'" to be the absolute path to the directory containing the `jb-plantuml-theme.puml` file on your machine.
|
|
||||||
For example, `/<path to sdk root>/buildUML` or, if you have the IntelliJ-Community source code, `/<path to intellij-community root>/platform/docs/`.
|
|
||||||
* The "PlantUML config" to `!include jb-plantuml-theme.puml`
|
|
||||||
|
|
||||||
### Generating SVG
|
|
||||||
|
|
||||||
> Temporary workflow until embedding inside Markdown sources is available.
|
|
||||||
|
|
||||||
#### IDE
|
|
||||||
|
|
||||||
When a `*.puml` file is open in the IDE editor, the PlantUML Integration plugin will show a preview.
|
|
||||||
To save a diagram in SVG format, change the file extension from the default PNG to SVG when saving the diagram from the preview window.
|
|
||||||
|
|
||||||
#### Online
|
|
||||||
|
|
||||||
Use [https://kroki.io/](https://kroki.io/) to generate SVG files by pasting:
|
|
||||||
|
|
||||||
```
|
|
||||||
@startuml
|
|
||||||
|
|
||||||
[contents of jb-plantuml-theme.puml]
|
|
||||||
|
|
||||||
[contents of your_diagram.puml (without `@startuml`)]
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
```
|
|
||||||
|
|
||||||
and then c/p generated SVG output.
|
|
||||||
|
|
||||||
### Post Process
|
|
||||||
|
|
||||||
In SVG file `<defs>`, insert `<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>` tag.
|
|
@ -1,53 +0,0 @@
|
|||||||
@startuml
|
|
||||||
:getService;
|
|
||||||
note right
|
|
||||||
In any thread.
|
|
||||||
Get on demand only.
|
|
||||||
Do not cache result.
|
|
||||||
Do not request in constructor unless needed.
|
|
||||||
end note
|
|
||||||
|
|
||||||
if (Is Light Service) then (yes)
|
|
||||||
else (no)
|
|
||||||
if (Is Service Declaration Found) then (yes)
|
|
||||||
else (no)
|
|
||||||
:Return ""null"";
|
|
||||||
detach
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if (Is Created and Initialized?) then (yes)
|
|
||||||
else (no)
|
|
||||||
if (Is Container Active?) then (active)
|
|
||||||
partition "synchronized on service class" {
|
|
||||||
if (Is Created and Initialized?) then (yes)
|
|
||||||
else (no)
|
|
||||||
if (Is Initializing?) then (yes)
|
|
||||||
:Throw ""PluginException""
|
|
||||||
Cyclic Service Initialization;
|
|
||||||
detach
|
|
||||||
else (no)
|
|
||||||
partition "non cancelable" {
|
|
||||||
:Create Instance]
|
|
||||||
note right
|
|
||||||
Avoid getting other services to reduce initialization tree.
|
|
||||||
As less dependencies, as more faster and reliable.
|
|
||||||
end note
|
|
||||||
|
|
||||||
:Register to be Disposed on Container Dispose
|
|
||||||
if Implements ""Disposable""]
|
|
||||||
:Load Persistent State
|
|
||||||
if Implements ""PersistentStateComponent""]
|
|
||||||
}
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
}
|
|
||||||
else (disposed or dispose in progress)
|
|
||||||
:Throw ""ProcessCanceledException"";
|
|
||||||
detach
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
:Return Instance;
|
|
||||||
|
|
||||||
@enduml
|
|
@ -1,15 +0,0 @@
|
|||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
:Subscriber:
|
|
||||||
(Create connection) as (C)
|
|
||||||
note top of (C): Necessary for subscribing
|
|
||||||
Subscriber --> C
|
|
||||||
|
|
||||||
:Publisher:
|
|
||||||
(Publish)
|
|
||||||
Publisher --> Publish
|
|
||||||
|
|
||||||
@enduml
|
|
@ -1,17 +0,0 @@
|
|||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class MessageBus
|
|
||||||
class MessageBusConnection
|
|
||||||
class "Default Handler" as DH
|
|
||||||
class "(Topic-Handler)" as TH
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
MessageBus "1" o-- "*" MessageBusConnection
|
|
||||||
MessageBusConnection o-- "0..1" DH
|
|
||||||
MessageBusConnection *-- "*" TH
|
|
||||||
@enduml
|
|
@ -1,21 +0,0 @@
|
|||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "bus" as B
|
|
||||||
|
|
||||||
class "connection1" as C1
|
|
||||||
class "connection2" as C2
|
|
||||||
|
|
||||||
class "topic-handler1" as TH1
|
|
||||||
class "topic-handler2" as TH2
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
B *-- C1
|
|
||||||
B *-- C2
|
|
||||||
|
|
||||||
C1 *-- TH1
|
|
||||||
C2 *-- TH2
|
|
||||||
@enduml
|
|
@ -1,28 +0,0 @@
|
|||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "connection1" as C1
|
|
||||||
|
|
||||||
class "connection2" as C2
|
|
||||||
class "connection3" as C3
|
|
||||||
class "topic1-handler1" as T1H1
|
|
||||||
|
|
||||||
class "topic1-handler2" as T1H2
|
|
||||||
class "topic1-handler3" as T1H3
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
AB o-- PB
|
|
||||||
AB *-- C1
|
|
||||||
|
|
||||||
PB *-- C2
|
|
||||||
PB *-- C3
|
|
||||||
C1 *-- T1H1
|
|
||||||
|
|
||||||
C2 *-- T1H2
|
|
||||||
C3 *-- T1H3
|
|
||||||
@enduml
|
|
@ -1,10 +0,0 @@
|
|||||||
@startuml
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the activity
|
|
||||||
(*) --> "Get message\nbus reference"
|
|
||||||
--> "Ask the bus\nfor a particular\ntopic's publisher"
|
|
||||||
--> "Call target\nmethod on\npublisher"
|
|
||||||
--> "Messaging\ncalls the\nsame method\non target\nhandlers"
|
|
||||||
--> (*)
|
|
||||||
@enduml
|
|
@ -1,14 +0,0 @@
|
|||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "module bus" as MB
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
AB o-- "*" PB
|
|
||||||
PB o-- "*" MB
|
|
||||||
@enduml
|
|
@ -1,13 +0,0 @@
|
|||||||
@startuml
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the activity
|
|
||||||
(*) --> if "" then
|
|
||||||
--> [don't have connection] "Get message\nbus reference"
|
|
||||||
--> "Create connection\nto the bus"
|
|
||||||
--> "Subscribe"
|
|
||||||
else
|
|
||||||
--> [have connection] "Subscribe"
|
|
||||||
endif
|
|
||||||
--> (*)
|
|
||||||
@enduml
|
|
@ -1,20 +0,0 @@
|
|||||||
@startuml
|
|
||||||
skinparam classAttributeIconSize 0
|
|
||||||
hide empty fields
|
|
||||||
hide empty methods
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "com.intellij.util.messages.Topic" as Topic {
|
|
||||||
+getDisplayName()
|
|
||||||
+getBroadcastDirection()
|
|
||||||
}
|
|
||||||
class ListenerClass {
|
|
||||||
+method1()
|
|
||||||
{method} ...
|
|
||||||
+methodN()
|
|
||||||
}
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
Topic o--> "1 " ListenerClass
|
|
||||||
@enduml
|
|
@ -1,25 +0,0 @@
|
|||||||
@startuml
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
class "parent DataNode" as parent
|
|
||||||
class DataNode
|
|
||||||
together {
|
|
||||||
class "child n DataNode" as child3
|
|
||||||
class "..." as child2
|
|
||||||
class "child 1 DataNode" as child1
|
|
||||||
class Key
|
|
||||||
class ExternalEntityData
|
|
||||||
}
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
parent -- DataNode
|
|
||||||
|
|
||||||
ExternalEntityData --o DataNode
|
|
||||||
Key --o DataNode
|
|
||||||
DataNode -- child1
|
|
||||||
DataNode -- child2
|
|
||||||
DataNode -- child3
|
|
||||||
|
|
||||||
@enduml
|
|
@ -1,17 +0,0 @@
|
|||||||
@startuml
|
|
||||||
|
|
||||||
rectangle "DataNode<ProjectData>" as root
|
|
||||||
rectangle "DataNode<ModuleData>" as child1
|
|
||||||
rectangle "DataNode<LibraryData>\n(JUnit)" as child2
|
|
||||||
rectangle "DataNode<ContentRootData>" as child11
|
|
||||||
rectangle "DataNode<LibraryDependencyData>\n(JUnit)" as child12
|
|
||||||
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
root -- child1
|
|
||||||
root -- child2
|
|
||||||
|
|
||||||
child1 -- child11
|
|
||||||
child1 -- child12
|
|
||||||
|
|
||||||
@enduml
|
|
@ -1,35 +0,0 @@
|
|||||||
@startuml
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
package Configuration <<Rectangle>> {
|
|
||||||
interface RunProfile
|
|
||||||
interface RunConfiguration
|
|
||||||
interface RunProfileState
|
|
||||||
}
|
|
||||||
|
|
||||||
package Execution <<Rectangle>> {
|
|
||||||
abstract class Executor
|
|
||||||
interface ProgramRunner
|
|
||||||
class ExecutionEnvironment
|
|
||||||
class RunContentBuilder
|
|
||||||
abstract class ExecutionResult
|
|
||||||
interface ExecutionConsole
|
|
||||||
abstract class ProcessHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
RunProfile <|.. RunConfiguration
|
|
||||||
RunProfile --> RunProfileState: creates
|
|
||||||
|
|
||||||
RunProfileState --> ExecutionResult: prepares
|
|
||||||
|
|
||||||
ExecutionResult o-- "1" ExecutionConsole
|
|
||||||
ExecutionResult o-- "1" ProcessHandler
|
|
||||||
|
|
||||||
ProgramRunner --> RunProfile: executes
|
|
||||||
ProgramRunner --> Executor
|
|
||||||
ProgramRunner --> ExecutionEnvironment
|
|
||||||
ProgramRunner -r-> RunContentBuilder
|
|
||||||
|
|
||||||
@enduml
|
|
@ -1,18 +0,0 @@
|
|||||||
@startuml
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
interface RunProfile
|
|
||||||
interface ConfigurationType
|
|
||||||
abstract class ConfigurationFactory
|
|
||||||
interface RunConfiguration
|
|
||||||
abstract class SettingsEditor
|
|
||||||
|
|
||||||
|
|
||||||
ConfigurationType *-- "*" ConfigurationFactory
|
|
||||||
ConfigurationFactory --> RunConfiguration: creates
|
|
||||||
RunConfiguration o-- "0..*" SettingsEditor
|
|
||||||
RunConfiguration -l|> RunProfile
|
|
||||||
|
|
||||||
@enduml
|
|
Before Width: | Height: | Size: 22 KiB |
@ -1,106 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="219px" preserveAspectRatio="none" style="width:555px;height:219px;background:#FFFFFF;" version="1.1" viewBox="0 0 555 219" width="555px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs>
|
|
||||||
<filter height="300%" id="f1reakk33qyecd" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[20281f4ff4cf8314bac235a1b18d3554]
|
|
||||||
class child3--><g id="elem_child3"><rect codeLine="25" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="child3" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="113" x="430.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="433.5" y="199.9999">child n DataNode</text></g><!--MD5=[46fc6f69eac59e78e2f3a9ee2b61ddb4]
|
|
||||||
class child2--><g id="elem_child2"><rect codeLine="26" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="child2" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="18" x="377" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="12" x="380" y="199.9999">...</text></g><!--MD5=[0de898fe6e62f2649c11379ac1939bff]
|
|
||||||
class child1--><g id="elem_child1"><rect codeLine="27" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="child1" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="113" x="228.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="231.5" y="199.9999">child 1 DataNode</text></g><!--MD5=[2086e18d236f9616263f91fe5276f8cf]
|
|
||||||
class Key--><g id="elem_Key"><rect codeLine="28" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="Key" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="29" x="164.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="23" x="167.5" y="199.9999">Key</text></g><!--MD5=[9897386af1ed058ef323e991bacee085]
|
|
||||||
class ExternalEntityData--><g id="elem_ExternalEntityData"><rect codeLine="29" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="ExternalEntityData" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="122" x="7" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="10" y="199.9999">ExternalEntityData</text></g><!--MD5=[2c987cbfcba91e56c1bc3dde7ea5e5d7]
|
|
||||||
class parent--><g id="elem_parent"><rect codeLine="22" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="parent" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="112" x="229" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="232" y="25.9999">parent DataNode</text></g><!--MD5=[1be1ed30a99d2917b9277309d78aa8b6]
|
|
||||||
class DataNode--><g id="elem_DataNode"><rect codeLine="23" fill="#F1F1F1" filter="url(#f1reakk33qyecd)" height="26.7999" id="DataNode" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="68" x="251" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="254" y="112.9999">DataNode</text></g><!--MD5=[e9d289148971afe54d9804cdf9aa0349]
|
|
||||||
link parent to DataNode--><g id="link_parent_DataNode"><path codeLine="33" d="M285,34.04 C285,50.11 285,77.81 285,93.91 " fill="none" id="parent-DataNode" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[09c8c8e79535da871b4995663c58175a]
|
|
||||||
link ExternalEntityData to DataNode--><g id="link_ExternalEntityData_DataNode"><path codeLine="35" d="M93.7,180.87 C109.02,173.54 128.94,164.33 147,157 C177.03,144.82 211.41,132.73 238.35,123.67 " fill="none" id="ExternalEntityData-to-DataNode" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="250.92,119.47,243.9623,117.5751,239.5371,123.2687,246.4948,125.1636,250.92,119.47" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[06a573aea8f804b67df62ca7c6895970]
|
|
||||||
link Key to DataNode--><g id="link_Key_DataNode"><path codeLine="36" d="M188.62,180.9 C194.61,173.49 202.73,164.19 211,157 C223.25,146.35 237.99,136.23 251.08,128.02 " fill="none" id="Key-to-DataNode" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="262.52,121.05,255.3147,120.7599,252.2757,127.2994,259.481,127.5895,262.52,121.05" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[f563d54bf1c03184d3f0399078057fa3]
|
|
||||||
link DataNode to child1--><g id="link_DataNode_child1"><path codeLine="37" d="M285,121.04 C285,137.11 285,164.81 285,180.91 " fill="none" id="DataNode-child1" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[35b66e17162c177771cf80d95f61b1c0]
|
|
||||||
link DataNode to child2--><g id="link_DataNode_child2"><path codeLine="38" d="M308.53,121.02 C323.88,129.86 343.82,142.65 359,157 C366.45,164.04 373.29,173.34 378.23,180.79 " fill="none" id="DataNode-child2" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[7e5eb2378c1f2596212150ee70baa567]
|
|
||||||
link DataNode to child3--><g id="link_DataNode_child3"><path codeLine="39" d="M319.04,120.39 C345.04,129.71 381.62,143.35 413,157 C429.95,164.37 448.6,173.58 462.95,180.91 " fill="none" id="DataNode-child3" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[d7fcb4a48415f31e4950d39bdb50a6f7]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
class "parent DataNode" as parent
|
|
||||||
class DataNode
|
|
||||||
together {
|
|
||||||
class "child n DataNode" as child3
|
|
||||||
class "..." as child2
|
|
||||||
class "child 1 DataNode" as child1
|
|
||||||
class Key
|
|
||||||
class ExternalEntityData
|
|
||||||
}
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
parent - - DataNode
|
|
||||||
|
|
||||||
ExternalEntityData - -o DataNode
|
|
||||||
Key - -o DataNode
|
|
||||||
DataNode - - child1
|
|
||||||
DataNode - - child2
|
|
||||||
DataNode - - child3
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
class "parent DataNode" as parent
|
|
||||||
class DataNode
|
|
||||||
together {
|
|
||||||
class "child n DataNode" as child3
|
|
||||||
class "..." as child2
|
|
||||||
class "child 1 DataNode" as child1
|
|
||||||
class Key
|
|
||||||
class ExternalEntityData
|
|
||||||
}
|
|
||||||
|
|
||||||
parent - - DataNode
|
|
||||||
|
|
||||||
ExternalEntityData - -o DataNode
|
|
||||||
Key - -o DataNode
|
|
||||||
DataNode - - child1
|
|
||||||
DataNode - - child2
|
|
||||||
DataNode - - child3
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2022.5(Sat Apr 30 10:55:52 GMT 2022)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 7.6 KiB |
@ -1,94 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="283px" preserveAspectRatio="none" style="width:546px;height:283px;background:#FFFFFF;" version="1.1" viewBox="0 0 546 283" width="546px" zoomAndPan="magnify"><defs><filter height="300%" id="fsdhu5i4soq0i" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[eab4eb7d0ef44c19c3b4c8ba4c3c2b5b]
|
|
||||||
entity root--><g id="elem_root"><rect fill="#F1F1F1" filter="url(#fsdhu5i4soq0i)" height="36.7999" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="170" x="259" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="269" y="30.9999">DataNode<ProjectData></text></g><!--MD5=[f32a4b6a4d1d5c806d2577c2ad48a88e]
|
|
||||||
entity child1--><g id="elem_child1"><rect fill="#F1F1F1" filter="url(#fsdhu5i4soq0i)" height="36.7999" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="173" x="153.5" y="112.5"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="163.5" y="136.4999">DataNode<ModuleData></text></g><!--MD5=[02fd969630d4b64c191f6d0a7ed5a485]
|
|
||||||
entity child2--><g id="elem_child2"><rect fill="#F1F1F1" filter="url(#fsdhu5i4soq0i)" height="53.5999" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="172" x="362" y="104"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="152" x="372" y="127.9999">DataNode<LibraryData></text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="42" x="427" y="144.7999">(JUnit)</text></g><!--MD5=[54c46b283c7ca20ea3c249028a9b3f95]
|
|
||||||
entity child11--><g id="elem_child11"><rect fill="#F1F1F1" filter="url(#fsdhu5i4soq0i)" height="36.7999" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="204" x="7" y="226.5"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="184" x="17" y="250.4999">DataNode<ContentRootData></text></g><!--MD5=[0dfbb752575ab26f937634ee3148eb9e]
|
|
||||||
entity child12--><g id="elem_child12"><rect fill="#F1F1F1" filter="url(#fsdhu5i4soq0i)" height="53.5999" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="249" x="246.5" y="218"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="229" x="256.5" y="241.9999">DataNode<LibraryDependencyData></text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="42" x="350" y="258.7999">(JUnit)</text></g><!--MD5=[5894e04d7cc0064eb788526fae14705a]
|
|
||||||
link root to child1--><g id="link_root_child1"><path d="M326.36,44.06 C307.23,63.09 276.89,93.29 257.73,112.36 " fill="none" id="root-child1" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[f9bbf2572ec6961009bd9430f880bc86]
|
|
||||||
link root to child2--><g id="link_root_child2"><path d="M361.64,44.06 C378.1,60.44 402.87,85.09 421.67,103.79 " fill="none" id="root-child2" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[258b65d2fddd9c03ec1a2ec6ad67758f]
|
|
||||||
link child1 to child11--><g id="link_child1_child11"><path d="M219.24,149.75 C194.71,170.72 154.15,205.4 129.66,226.34 " fill="none" id="child1-child11" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[de3a2a2fac82bc1e93dbf12e56c391fd]
|
|
||||||
link child1 to child12--><g id="link_child1_child12"><path d="M260.76,149.75 C282.11,168 315.62,196.65 340.09,217.58 " fill="none" id="child1-child12" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[20f64962a505128427966189411259b6]
|
|
||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName Roboto,sans-serif
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rectangle "DataNode<ProjectData>" as root
|
|
||||||
rectangle "DataNode<ModuleData>" as child1
|
|
||||||
rectangle "DataNode<LibraryData>\n(JUnit)" as child2
|
|
||||||
rectangle "DataNode<ContentRootData>" as child11
|
|
||||||
rectangle "DataNode<LibraryDependencyData>\n(JUnit)" as child12
|
|
||||||
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
root - - child1
|
|
||||||
root - - child2
|
|
||||||
|
|
||||||
child1 - - child11
|
|
||||||
child1 - - child12
|
|
||||||
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName Roboto,sans-serif
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rectangle "DataNode<ProjectData>" as root
|
|
||||||
rectangle "DataNode<ModuleData>" as child1
|
|
||||||
rectangle "DataNode<LibraryData>\n(JUnit)" as child2
|
|
||||||
rectangle "DataNode<ContentRootData>" as child11
|
|
||||||
rectangle "DataNode<LibraryDependencyData>\n(JUnit)" as child12
|
|
||||||
|
|
||||||
|
|
||||||
root - - child1
|
|
||||||
root - - child2
|
|
||||||
|
|
||||||
child1 - - child11
|
|
||||||
child1 - - child12
|
|
||||||
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2022.5(Sat Apr 30 10:55:52 GMT 2022)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.2 KiB |
@ -1,86 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="194px" preserveAspectRatio="none" style="width:411px;height:194px;background:#FFFFFF;" version="1.1" viewBox="0 0 411 194" width="411px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="fvc6xfsi3zb5w" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[dffc2048202062908f47a53e24d356df]
|
|
||||||
entity Subscriber--><ellipse cx="39.5" cy="14" fill="#F8F8F8" filter="url(#fvc6xfsi3zb5w)" rx="8" ry="8" style="stroke:#383838;stroke-width:1.5;"/><path d="M39.5,22 L39.5,49 M26.5,30 L52.5,30 M39.5,49 L26.5,64 M39.5,49 L52.5,64 " fill="none" filter="url(#fvc6xfsi3zb5w)" style="stroke:#383838;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="6" y="83.4999">Subscriber</text><ellipse cx="119.473" cy="164.3946" fill="#F8F8F8" filter="url(#fvc6xfsi3zb5w)" rx="77.473" ry="17.8946" style="stroke:#383838;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="111" x="63.973" y="167.9946">Create connection</text><path d="M108.5,32 L108.5,58.7999 A0,0 0 0 0 108.5,58.7999 L186.94,58.7999 L131.08,146.56 L194.94,58.7999 L290.5,58.7999 A0,0 0 0 0 290.5,58.7999 L290.5,42 L280.5,32 L108.5,32 A0,0 0 0 0 108.5,32 " fill="#EBEBEB" filter="url(#fvc6xfsi3zb5w)" style="stroke:#383838;stroke-width:1.0;"/><path d="M280.5,32 L280.5,42 L290.5,42 L280.5,32 " fill="#EBEBEB" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="114.5" y="50.9999">Necessary for subscribing</text><!--MD5=[b9060e1352b009711fbb9730f967b58f]
|
|
||||||
entity Publisher--><ellipse cx="355.5" cy="14" fill="#F8F8F8" filter="url(#fvc6xfsi3zb5w)" rx="8" ry="8" style="stroke:#383838;stroke-width:1.5;"/><path d="M355.5,22 L355.5,49 M342.5,30 L368.5,30 M355.5,49 L342.5,64 M355.5,49 L368.5,64 " fill="none" filter="url(#fvc6xfsi3zb5w)" style="stroke:#383838;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="326.5" y="83.4999">Publisher</text><ellipse cx="355.5122" cy="164.3793" fill="#F8F8F8" filter="url(#fvc6xfsi3zb5w)" rx="44.0122" ry="14.8793" style="stroke:#383838;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="332.5122" y="167.9793">Publish</text><!--MD5=[988ff2512affc8e23f4557d46ed84e0a]
|
|
||||||
link Subscriber to C--><path d="M67.03,86.76 C79.84,105.5 94.54,127 105.12,142.47 " fill="none" id="Subscriber-to-C" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="107.99,146.66,106.2259,136.9704,105.1738,142.5286,99.6156,141.4764,107.99,146.66" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[95e659a114b4b9803e478504399e5690]
|
|
||||||
link Publisher to Publish--><path d="M355.5,86.76 C355.5,106.24 355.5,128.72 355.5,144.29 " fill="none" id="Publisher-to-Publish" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="355.5,149.29,359.5,140.29,355.5,144.29,351.5,140.29,355.5,149.29" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[bff15157785802e153b11866fd708f05]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
:Subscriber:
|
|
||||||
(Create connection) as (C)
|
|
||||||
note top of (C): Necessary for subscribing
|
|
||||||
Subscriber - -> C
|
|
||||||
|
|
||||||
:Publisher:
|
|
||||||
(Publish)
|
|
||||||
Publisher - -> Publish
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
:Subscriber:
|
|
||||||
(Create connection) as (C)
|
|
||||||
note top of (C): Necessary for subscribing
|
|
||||||
Subscriber - -> C
|
|
||||||
|
|
||||||
:Publisher:
|
|
||||||
(Publish)
|
|
||||||
Publisher - -> Publish
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 5.3 KiB |
@ -1,83 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="221px" preserveAspectRatio="none" style="width:263px;height:221px;background:#FFFFFF;" version="1.1" viewBox="0 0 263 221" width="263px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="f1jygd9iog27t8" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[62ac8497b13c043b65381b6f7663a459]
|
|
||||||
class MessageBus--><rect codeLine="25" fill="#F8F8F8" filter="url(#f1jygd9iog27t8)" height="26.7999" id="MessageBus" style="stroke:#383838;stroke-width:1.5;" width="86" x="84.5" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="87.5" y="25.9999">MessageBus</text><!--MD5=[5ec082c23ec24c6da48a0a09ba33c2f9]
|
|
||||||
class MessageBusConnection--><rect codeLine="26" fill="#F8F8F8" filter="url(#f1jygd9iog27t8)" height="26.7999" id="MessageBusConnection" style="stroke:#383838;stroke-width:1.5;" width="155" x="50" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="149" x="53" y="112.9999">MessageBusConnection</text><!--MD5=[8877a16d0f905795619db580f65f8005]
|
|
||||||
class DH--><rect codeLine="27" fill="#F8F8F8" filter="url(#f1jygd9iog27t8)" height="26.7999" id="DH" style="stroke:#383838;stroke-width:1.5;" width="103" x="7" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="10" y="199.9999">Default Handler</text><!--MD5=[6248ca3ba3593139a1835033a2c878c3]
|
|
||||||
class TH--><rect codeLine="28" fill="#F8F8F8" filter="url(#f1jygd9iog27t8)" height="26.7999" id="TH" style="stroke:#383838;stroke-width:1.5;" width="104" x="145.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="148.5" y="199.9999">(Topic-Handler)</text><!--MD5=[2f9b0f036ad36751351f32062502d1bf]
|
|
||||||
reverse link MessageBus to MessageBusConnection--><path codeLine="31" d="M127.5,47.43 C127.5,62.85 127.5,81.71 127.5,93.91 " fill="none" id="MessageBus-backto-MessageBusConnection" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="127.5,34.04,123.5,40.04,127.5,46.04,131.5,40.04,127.5,34.04" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="118.075" y="55.8917">1</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="5" x="121.4688" y="83.2103">*</text><!--MD5=[694b0ba889badc6ddf35d27abf73e2bf]
|
|
||||||
reverse link MessageBusConnection to DH--><path codeLine="32" d="M109.11,131.16 C96.17,147.09 79.34,167.83 68.72,180.91 " fill="none" id="MessageBusConnection-backto-DH" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="117.32,121.04,110.4346,123.1828,109.7643,130.3626,116.6497,128.2199,117.32,121.04" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="24" x="43.9857" y="170.2103">0..1</text><!--MD5=[a5132fa3e16fbe2ae7d5791cc22442e3]
|
|
||||||
reverse link MessageBusConnection to TH--><path codeLine="33" d="M146.16,131.16 C159.28,147.09 176.36,167.83 187.13,180.91 " fill="none" id="MessageBusConnection-backto-TH" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="137.83,121.04,138.5569,128.2144,145.4589,130.3028,144.7321,123.1284,137.83,121.04" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="5" x="176.8211" y="170.2103">*</text><!--MD5=[8c6aa1d211e20a9e0d6f9a28df7f0b4e]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class MessageBus
|
|
||||||
class MessageBusConnection
|
|
||||||
class "Default Handler" as DH
|
|
||||||
class "(Topic-Handler)" as TH
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
MessageBus "1" o- - "*" MessageBusConnection
|
|
||||||
MessageBusConnection o- - "0..1" DH
|
|
||||||
MessageBusConnection *- - "*" TH
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
|
|
||||||
class MessageBus
|
|
||||||
class MessageBusConnection
|
|
||||||
class "Default Handler" as DH
|
|
||||||
class "(Topic-Handler)" as TH
|
|
||||||
|
|
||||||
MessageBus "1" o- - "*" MessageBusConnection
|
|
||||||
MessageBusConnection o- - "0..1" DH
|
|
||||||
MessageBusConnection *- - "*" TH
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 5.8 KiB |
@ -1,93 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="221px" preserveAspectRatio="none" style="width:246px;height:221px;background:#FFFFFF;" version="1.1" viewBox="0 0 246 221" width="246px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="f1owehh97nz08l" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[69c451c751c414e37549b782190fef46]
|
|
||||||
class B--><rect codeLine="24" fill="#F8F8F8" filter="url(#f1owehh97nz08l)" height="26.7999" id="B" style="stroke:#383838;stroke-width:1.5;" width="29" x="105" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="23" x="108" y="25.9999">bus</text><!--MD5=[926f502e143d9ea62a9e3ce25d7b4f6f]
|
|
||||||
class C1--><rect codeLine="26" fill="#F8F8F8" filter="url(#f1owehh97nz08l)" height="26.7999" id="C1" style="stroke:#383838;stroke-width:1.5;" width="80" x="18.5" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="21.5" y="112.9999">connection1</text><!--MD5=[7a6ae922897b32380e18008d17b1b0ef]
|
|
||||||
class C2--><rect codeLine="27" fill="#F8F8F8" filter="url(#f1owehh97nz08l)" height="26.7999" id="C2" style="stroke:#383838;stroke-width:1.5;" width="80" x="140.5" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="143.5" y="112.9999">connection2</text><!--MD5=[ff7477c05a4730a20b075d2da276f30b]
|
|
||||||
class TH1--><rect codeLine="29" fill="#F8F8F8" filter="url(#f1owehh97nz08l)" height="26.7999" id="TH1" style="stroke:#383838;stroke-width:1.5;" width="95" x="7" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="89" x="10" y="199.9999">topic-handler1</text><!--MD5=[4c45aca55c8e2764fd8117a16b309977]
|
|
||||||
class TH2--><rect codeLine="30" fill="#F8F8F8" filter="url(#f1owehh97nz08l)" height="26.7999" id="TH2" style="stroke:#383838;stroke-width:1.5;" width="95" x="137" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="89" x="140" y="199.9999">topic-handler2</text><!--MD5=[5abb68ef7a7f90cc1b51845dea6e069f]
|
|
||||||
reverse link B to C1--><path codeLine="33" d="M102.91,44.62 C91.52,60.49 76.83,80.95 67.54,93.91 " fill="none" id="B-backto-C1" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="110.5,34.04,103.7521,36.5828,103.504,43.7896,110.2519,41.2468,110.5,34.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[0ee95caecf4a1a8ef3cc171bfc43413c]
|
|
||||||
reverse link B to C2--><path codeLine="34" d="M136.09,44.62 C147.48,60.49 162.17,80.95 171.46,93.91 " fill="none" id="B-backto-C2" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="128.5,34.04,128.7481,41.2468,135.496,43.7896,135.2479,36.5828,128.5,34.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[5d46ac34b92e80d9aff51a38fec452c6]
|
|
||||||
reverse link C1 to TH1--><path codeLine="36" d="M57.28,134.43 C56.55,149.85 55.67,168.71 55.09,180.91 " fill="none" id="C1-backto-TH1" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="57.91,121.04,53.631,126.8443,57.343,133.0266,61.622,127.2223,57.91,121.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[451bd3fd46f9c7411704c3f16b961f36]
|
|
||||||
reverse link C2 to TH2--><path codeLine="37" d="M181.72,134.43 C182.45,149.85 183.33,168.71 183.91,180.91 " fill="none" id="C2-backto-TH2" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="181.09,121.04,177.378,127.2223,181.657,133.0266,185.369,126.8443,181.09,121.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[b954dd52c85767d8abc4f374c9e5634b]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "bus" as B
|
|
||||||
|
|
||||||
class "connection1" as C1
|
|
||||||
class "connection2" as C2
|
|
||||||
|
|
||||||
class "topic-handler1" as TH1
|
|
||||||
class "topic-handler2" as TH2
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
B *- - C1
|
|
||||||
B *- - C2
|
|
||||||
|
|
||||||
C1 *- - TH1
|
|
||||||
C2 *- - TH2
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
class "bus" as B
|
|
||||||
|
|
||||||
class "connection1" as C1
|
|
||||||
class "connection2" as C2
|
|
||||||
|
|
||||||
class "topic-handler1" as TH1
|
|
||||||
class "topic-handler2" as TH2
|
|
||||||
|
|
||||||
B *- - C1
|
|
||||||
B *- - C2
|
|
||||||
|
|
||||||
C1 *- - TH1
|
|
||||||
C2 *- - TH2
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 5.7 KiB |
@ -1,111 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="308px" preserveAspectRatio="none" style="width:383px;height:308px;background:#FFFFFF;" version="1.1" viewBox="0 0 383 308" width="383px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="fgin6xmzl3pa7" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[cd07344a80c53f6735430047176be71f]
|
|
||||||
class AB--><rect codeLine="23" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="AB" style="stroke:#383838;stroke-width:1.5;" width="100" x="196.5" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="199.5" y="25.9999">application bus</text><!--MD5=[562978db86ac36b29d57db113b203393]
|
|
||||||
class PB--><rect codeLine="24" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="PB" style="stroke:#383838;stroke-width:1.5;" width="74" x="153.5" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="156.5" y="112.9999">project bus</text><!--MD5=[926f502e143d9ea62a9e3ce25d7b4f6f]
|
|
||||||
class C1--><rect codeLine="25" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="C1" style="stroke:#383838;stroke-width:1.5;" width="80" x="269.5" y="94"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="272.5" y="112.9999">connection1</text><!--MD5=[7a6ae922897b32380e18008d17b1b0ef]
|
|
||||||
class C2--><rect codeLine="27" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="C2" style="stroke:#383838;stroke-width:1.5;" width="80" x="29.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="32.5" y="199.9999">connection2</text><!--MD5=[bea21b96b087d2a6cd694f21a9e60e60]
|
|
||||||
class C3--><rect codeLine="28" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="C3" style="stroke:#383838;stroke-width:1.5;" width="80" x="150.5" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="153.5" y="199.9999">connection3</text><!--MD5=[3119829b56730b205615da85fbee2fd5]
|
|
||||||
class T1H1--><rect codeLine="29" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="T1H1" style="stroke:#383838;stroke-width:1.5;" width="103" x="266" y="181"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="269" y="199.9999">topic1-handler1</text><!--MD5=[cbe9cf75be102b01d481a458d073720d]
|
|
||||||
class T1H2--><rect codeLine="31" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="T1H2" style="stroke:#383838;stroke-width:1.5;" width="103" x="7" y="268"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="10" y="286.9999">topic1-handler2</text><!--MD5=[6d68aa1aef529b2011d6536b7dc28f2e]
|
|
||||||
class T1H3--><rect codeLine="32" fill="#F8F8F8" filter="url(#fgin6xmzl3pa7)" height="26.7999" id="T1H3" style="stroke:#383838;stroke-width:1.5;" width="103" x="145" y="268"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="148" y="286.9999">topic1-handler3</text><!--MD5=[b34b903977778f6e15b67d5d61f7d5e9]
|
|
||||||
reverse link AB to PB--><path codeLine="35" d="M230.97,45.08 C220.55,60.89 207.25,81.08 198.8,93.91 " fill="none" id="AB-backto-PB" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="238.24,34.04,231.5964,36.8439,231.6293,44.0549,238.273,41.251,238.24,34.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[adeab773214358b4ec5fc8a9ab419ebc]
|
|
||||||
reverse link AB to C1--><path codeLine="36" d="M263.63,44.62 C275.4,60.49 290.57,80.95 300.17,93.91 " fill="none" id="AB-backto-C1" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="255.8,34.04,256.1604,41.2421,262.9471,43.6794,262.5867,36.4773,255.8,34.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[02ae765cdd6f37931dacef091dd941fa]
|
|
||||||
reverse link PB to C2--><path codeLine="38" d="M161.79,128.67 C138.72,144.88 107.03,167.14 87.43,180.91 " fill="none" id="PB-backto-C2" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="172.65,121.04,165.441,121.2136,162.8285,127.9348,170.0375,127.7612,172.65,121.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[ef9f97f6182d99c2a922b717bc2d5146]
|
|
||||||
reverse link PB to C3--><path codeLine="39" d="M190.5,134.43 C190.5,149.85 190.5,168.71 190.5,180.91 " fill="none" id="PB-backto-C3" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="190.5,121.04,186.5,127.04,190.5,133.04,194.5,127.04,190.5,121.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[450b28281f7b85415e09b5c7f2cd02c5]
|
|
||||||
reverse link C1 to T1H1--><path codeLine="40" d="M311.94,134.43 C313.39,149.85 315.17,168.71 316.31,180.91 " fill="none" id="C1-backto-T1H1" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="310.68,121.04,307.2579,127.3874,311.8009,132.9875,315.223,126.6401,310.68,121.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[ee8db070aa383ed8f24504308525533d]
|
|
||||||
reverse link C2 to T1H2--><path codeLine="42" d="M66.21,220.96 C64.2,236.46 61.72,255.58 60.13,267.91 " fill="none" id="C2-backto-T1H2" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="67.88,208.04,63.1414,213.4756,66.3364,219.9403,71.075,214.5047,67.88,208.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[7e297d0e187f42122b737afea7d4ddd4]
|
|
||||||
reverse link C3 to T1H3--><path codeLine="43" d="M192.33,221.43 C193.42,236.85 194.75,255.71 195.61,267.91 " fill="none" id="C3-backto-T1H3" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="191.39,208.04,187.8218,214.3064,192.2337,220.0103,195.802,213.7439,191.39,208.04" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[54c3bf38fabac96ea2be09b800d90c74]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "connection1" as C1
|
|
||||||
|
|
||||||
class "connection2" as C2
|
|
||||||
class "connection3" as C3
|
|
||||||
class "topic1-handler1" as T1H1
|
|
||||||
|
|
||||||
class "topic1-handler2" as T1H2
|
|
||||||
class "topic1-handler3" as T1H3
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
AB o- - PB
|
|
||||||
AB *- - C1
|
|
||||||
|
|
||||||
PB *- - C2
|
|
||||||
PB *- - C3
|
|
||||||
C1 *- - T1H1
|
|
||||||
|
|
||||||
C2 *- - T1H2
|
|
||||||
C3 *- - T1H3
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "connection1" as C1
|
|
||||||
|
|
||||||
class "connection2" as C2
|
|
||||||
class "connection3" as C3
|
|
||||||
class "topic1-handler1" as T1H1
|
|
||||||
|
|
||||||
class "topic1-handler2" as T1H2
|
|
||||||
class "topic1-handler3" as T1H3
|
|
||||||
|
|
||||||
AB o- - PB
|
|
||||||
AB *- - C1
|
|
||||||
|
|
||||||
PB *- - C2
|
|
||||||
PB *- - C3
|
|
||||||
C1 *- - T1H1
|
|
||||||
|
|
||||||
C2 *- - T1H2
|
|
||||||
C3 *- - T1H3
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 8.1 KiB |
@ -1,74 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="124px" preserveAspectRatio="none" style="width:668px;height:124px;background:#FFFFFF;" version="1.1" viewBox="0 0 668 124" width="668px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="fv5804orxf2oj" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><ellipse cx="16" cy="59" fill="#000000" filter="url(#fv5804orxf2oj)" rx="10" ry="10" style="stroke:none;stroke-width:1.0;"/><rect fill="#F8F8F8" filter="url(#fv5804orxf2oj)" height="53.5999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="104" x="66" y="32"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="77.5" y="55.9999">Get message</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="76" y="72.7999">bus reference</text><rect fill="#F8F8F8" filter="url(#fv5804orxf2oj)" height="70.3998" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="120" x="210" y="24"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="73" x="233.5" y="47.9999">Ask the bus</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="224.5" y="64.7999">for a particular</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="220" y="81.5998">topic's publisher</text><rect fill="#F8F8F8" filter="url(#fv5804orxf2oj)" height="70.3998" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="84" x="370" y="24"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="380" y="47.9999">Call target</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="380" y="64.7999">method on</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="57" x="383.5" y="81.5998">publisher</text><rect fill="#F8F8F8" filter="url(#fv5804orxf2oj)" height="103.9996" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="102" x="494" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="511" y="30.9999">Messaging</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="51" x="519.5" y="47.7999">calls the</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="82" x="504" y="64.5998">same method</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="55" x="517.5" y="81.3997">on target</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="518" y="98.1996">handlers</text><ellipse cx="646" cy="59" filter="url(#fv5804orxf2oj)" rx="10" ry="10" style="stroke:#000000;stroke-width:1.0;fill:none;"/><ellipse cx="646.5" cy="59.5" fill="#000000" rx="6" ry="6" style="stroke:none;stroke-width:1.0;"/><!--MD5=[db7bc576abd41ebbc81687471622818c]
|
|
||||||
link start to Get message\nbus reference--><path d="M26.23,59 C34.42,59 47.14,59 60.49,59 " fill="none" id="start-to-Get message\nbus reference" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="65.83,59,56.83,55,60.83,59,56.83,63,65.83,59" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[97ec6985a6323c4c4cd3376c8b0065a9]
|
|
||||||
link Get message\nbus reference to Ask the bus\nfor a particular\ntopic's publisher--><path d="M170.2,59 C181.24,59 193.05,59 204.52,59 " fill="none" id="Get message\nbus reference-to-Ask the bus\nfor a particular\ntopic's publisher" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="209.76,59,200.76,55,204.76,59,200.76,63,209.76,59" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[3cc530e465bc010462a36a11e15e380c]
|
|
||||||
link Ask the bus\nfor a particular\ntopic's publisher to Call target\nmethod on\npublisher--><path d="M330.37,59 C341.77,59 353.56,59 364.48,59 " fill="none" id="Ask the bus\nfor a particular\ntopic's publisher-to-Call target\nmethod on\npublisher" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="369.77,59,360.77,55,364.77,59,360.77,63,369.77,59" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[540c37973707ace5e2cda49c4a5db4fe]
|
|
||||||
link Call target\nmethod on\npublisher to Messaging\ncalls the\nsame method\non target\nhandlers--><path d="M454.09,59 C465.02,59 477.01,59 488.57,59 " fill="none" id="Call target\nmethod on\npublisher-to-Messaging\ncalls the\nsame method\non target\nhandlers" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="493.85,59,484.85,55,488.85,59,484.85,63,493.85,59" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[ddd16144f23f8b64b933762bd4135676]
|
|
||||||
link Messaging\ncalls the\nsame method\non target\nhandlers to end--><path d="M596.08,59 C608.91,59 621.69,59 630.96,59 " fill="none" id="Messaging\ncalls the\nsame method\non target\nhandlers-to-end" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="636,59,627,55,631,59,627,63,636,59" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[30f754e3ac5d4e68f6a901057e513029]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the activity
|
|
||||||
(*) - -> "Get message\nbus reference"
|
|
||||||
- -> "Ask the bus\nfor a particular\ntopic's publisher"
|
|
||||||
- -> "Call target\nmethod on\npublisher"
|
|
||||||
- -> "Messaging\ncalls the\nsame method\non target\nhandlers"
|
|
||||||
- -> (*)
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
(*) - -> "Get message\nbus reference"
|
|
||||||
- -> "Ask the bus\nfor a particular\ntopic's publisher"
|
|
||||||
- -> "Call target\nmethod on\npublisher"
|
|
||||||
- -> "Messaging\ncalls the\nsame method\non target\nhandlers"
|
|
||||||
- -> (*)
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 7.4 KiB |
@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="47px" preserveAspectRatio="none" style="width:392px;height:47px;background:#FFFFFF;" version="1.1" viewBox="0 0 392 47" width="392px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="f1v8g63l95wzsl" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[cd07344a80c53f6735430047176be71f]
|
|
||||||
class AB--><rect codeLine="27" fill="#F8F8F8" filter="url(#f1v8g63l95wzsl)" height="26.7999" id="AB" style="stroke:#383838;stroke-width:1.5;" width="100" x="7" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="10" y="25.9999">application bus</text><!--MD5=[562978db86ac36b29d57db113b203393]
|
|
||||||
class PB--><rect codeLine="28" fill="#F8F8F8" filter="url(#f1v8g63l95wzsl)" height="26.7999" id="PB" style="stroke:#383838;stroke-width:1.5;" width="74" x="167" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="170" y="25.9999">project bus</text><!--MD5=[2916ee572578080aeed684cfcd51fe32]
|
|
||||||
class MB--><rect codeLine="29" fill="#F8F8F8" filter="url(#f1v8g63l95wzsl)" height="26.7999" id="MB" style="stroke:#383838;stroke-width:1.5;" width="77" x="301" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="71" x="304" y="25.9999">module bus</text><!--MD5=[b34b903977778f6e15b67d5d61f7d5e9]
|
|
||||||
reverse link AB to PB--><path codeLine="32" d="M120.22,20.5 C136.12,20.5 152.69,20.5 166.8,20.5 " fill="none" id="AB-backto-PB" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="107.09,20.5,113.09,24.5,119.09,20.5,113.09,16.5,107.09,20.5" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="5" x="153.9841" y="36.1734">*</text><!--MD5=[d4275642ac8e9423a6422f9e799928f6]
|
|
||||||
reverse link PB to MB--><path codeLine="33" d="M254.25,20.5 C269.68,20.5 286.46,20.5 300.95,20.5 " fill="none" id="PB-backto-MB" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="241.13,20.5,247.13,24.5,253.13,20.5,247.13,16.5,241.13,20.5" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="5" x="288.1248" y="36.1203">*</text><!--MD5=[88c50094b8ffd821e61a879bc1904da6]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
left to right direction
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the objects in the diagram
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "module bus" as MB
|
|
||||||
|
|
||||||
' Define the class relationships
|
|
||||||
AB o- - "*" PB
|
|
||||||
PB o- - "*" MB
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
left to right direction
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
class "application bus" as AB
|
|
||||||
class "project bus" as PB
|
|
||||||
class "module bus" as MB
|
|
||||||
|
|
||||||
AB o- - "*" PB
|
|
||||||
PB o- - "*" MB
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 4.5 KiB |
@ -1,79 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="111px" preserveAspectRatio="none" style="width:840px;height:111px;background:#FFFFFF;" version="1.1" viewBox="0 0 840 111" width="840px" zoomAndPan="magnify">
|
|
||||||
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&display=swap');</style>
|
|
||||||
<defs><filter height="300%" id="ff3ip6sac87lf" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><ellipse cx="16" cy="74" fill="#000000" filter="url(#ff3ip6sac87lf)" rx="10" ry="10" style="stroke:none;stroke-width:1.0;"/><polygon fill="#F8F8F8" filter="url(#ff3ip6sac87lf)" points="79,62,91,74,79,86,67,74,79,62" style="stroke:#383838;stroke-width:1.5;"/><rect fill="#F8F8F8" filter="url(#ff3ip6sac87lf)" height="53.5999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="104" x="267" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="278.5" y="30.9999">Get message</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="277" y="47.7999">bus reference</text><rect fill="#F8F8F8" filter="url(#ff3ip6sac87lf)" height="53.5999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="131" x="513" y="7"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="111" x="523" y="30.9999">Create connection</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="61" x="548" y="47.7999">to the bus</text><rect fill="#F8F8F8" filter="url(#ff3ip6sac87lf)" height="36.7999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.5;" width="82" x="685" y="60.5"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="695" y="84.4999">Subscribe</text><ellipse cx="818" cy="79" filter="url(#ff3ip6sac87lf)" rx="10" ry="10" style="stroke:#000000;stroke-width:1.0;fill:none;"/><ellipse cx="818.5" cy="79.5" fill="#000000" rx="6" ry="6" style="stroke:none;stroke-width:1.0;"/><!--MD5=[774095af6fbdd33345d22082506b5bc4]
|
|
||||||
link start to #4668727--><path d="M26,74 C35.34,74 50.16,74 61.59,74 " fill="none" id="start-to-#4668727" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="66.89,74,57.89,70,61.89,74,57.89,78,66.89,74" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="58.9531" y="92.7249"/><!--MD5=[6febe3142e34ae6022ed7c8826578db7]
|
|
||||||
link #4668727 to Get message\nbus reference--><path d="M89.62,72.38 C118.16,67.59 203.9,53.18 261.82,43.44 " fill="none" id="#4668727-to-Get message\nbus reference" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="266.98,42.57,257.4414,40.1175,262.0492,43.3989,258.7677,48.0067,266.98,42.57" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="134" x="112" y="43.9999">don't have connection</text><!--MD5=[e6e995dc7ca7c46e7a5add9ba0a5c4d7]
|
|
||||||
link Get message\nbus reference to Create connection\nto the bus--><path d="M371.18,34 C410.22,34 464.43,34 507.49,34 " fill="none" id="Get message\nbus reference-to-Create connection\nto the bus" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="512.68,34,503.68,30,507.68,34,503.68,38,512.68,34" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[10d386b9872602d0e8aed9cde3a7a12f]
|
|
||||||
link Create connection\nto the bus to Subscribe--><path d="M644.17,54 C656.25,57.74 668.64,61.57 679.97,65.07 " fill="none" id="Create connection\nto the bus-to-Subscribe" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="684.76,66.56,677.3384,60.0854,679.982,65.0866,674.9809,67.7302,684.76,66.56" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[df82b97ffb641729455ae14782a9b7a0]
|
|
||||||
link #4668727 to Subscribe--><path d="M90.92,74.08 C160.8,74.63 546.37,77.62 679.66,78.65 " fill="none" id="#4668727-to-Subscribe" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="684.67,78.69,675.693,74.6386,679.6701,78.6614,675.6473,82.6385,684.67,78.69" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="392" y="73.9999">have connection</text><!--MD5=[66353aef4f4573c09dd245c4b2d80a44]
|
|
||||||
link Subscribe to end--><path d="M767.26,79 C779.94,79 793.12,79 802.73,79 " fill="none" id="Subscribe-to-end" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#383838" points="807.94,79,798.94,75,802.94,79,798.94,83,807.94,79" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[536109b5b096364f5af59862421bf627]
|
|
||||||
@startuml
|
|
||||||
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
' https://material.io/design/typography/the-type-system.html
|
|
||||||
' Body 2
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
' default 1.5
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
' default 2
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
' Define the activity
|
|
||||||
(*) - -> if "" then
|
|
||||||
- -> [don't have connection] "Get message\nbus reference"
|
|
||||||
- -> "Create connection\nto the bus"
|
|
||||||
- -> "Subscribe"
|
|
||||||
else
|
|
||||||
- -> [have connection] "Subscribe"
|
|
||||||
endif
|
|
||||||
- -> (*)
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
@startuml
|
|
||||||
skinparam monochrome true
|
|
||||||
skinparam shadowing true
|
|
||||||
|
|
||||||
skinparam DefaultFontName "Roboto,sans-serif"
|
|
||||||
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
|
|
||||||
|
|
||||||
skinparam DefaultFontSize 14
|
|
||||||
skinparam DefaultTextAlignment center
|
|
||||||
skinparam NoteTextAlignment left
|
|
||||||
|
|
||||||
skinparam ActivityBorderThickness 1
|
|
||||||
skinparam PartitionBorderThickness 1.5
|
|
||||||
hide empty members
|
|
||||||
hide circle
|
|
||||||
top to bottom direction
|
|
||||||
left to right direction
|
|
||||||
|
|
||||||
(*) - -> if "" then
|
|
||||||
- -> [don't have connection] "Get message\nbus reference"
|
|
||||||
- -> "Create connection\nto the bus"
|
|
||||||
- -> "Subscribe"
|
|
||||||
else
|
|
||||||
- -> [have connection] "Subscribe"
|
|
||||||
endif
|
|
||||||
- -> (*)
|
|
||||||
@enduml
|
|
||||||
|
|
||||||
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
|
|
||||||
(GPL source distribution)
|
|
||||||
Java Runtime: OpenJDK Runtime Environment
|
|
||||||
JVM: OpenJDK 64-Bit Server VM
|
|
||||||
Default Encoding: UTF-8
|
|
||||||
Language: en
|
|
||||||
Country: US
|
|
||||||
--></g></svg>
|
|
Before Width: | Height: | Size: 6.8 KiB |
@ -1 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="106px" preserveAspectRatio="none" style="width:417px;height:106px;background:#FFFFFF;" version="1.1" viewBox="0 0 417 106" width="417px" zoomAndPan="magnify"><defs><filter height="300%" id="fr2jx0uql5s9w" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--class Topic--><g id="elem_Topic"><rect codeLine="7" fill="#F1F1F1" filter="url(#fr2jx0uql5s9w)" height="70.8125" id="Topic" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="224" x="7" y="15"/><ellipse cx="21" cy="30" fill="#C2C2C2" rx="10" ry="10" style="stroke:#181818;stroke-width:1.0;"/><path d="M23.3896,34.7061 Q22.9111,34.9521 22.3848,35.0752 Q21.8584,35.1982 21.2773,35.1982 Q19.2129,35.1982 18.126,33.8379 Q17.0391,32.4775 17.0391,29.9072 Q17.0391,27.3301 18.126,25.9697 Q19.2129,24.6094 21.2773,24.6094 Q21.8584,24.6094 22.3916,24.7324 Q22.9248,24.8555 23.3896,25.1016 L23.3896,27.3438 Q22.8701,26.8652 22.3813,26.6431 Q21.8926,26.4209 21.373,26.4209 Q20.2656,26.4209 19.7017,27.2993 Q19.1377,28.1777 19.1377,29.9072 Q19.1377,31.6299 19.7017,32.5083 Q20.2656,33.3867 21.373,33.3867 Q21.8926,33.3867 22.3813,33.1646 Q22.8701,32.9424 23.3896,32.4639 Z " fill="#000000"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="194" x="34" y="34.7852">com.intellij.util.messages.Topic</text><line style="stroke:#181818;stroke-width:0.5;" x1="8" x2="230" y1="45" y2="45"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="13" y="61.9883">+getDisplayName()</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="158" x="13" y="78.3945">+getBroadcastDirection()</text></g><!--class ListenerClass--><g id="elem_ListenerClass"><rect codeLine="11" fill="#F1F1F1" filter="url(#fr2jx0uql5s9w)" height="87.2188" id="ListenerClass" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="291" y="7"/><ellipse cx="305" cy="22" fill="#C2C2C2" rx="10" ry="10" style="stroke:#181818;stroke-width:1.0;"/><path d="M307.3896,26.7061 Q306.9111,26.9521 306.3848,27.0752 Q305.8584,27.1982 305.2773,27.1982 Q303.2129,27.1982 302.126,25.8379 Q301.0391,24.4775 301.0391,21.9072 Q301.0391,19.3301 302.126,17.9697 Q303.2129,16.6094 305.2773,16.6094 Q305.8584,16.6094 306.3916,16.7324 Q306.9248,16.8555 307.3896,17.1016 L307.3896,19.3438 Q306.8701,18.8652 306.3813,18.6431 Q305.8926,18.4209 305.373,18.4209 Q304.2656,18.4209 303.7017,19.2993 Q303.1377,20.1777 303.1377,21.9072 Q303.1377,23.6299 303.7017,24.5083 Q304.2656,25.3867 305.373,25.3867 Q305.8926,25.3867 306.3813,25.1646 Q306.8701,24.9424 307.3896,24.4639 Z " fill="#000000"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="318" y="26.7852">ListenerClass</text><line style="stroke:#181818;stroke-width:0.5;" x1="292" x2="404" y1="37" y2="37"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="297" y="53.9883">+method1()</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="12" x="297" y="70.3945">...</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="297" y="86.8008">+methodN()</text></g><!--link Topic to ListenerClass--><g id="link_Topic_ListenerClass"><path codeLine="18" d="M245.21,50.5 C255.9,50.5 266.45,50.5 276.48,50.5 " fill="none" id="Topic-ListenerClass" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="232.69,50.5,238.69,54.5,244.69,50.5,238.69,46.5,232.69,50.5" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="289.23,50.5,280.23,46.5,284.23,50.5,280.23,54.5,289.23,50.5" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="284.23" x2="276.23" y1="50.5" y2="50.5"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="272.1023" y="64.4747">1</text></g><!--SRC=[LOzDJiD038NtSmgJ3I2K4Rq04j0DKjLDkS1auYGEywUnioXLxyumYGJT-JtBx_Exes3TqYFCNPkS2R9uryg47dKge-8l2ibauy4wm_mgagbR13zi32VwHdXM4vLpz4dEC12wdlyx7cMAnN8u24Y4JECaq5D6AnI3KlUmnu42Ge52xERYCr2eiYSp5hIgQ6Xiz9g2e7CqwqN8QO_CPaJMdp6HRS0mr0ak2k1fHDaJbrRde_7uyBXvRpcQtXeko-sBihfka0EnOC3yNbMDMIliwlrb5LVGMl_jZZNWjieQbz6PNm9Fb5YjlyMsVO5c1yqjx0S0]--></g></svg>
|
|
Before Width: | Height: | Size: 4.7 KiB |
@ -5,6 +5,7 @@
|
|||||||
<settings>
|
<settings>
|
||||||
<id-generator-method>LOWER_CASE_DASHES_DOT_REMOVE</id-generator-method>
|
<id-generator-method>LOWER_CASE_DASHES_DOT_REMOVE</id-generator-method>
|
||||||
<default-property element-name="chapter" property-name="show-structure-depth" value="2"/>
|
<default-property element-name="chapter" property-name="show-structure-depth" value="2"/>
|
||||||
|
<wrs-supernova use-version="233.4787"/>
|
||||||
</settings>
|
</settings>
|
||||||
<module name="intellij-sdk"/>
|
<module name="intellij-sdk"/>
|
||||||
<topics dir="topics"/>
|
<topics dir="topics"/>
|
||||||
|
@ -17,7 +17,45 @@ The key Execution API classes are divided into two groups:
|
|||||||
|
|
||||||
The following diagram shows the relations between the key classes:
|
The following diagram shows the relations between the key classes:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
package Configuration <<Rectangle>> {
|
||||||
|
interface RunProfile
|
||||||
|
interface RunConfiguration
|
||||||
|
interface RunProfileState
|
||||||
|
}
|
||||||
|
|
||||||
|
package Execution <<Rectangle>> {
|
||||||
|
abstract class Executor
|
||||||
|
interface ProgramRunner
|
||||||
|
class ExecutionEnvironment
|
||||||
|
class RunContentBuilder
|
||||||
|
abstract class ExecutionResult
|
||||||
|
interface ExecutionConsole
|
||||||
|
abstract class ProcessHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
RunProfile <|.. RunConfiguration
|
||||||
|
RunProfile --> RunProfileState: creates
|
||||||
|
|
||||||
|
RunProfileState --> ExecutionResult: prepares
|
||||||
|
|
||||||
|
ExecutionResult o-- "1" ExecutionConsole
|
||||||
|
ExecutionResult o-- "1" ProcessHandler
|
||||||
|
|
||||||
|
ProgramRunner --> RunProfile: executes
|
||||||
|
ProgramRunner --> Executor
|
||||||
|
ProgramRunner --> ExecutionEnvironment
|
||||||
|
ProgramRunner -r-> RunContentBuilder
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
### Configuration Classes
|
### Configuration Classes
|
||||||
|
|
||||||
|
@ -19,7 +19,30 @@ Run configurations can be started from the <control>Run</control> toolbar, the e
|
|||||||
|
|
||||||
The following diagram shows the key run configurations classes:
|
The following diagram shows the key run configurations classes:
|
||||||
|
|
||||||

|
Original:
|
||||||
|
|
||||||
|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
interface RunProfile
|
||||||
|
interface ConfigurationType
|
||||||
|
abstract class ConfigurationFactory
|
||||||
|
interface RunConfiguration
|
||||||
|
abstract class SettingsEditor
|
||||||
|
|
||||||
|
|
||||||
|
ConfigurationType *-- "*" ConfigurationFactory
|
||||||
|
ConfigurationFactory --> RunConfiguration: creates
|
||||||
|
RunConfiguration o-- "0..*" SettingsEditor
|
||||||
|
RunConfiguration -l|> RunProfile
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
Run Configuration API (except `SettingsEditor` class, which is a class shared by many IntelliJ Platform APIs) is a part of the [Execution API](execution.md).
|
Run Configuration API (except `SettingsEditor` class, which is a class shared by many IntelliJ Platform APIs) is a part of the [Execution API](execution.md).
|
||||||
|
|
||||||
|
@ -308,11 +308,87 @@ val projectService = project.service<MyProjectService>()
|
|||||||
|
|
||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
<procedure title="Getting Service Flow" collapsible="true" default-state="collapsed">
|
<chapter title="Getting Service Flow" collapsible="true" default-state="collapsed">
|
||||||
|
|
||||||
{thumbnail="true" thumbnail-same-file="true"}
|
```plantuml
|
||||||
|
@startuml
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 13
|
||||||
|
skinparam DefaultTextAlignment center
|
||||||
|
skinparam NoteTextAlignment left
|
||||||
|
|
||||||
</procedure>
|
' default 1.5
|
||||||
|
skinparam ActivityBorderThickness 1
|
||||||
|
' default 2
|
||||||
|
skinparam PartitionBorderThickness 1.5
|
||||||
|
|
||||||
|
:getService;
|
||||||
|
note right
|
||||||
|
Allowed in any thread.
|
||||||
|
Call on demand only.
|
||||||
|
Never cache the result.
|
||||||
|
Do not call in constructors
|
||||||
|
unless needed.
|
||||||
|
end note
|
||||||
|
|
||||||
|
if (Is Light Service) then (yes)
|
||||||
|
else (no)
|
||||||
|
if (Is Service Declaration Found) then (yes)
|
||||||
|
else (no)
|
||||||
|
:Return null;
|
||||||
|
detach
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (Is Created and Initialized?) then (yes)
|
||||||
|
else (no)
|
||||||
|
if (Is Container Active?) then (yes)
|
||||||
|
partition "synchronized\non service class" {
|
||||||
|
if (Is Created and Initialized?) then (yes)
|
||||||
|
else (no)
|
||||||
|
if (Is Initializing?) then (yes)
|
||||||
|
:Throw
|
||||||
|
PluginException
|
||||||
|
(Cyclic Service
|
||||||
|
Initialization);
|
||||||
|
detach
|
||||||
|
else (no)
|
||||||
|
partition "non-cancelable" {
|
||||||
|
:Create Instance]
|
||||||
|
note right
|
||||||
|
Avoid getting other
|
||||||
|
services to reduce
|
||||||
|
the initialization tree.
|
||||||
|
The fewer the
|
||||||
|
dependencies,
|
||||||
|
the faster and more
|
||||||
|
reliable initialization.
|
||||||
|
end note
|
||||||
|
|
||||||
|
:Register to be Disposed
|
||||||
|
on Container Dispose
|
||||||
|
(Disposable only)]
|
||||||
|
:Load Persistent State
|
||||||
|
(PersistentStateComponent
|
||||||
|
only)]
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
}
|
||||||
|
else (disposed or dispose in progress)
|
||||||
|
:Throw
|
||||||
|
ProcessCanceledException;
|
||||||
|
detach
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
:Return Instance;
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
|
</chapter>
|
||||||
|
|
||||||
## Sample Plugin
|
## Sample Plugin
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ The *External System* sub-system provides a simple API for wrapping external sys
|
|||||||
|
|
||||||
## Project Management
|
## Project Management
|
||||||
|
|
||||||
|
Fonts installed on the build server:
|
||||||
|
|
||||||
### Project Data Domain
|
### Project Data Domain
|
||||||
|
|
||||||
The external system wrapper is required to be able to build project info on the basis of the given external system config.
|
The external system wrapper is required to be able to build project info on the basis of the given external system config.
|
||||||
@ -26,14 +28,65 @@ That information is built with the following base classes:
|
|||||||
* [`Key`](%gh-ic%/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/Key.java)
|
* [`Key`](%gh-ic%/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/Key.java)
|
||||||
* [`ExternalEntityData`](%gh-ic%/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/ExternalEntityData.java)
|
* [`ExternalEntityData`](%gh-ic%/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/ExternalEntityData.java)
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
class "parent DataNode" as parent
|
||||||
|
class DataNode
|
||||||
|
together {
|
||||||
|
class "child n DataNode" as child3
|
||||||
|
class "..." as child2
|
||||||
|
class "child 1 DataNode" as child1
|
||||||
|
class Key
|
||||||
|
class ExternalEntityData
|
||||||
|
}
|
||||||
|
|
||||||
|
' Define the class relationships
|
||||||
|
parent -- DataNode
|
||||||
|
|
||||||
|
ExternalEntityData --o DataNode
|
||||||
|
Key --o DataNode
|
||||||
|
DataNode -- child1
|
||||||
|
DataNode -- child2
|
||||||
|
DataNode -- child3
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
The `DataNode` class is just a holder for the target data (a data type is defined by the `Key`).
|
The `DataNode` class is just a holder for the target data (a data type is defined by the `Key`).
|
||||||
Multiple `DataNode` objects might be organized in directed graph where every edge identifies parent-child relation.
|
Multiple `DataNode` objects might be organized in directed graph where every edge identifies parent-child relation.
|
||||||
|
|
||||||
For example, a simple one-module project might look as below:
|
For example, a simple one-module project might look as below:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
skinparam DefaultTextAlignment center
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
rectangle "DataNode<ProjectData>" as root
|
||||||
|
rectangle "DataNode<ModuleData>" as child1
|
||||||
|
rectangle "DataNode<LibraryData>\n(JUnit)" as child2
|
||||||
|
rectangle "DataNode<ContentRootData>" as child11
|
||||||
|
rectangle "DataNode<LibraryDependencyData>\n(JUnit)" as child12
|
||||||
|
|
||||||
|
' Define the class relationships
|
||||||
|
root -- child1
|
||||||
|
root -- child2
|
||||||
|
|
||||||
|
child1 -- child11
|
||||||
|
child1 -- child12
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
The IDE provides a set of built-in `Key` and `ExternalEntityData` classes but any external system integration or third-party plugin developer might enhance project data by defining custom `Key` and `ExternalEntityData` and store them at a child of appropriate `DataNode`.
|
The IDE provides a set of built-in `Key` and `ExternalEntityData` classes but any external system integration or third-party plugin developer might enhance project data by defining custom `Key` and `ExternalEntityData` and store them at a child of appropriate `DataNode`.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Messaging Infrastructure
|
|
||||||
|
|
||||||
<!-- Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
<!-- Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||||
|
|
||||||
|
# Messaging Infrastructure
|
||||||
|
|
||||||
<link-summary>Subscribing and publishing messages via message bus.</link-summary>
|
<link-summary>Subscribing and publishing messages via message bus.</link-summary>
|
||||||
|
|
||||||
IntelliJ Platform's messaging infrastructure is an implementation of [Publisher Subscriber Pattern](https://w.wiki/5xaV) that provides additional features like _broadcasting on hierarchy_ and special _nested events_ processing (a _nested event_ is an event directly or indirectly fired from the callback of another event).
|
IntelliJ Platform's messaging infrastructure is an implementation of [Publisher Subscriber Pattern](https://w.wiki/5xaV) that provides additional features like _broadcasting on hierarchy_ and special _nested events_ processing (a _nested event_ is an event directly or indirectly fired from the callback of another event).
|
||||||
@ -21,7 +21,33 @@ The [`Topic`](%gh-ic%/platform/extensions/src/com/intellij/util/messages/Topic.j
|
|||||||
Clients are allowed to subscribe to a specific topic within a bus and send messages to that topic within that particular bus.
|
Clients are allowed to subscribe to a specific topic within a bus and send messages to that topic within that particular bus.
|
||||||
To clarify the corresponding message bus, a `Topic` field declaration should be annotated with `Topic.@AppLevel` and/or `Topic.@ProjectLevel`.
|
To clarify the corresponding message bus, a `Topic` field declaration should be annotated with `Topic.@AppLevel` and/or `Topic.@ProjectLevel`.
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
skinparam classAttributeIconSize 0
|
||||||
|
hide empty fields
|
||||||
|
hide empty methods
|
||||||
|
|
||||||
|
left to right direction
|
||||||
|
|
||||||
|
class "com.intellij.util.messages.Topic" as Topic {
|
||||||
|
+getDisplayName()
|
||||||
|
+getBroadcastDirection()
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListenerClass {
|
||||||
|
+method1()
|
||||||
|
{method} ...
|
||||||
|
+methodN()
|
||||||
|
}
|
||||||
|
|
||||||
|
Topic o--> "1 " ListenerClass
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
#### Topic Properties
|
#### Topic Properties
|
||||||
|
|
||||||
@ -42,13 +68,49 @@ Listener class
|
|||||||
[`MessageBus`](%gh-ic%/platform/extensions/src/com/intellij/util/messages/MessageBus.kt) is the core of the messaging system.
|
[`MessageBus`](%gh-ic%/platform/extensions/src/com/intellij/util/messages/MessageBus.kt) is the core of the messaging system.
|
||||||
It is used in the following scenarios:
|
It is used in the following scenarios:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
|
||||||
|
:Subscriber:
|
||||||
|
(Create connection) as (C)
|
||||||
|
note top of (C): Necessary for subscribing
|
||||||
|
Subscriber --> C
|
||||||
|
|
||||||
|
:Publisher:
|
||||||
|
(Publish)
|
||||||
|
Publisher --> Publish
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
### Connection
|
### Connection
|
||||||
|
|
||||||
Connection is represented by [`MessageBusConnection`](%gh-ic%/platform/extensions/src/com/intellij/util/messages/MessageBusConnection.kt) class and manages all subscriptions for a particular client within a particular bus.
|
Connection is represented by [`MessageBusConnection`](%gh-ic%/platform/extensions/src/com/intellij/util/messages/MessageBusConnection.kt) class and manages all subscriptions for a particular client within a particular bus.
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
class MessageBus
|
||||||
|
class MessageBusConnection
|
||||||
|
class "Default Handler" as DH
|
||||||
|
class "(Topic-Handler)" as TH
|
||||||
|
|
||||||
|
MessageBus "1" o-- "*" MessageBusConnection
|
||||||
|
MessageBusConnection o-- "0..1" DH
|
||||||
|
MessageBusConnection *-- "*" TH
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
Connection stores *topic-handler* mappings - callbacks to invoke when message for the target topic is received (not more than one handler per topic within the same connection is allowed).
|
Connection stores *topic-handler* mappings - callbacks to invoke when message for the target topic is received (not more than one handler per topic within the same connection is allowed).
|
||||||
|
|
||||||
@ -80,7 +142,28 @@ public interface ChangeActionNotifier {
|
|||||||
|
|
||||||
### Subscribing to a Topic
|
### Subscribing to a Topic
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
skinparam DefaultTextAlignment center
|
||||||
|
skinparam ActivityBorderThickness 1
|
||||||
|
|
||||||
|
left to right direction
|
||||||
|
|
||||||
|
' Define the activity
|
||||||
|
(*) --> if "" then
|
||||||
|
--> [no connection] "Get a message\nbus reference"
|
||||||
|
--> "Create\na connection\nto the bus"
|
||||||
|
--> "Subscribe"
|
||||||
|
else
|
||||||
|
--> [connection exists] "Subscribe"
|
||||||
|
endif
|
||||||
|
--> (*)
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
> If targeting 2019.3 or later, use [declarative registration](plugin_listeners.md) whenever possible.
|
> If targeting 2019.3 or later, use [declarative registration](plugin_listeners.md) whenever possible.
|
||||||
>
|
>
|
||||||
@ -106,7 +189,25 @@ Many standard interfaces implement returning a message bus, e.g., [`Application.
|
|||||||
|
|
||||||
### Publishing Messages
|
### Publishing Messages
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
skinparam DefaultTextAlignment center
|
||||||
|
skinparam ActivityBorderThickness 1
|
||||||
|
|
||||||
|
left to right direction
|
||||||
|
|
||||||
|
' Define the activity
|
||||||
|
(*) --> "Get message\nbus reference"
|
||||||
|
--> "Ask the bus\nfor a particular\ntopic's publisher"
|
||||||
|
--> "Call target\nmethod on\npublisher"
|
||||||
|
--> "Messaging calls\nthe same method\non target handlers"
|
||||||
|
--> (*)
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public void doChange(Context context) {
|
public void doChange(Context context) {
|
||||||
@ -126,13 +227,65 @@ public void doChange(Context context) {
|
|||||||
Message buses can be organised into hierarchies.
|
Message buses can be organised into hierarchies.
|
||||||
Moreover, the IntelliJ Platform has them already:
|
Moreover, the IntelliJ Platform has them already:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
left to right direction
|
||||||
|
|
||||||
|
' Define the objects in the diagram
|
||||||
|
class "application bus" as AB
|
||||||
|
class "project bus" as PB
|
||||||
|
class "module bus" as MB
|
||||||
|
|
||||||
|
' Define the class relationships
|
||||||
|
AB o-- "*" PB
|
||||||
|
PB o-- "*" MB
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
That allows to notify subscribers registered in one message bus on messages sent to another message bus.
|
That allows to notify subscribers registered in one message bus on messages sent to another message bus.
|
||||||
|
|
||||||
Example setup:
|
Example setup:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam monochrome true
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
top to bottom direction
|
||||||
|
|
||||||
|
class "application bus" as AB
|
||||||
|
class "project bus" as PB
|
||||||
|
class "connection1" as C1
|
||||||
|
|
||||||
|
class "connection2" as C2
|
||||||
|
class "connection3" as C3
|
||||||
|
class "topic1-handler1" as T1H1
|
||||||
|
|
||||||
|
class "topic1-handler2" as T1H2
|
||||||
|
class "topic1-handler3" as T1H3
|
||||||
|
|
||||||
|
AB o-- PB
|
||||||
|
AB *-- C1
|
||||||
|
|
||||||
|
PB *-- C2
|
||||||
|
PB *-- C3
|
||||||
|
C1 *-- T1H1
|
||||||
|
|
||||||
|
C2 *-- T1H2
|
||||||
|
C3 *-- T1H3
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
The example setup presents a simple hierarchy (the *application bus* is a parent of the *project bus*) with three subscribers for the same topic.
|
The example setup presents a simple hierarchy (the *application bus* is a parent of the *project bus*) with three subscribers for the same topic.
|
||||||
|
|
||||||
@ -163,7 +316,32 @@ The IntelliJ Platform's messaging infrastructure guarantees that all messages se
|
|||||||
|
|
||||||
Consider the following configuration:
|
Consider the following configuration:
|
||||||
|
|
||||||

|
```plantuml
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
skinparam DefaultFontName JetBrains Sans
|
||||||
|
skinparam DefaultFontSize 14
|
||||||
|
hide empty members
|
||||||
|
hide circle
|
||||||
|
|
||||||
|
top to bottom direction
|
||||||
|
|
||||||
|
class "bus" as B
|
||||||
|
|
||||||
|
class "connection1" as C1
|
||||||
|
class "connection2" as C2
|
||||||
|
|
||||||
|
class "topic-handler1" as TH1
|
||||||
|
class "topic-handler2" as TH2
|
||||||
|
|
||||||
|
|
||||||
|
B *-- C1
|
||||||
|
B *-- C2
|
||||||
|
|
||||||
|
C1 *-- TH1
|
||||||
|
C2 *-- TH2
|
||||||
|
@enduml
|
||||||
|
```
|
||||||
|
|
||||||
When a message is sent to the target topic, the following happens:
|
When a message is sent to the target topic, the following happens:
|
||||||
|
|
||||||
|