|
| 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 |
0 commit comments