Skip to content

Commit 7110367

Browse files
committed
Add SPDX Java library family diagram
Add a diagram showing a family of SPDX Java libraries and their relationships to help implementers quickly get the overview. The diagram is rendered from a PlantUML file. Signed-off-by: Arthit Suriyawongkul <[email protected]>
1 parent 4204012 commit 7110367

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ See [README-V3-UPGRADE.md](README-V3-UPGRADE.md) for library upgrade instruction
5050

5151
## API Documentation
5252

53+
[![SPDX Java library family diagram](spdx_java_lib_family.png)](./spdx_java_lib_family.png)
54+
5355
Here are links to the API documentation for the family of SPDX Java libraries.
5456

5557
"release" points to the API documentation of the latest stable version of the library, while "dev" points to the API documentation generated every time there is an update in the library's GitHub repository.

spdx_java_lib_family.plantuml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
' SPDX-FileCopyrightText: 2025 SPDX contributors
2+
' SPDX-FileType: DOCUMENTATION
3+
' SPDX-License-Identifier: Apache-2.0
4+
5+
@startuml spdx_java_lib_family
6+
scale 1.5
7+
8+
title Family of SPDX Java libraries
9+
10+
' Left-to-right layout is more familiar for readers of left-to-right languages.
11+
left to right direction
12+
13+
' Use "package" to group related components and improve readability.
14+
' This does not imply actual Java package structure.
15+
package "SPDX Java libraries" {
16+
package "Core libraries" {
17+
component "<b>java-spdx-library</b>\n(core library & helpers)" as lib #LightGreen
18+
component "spdx-java-core\n(core utilities)" as core #LightYellow
19+
interface "IModelStore\n(storage service provider interface)" as storeSPI #LightYellow
20+
}
21+
22+
package "Models" {
23+
component "spdx-java-model-2_X\n(SPDX 2 model)" as model2
24+
component "spdx-java-model-3_0\n(SPDX 3 model)" as model3
25+
}
26+
27+
package "Storage implementations" {
28+
component "spdx-java-tagvalue-store\n(Tag-Value store)" as tagvalue
29+
component "spdx-java-rdf-store\n(RDF store)" as rdf
30+
component "spdx-java-spreadsheet-store\n(XLS spreadsheet store)" as sheet
31+
component "spdx-java-jackson-store\n(JSON / YAML / XML store)" as jackson
32+
component "spdx-java-v3jsonld-store\n(v3 JSON-LD store)" as v3jsonld
33+
}
34+
35+
package "Tooling" {
36+
component "spdx-model-to-java\n(code generator for SPDX 3 model)" as genmodel3
37+
component "tools-java\n(command-line tools)" as tools
38+
component "spdx-maven-plugin\n(Maven integration)" as maven
39+
}
40+
41+
package "Specifications" {
42+
component "SPDX 3 specification Turtle file" as spdx3turtle
43+
}
44+
}
45+
46+
' Core relationships
47+
lib --> core : depends on
48+
lib --> model2 : depends on
49+
lib --> model3 : depends on
50+
51+
' Storage SPI and implementations
52+
core --> storeSPI : contains
53+
jackson ..|> storeSPI : implements
54+
rdf ..|> storeSPI : implements
55+
sheet ..|> storeSPI : implements
56+
tagvalue ..|> storeSPI : implements
57+
v3jsonld ..|> storeSPI : implements
58+
59+
' Tooling
60+
maven --> lib : depends on
61+
tools --> lib : depends on
62+
genmodel3 --> model3 : generates
63+
genmodel3 --> spdx3turtle : depends on
64+
65+
@enduml

spdx_java_lib_family.png

105 KB
Loading

0 commit comments

Comments
 (0)