Java library which implements the Java object model for SPDX and provides useful helper functions
Java library which implements the Java object model for SPDX and provides useful helper functions.
The API documentation is available at:
https://spdx.github.io/Spdx-Java-Library
Library version 2.0.0 and higher is not compatible with previous versions of the library due to breaking changes introduced in SPDX 3.0.
The library does support the spec versions 2.X and 3.X.
See the README-V3-UPGRADE.md file for information on how to upgrade from earlier versions of the library.
org.spdx.storage.IModelStore
interface.ISerializableModelStore
extends the IModelStore
and supportsorg.spdx.library.model
package.The methods enterCriticalSection
and leaveCriticalSection
are available to
support multi-threaded applications.
These methods serialize access to the model store for the specific SPDX
document used for the SPDX model object.
See the GETTING-STARTED.md file for how to get started in different scenarios.
The API documentation is available at:
https://spdx.github.io/Spdx-Java-Library
Spdx-Java-Library
can be configured using either Java system properties or a Java properties file located in the runtime CLASSPATH at /resources/spdx-java-library.properties
.
The library has these configuration options:
org.spdx.useJARLicenseInfoOnly
- a boolean that controls whether the (potentially out of date) listed license information bundled inside the JAR is used (true), vs the library downloading the latest files from the SPDX website (false). Default is false (always download the latest files from the SPDX website).org.spdx.downloadCacheEnabled
- a boolean that enables or disables the download cache. Defaults to false
(the cache is disabled). The cache location is determined as per the XDG Base Directory Specification (i.e. ${XDG_CACHE_HOME}/Spdx-Java-Library
or ${HOME}/.cache/Spdx-Java-Library
).org.spdx.downloadCacheCheckIntervalSecs
- a long that controls how often each cache entry is rechecked for staleness, in units of seconds. Defaults to 86,400 seconds (24 hours). Set to 0 (zero) to have each cache entry checked every time (note: this will result in a lot more network I/O and negatively impact performance, albeit there is still a substantial performance saving vs not using the cache at all).Note that these configuration options can only be modified prior to first use
of Spdx-Java-Library.
Once the library is initialized, subsequent changes will have no effect.
Before executing any of the model class methods, the model versions need to be initialized. This is done by calling:
SpdxModelFactory.init();
SPDX data is stored in a “model store” and copying between model stores requires a copy manager.
A simple store is provided in the java library. To create the simple in-memory model store and a copy manager, execute the following:
InMemSpdxStore modelStore = new InMemSpdxStore();
IModelCopyManager copyManager = new ModelCopyManager();
Many factory and helper methods in the library make use of a DefaultModelStore
if no model store or copy manager is specified.
The SpdxModelFactory.init()
will create defaults for this purpose.
If you would like to use a different default model store and/or copy manager, you can call:
DefaultModelStore.initialize(IModelStore newModelStore, String newDefaultDocumentUri,
IModelCopyManager newDefaultCopyManager);
The newDefaultDocumentUri
is a default document URI used for SPDX Spec version 2 model objects.
IMPORTANT NOTE: The call to DefaultModelStore.initialize
must be made prior to or immediately after the call
to SpdxModelFactory.init()
. Otherwise, any data stored in the previous default model object will be lost.
The SpdxModelFactory.init()
will not overwrite an already initialized default model store.
To update Spdx-Java-Library, the following is a very brief checklist:
ISpdxModelInfo
- typically named SpdxModelInfoVXXX
- where “XXX” is the version of the spec.ModelRegistry.getModelRegistry().registerModel(new SpdxModelInfoVXXX());
in the static block at the very beginning of the class.ModelCopyConverter
class.Note: This library is currently unstable, and under development.
Reviews, suggestions are welcome.
Please enter an issue with any suggestions.