Skip to content

Commit 592a9a2

Browse files
authored
Merge pull request #359 from bact/family-diagram
Add SPDX Java library family diagram
2 parents 0f938e0 + 5ef831a commit 592a9a2

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-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: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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" as core_pkg {
17+
component "<b><size:20>java-spdx-library</size></b>\nCore library & helpers" as lib #LightSalmon
18+
component "<b><size:20>spdx-java-core</size></b>\nCore utilities" as core #LightYellow
19+
component "<b><size:20>org.spdx.storage.IModelStore</size></b>\nStorage service provider interface" as storeSPI #LightBlue
20+
component "<b><size:20>org.spdx.storage.simple.InMemSpdxStore</size></b>\nSimple in-memory store" as inmem #LightBlue
21+
}
22+
23+
package "Models" as model_pkg {
24+
component "<b><size:20>spdx-java-model-2_X</size></b>\nSPDX 2 model" as model2 #LightGreen
25+
component "<b><size:20>spdx-java-model-3_0</size></b>\nSPDX 3 model" as model3 #LightGreen
26+
}
27+
28+
package "Storage implementations" as store_pkg {
29+
component "<b><size:20>spdx-java-tagvalue-store</size></b>\nTag-Value store" as tagvalue #LightBlue
30+
component "<b><size:20>spdx-java-rdf-store</size></b>\nRDF store" as rdf #LightBlue
31+
component "<b><size:20>spdx-java-spreadsheet-store</size></b>\nXLS spreadsheet store" as sheet #LightBlue
32+
component "<b><size:20>spdx-java-jackson-store</size></b>\nJSON / XML / YAML store" as jackson #LightBlue
33+
component "<b><size:20>spdx-java-v3jsonld-store</size></b>\nSPDX 3 JSON-LD store" as v3jsonld #LightBlue
34+
}
35+
36+
package "Tooling" as tooling_pkg {
37+
component "<b><size:20>spdx-maven-plugin</size></b>\nMaven integration" as maven
38+
component "<b><size:20>spdx-model-to-java</size></b>\nJava code generator for SPDX 3 model" as genmodel3
39+
}
40+
41+
package "Specifications" as spec_pkg {
42+
component "<i><size:20>spdx-model.ttl</size></i>\nSPDX 3 specification RDF 1.1 Turtle file" as spdx3turtle
43+
}
44+
45+
package "User-facing applications" as app_pkg {
46+
component "<b><size:20>tools-java</size></b>\nCommand-line tools" as tools
47+
component "<i><size:20>spdx-online-tools</size></i>\nWeb-based tools" as online
48+
}
49+
}
50+
51+
' Core libraries and models
52+
lib --> core : depends on
53+
lib --> model2 : depends on
54+
lib --> model3 : depends on
55+
56+
' Storage SPI and implementations
57+
core --> storeSPI : contains
58+
lib --> inmem : contains
59+
inmem ..|> storeSPI : implements
60+
jackson ..|> storeSPI : implements
61+
rdf ..|> storeSPI : implements
62+
sheet ..|> storeSPI : implements
63+
tagvalue ..|> storeSPI : implements
64+
v3jsonld ..|> storeSPI : implements
65+
66+
' Tooling
67+
maven --> lib : depends on
68+
genmodel3 --> model3 : generates
69+
genmodel3 -left-> spdx3turtle : has data file
70+
71+
' User-facing applications
72+
tools --> lib : depends on
73+
online --> tools : depends on
74+
75+
' Layout hints
76+
spec_pkg -[hidden]-> tooling_pkg
77+
store_pkg -[hidden]-> core_pkg
78+
inmem -[hidden]-> store_pkg
79+
model_pkg -[hidden]-> core_pkg
80+
81+
@enduml

spdx_java_lib_family.png

298 KB
Loading

0 commit comments

Comments
 (0)