forked from dcm4che/dcm4chee-conf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlayers.puml
116 lines (84 loc) · 2.8 KB
/
layers.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
@startuml
title Configuration framework - Layers
dc -- json
Interface Configuration
package "JSON conversion \n <size:10>Handles converting configuration nodes (i.e. json-like structures) to type-safe configurable instances and vice-versa.</size>" as json {
Class DefaultBeanVitalizer
Interface ConfigTypeAdapter
}
package "Dicom Configuration" as dc {
DicomConfiguration <|- CommonDicomConfigurationWithHL7
Interface DicomConfiguration
Class CommonDicomConfigurationWithHL7
Class TCConfiguration
Class Device
CommonDicomConfigurationWithHL7 - TCConfiguration
CommonDicomConfigurationWithHL7 -- Device
}
newpage
Interface Configuration
package "Low-level configuration" as ejb {
Configuration <|- ConfigurationEJB
package "Defaults filter \n <size:10>Filters out default values before storing / inserts default values when loading</size>" as df {
class DefaultsAndNullFilterDecorator
}
package "Hash-based optimistic locking \n <size:10>Prevents conflicting concurrent changes and preserves independent concurrent changes</size>" as ol {
class HashBasedOptimisticLockingConfiguration
}
package "Extension merging \n <size:10>Preserves existing extensions from being removed</size>" as em {
class ExtensionMergingConfiguration
}
package "Infinispan reference index \n <size:10>Enables fast lookup by uuid </size>" as irf {
class InfinispanDicomReferenceIndexingDecorator
}
package "Infinispan cache \n <size:10>Caches the whole configuration</size>" as ic {
class InfinispanCachingConfigurationDecorator
}
package "Storage \n <size:10>Persistent storage</size>" as st {
class SemiSerializedDBConfigStorage
class CdiSingleJsonFileConfigurationStorage
}
package "[pre-commit] Integrity check \n <size:10>Prevents breaking changes from being committed</size>" as ichk {
Class ConfigurationIntegrityCheck
}
package "[post-commit] Notifications \n <size:10>Triggers update notifications to other components</size>" as notif {
Class ConfigNotificationDecorator
}
class ConfigurationEJB
note right of ConfigurationEJB: Assembles the decorator stack; \nEnforces locking, transaction demarcation, pre/post-commit hooks
ConfigurationEJB .. df
st .. ichk
st .. notif
df .. ol
ol .. em
em .. irf
irf .. ic
ic ..st
}
'
'rectangle ConfigurationEJB {
'}
'
'rectangle upgrade as "Upgrade engine === d"
'
'rectangle "DicomConfiguration" {
'}
'
'rectangle "Defaults filter" {
'}
'rectangle "Hash-based optimistic locking" {
'}
'rectangle "Extension merging" {
'}
'rectangle "Infinispan reference index" {
'}
'rectangle "Infinispan cache" {
'}
'rectangle "Storage (DB, json file)" {
'}
'
'rectangle "(pre-commit)Integrity check" {
'}
'rectangle "(post-commit)Notifications" {
'}
@enduml