Class InMemSpdxStore

java.lang.Object
org.spdx.storage.simple.InMemSpdxStore
All Implemented Interfaces:
AutoCloseable, org.spdx.storage.IModelStore

public class InMemSpdxStore extends Object implements org.spdx.storage.IModelStore
In memory implementation of an SPDX store

This implementation primarily uses ConcurrentHashMaps.

It is designed to be thread-safe and low CPU utilization. It may use significant amounts of memory for larger SPDX documents.

Author:
Gary O'Neall
  • Field Details

    • LICENSE_ID_PATTERN_GENERATED

      public static Pattern LICENSE_ID_PATTERN_GENERATED
      Pattern for the generated license ID
    • ANON_PREFIX

      public static final String ANON_PREFIX
      Prefix for anonymous ids
      See Also:
    • typedValueMap

      protected Map<String,StoredTypedItem> typedValueMap
      Map of property object URI's to typed value items
  • Constructor Details

    • InMemSpdxStore

      public InMemSpdxStore()
  • Method Details

    • exists

      public boolean exists(String objectUri)
      Specified by:
      exists in interface org.spdx.storage.IModelStore
    • create

      public void create(org.spdx.core.TypedValue typedValue) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      create in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • getItem

      protected StoredTypedItem getItem(String objectUri) throws org.spdx.core.InvalidSPDXAnalysisException
      Gets the item from the hashmap
      Parameters:
      objectUri - Anonymous or URI ID
      Returns:
      the item from the hash map
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException - on SPDX parsing errors
    • getPropertyValueDescriptors

      public List<org.spdx.storage.PropertyDescriptor> getPropertyValueDescriptors(String objectUri) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      getPropertyValueDescriptors in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • setValue

      public void setValue(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Object value) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      setValue in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • clearValueCollection

      public void clearValueCollection(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      clearValueCollection in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • addValueToCollection

      public boolean addValueToCollection(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Object value) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      addValueToCollection in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • removeValueFromCollection

      public boolean removeValueFromCollection(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Object value) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      removeValueFromCollection in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • listValues

      public Iterator<Object> listValues(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      listValues in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • getValue

      public Optional<Object> getValue(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      getValue in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • getNextId

      public String getNextId(org.spdx.storage.IModelStore.IdType idType) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      getNextId in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • removeProperty

      public void removeProperty(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      removeProperty in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • getAllItems

      public Stream<org.spdx.core.TypedValue> getAllItems(@Nullable String nameSpace, @Nullable String typeFilter)
      Specified by:
      getAllItems in interface org.spdx.storage.IModelStore
    • collectionSize

      public int collectionSize(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      collectionSize in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • collectionContains

      public boolean collectionContains(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Object value) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      collectionContains in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • isCollectionMembersAssignableTo

      public boolean isCollectionMembersAssignableTo(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Class<?> clazz) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      isCollectionMembersAssignableTo in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • isPropertyValueAssignableTo

      public boolean isPropertyValueAssignableTo(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor, Class<?> clazz, String specVersion) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      isPropertyValueAssignableTo in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • isCollectionProperty

      public boolean isCollectionProperty(String objectUri, org.spdx.storage.PropertyDescriptor propertyDescriptor) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      isCollectionProperty in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • isAnon

      public boolean isAnon(String objectUri)
      Specified by:
      isAnon in interface org.spdx.storage.IModelStore
    • getIdType

      public org.spdx.storage.IModelStore.IdType getIdType(String objectUri)
      Specified by:
      getIdType in interface org.spdx.storage.IModelStore
    • enterCriticalSection

      public org.spdx.storage.IModelStore.IModelStoreLock enterCriticalSection(boolean readLockRequested)
      Specified by:
      enterCriticalSection in interface org.spdx.storage.IModelStore
    • leaveCriticalSection

      public void leaveCriticalSection(org.spdx.storage.IModelStore.IModelStoreLock lock)
      Specified by:
      leaveCriticalSection in interface org.spdx.storage.IModelStore
    • getCaseSensitiveId

      public Optional<String> getCaseSensitiveId(String nameSpace, String caseInsensitiveId)
      Specified by:
      getCaseSensitiveId in interface org.spdx.storage.IModelStore
    • getTypedValue

      public Optional<org.spdx.core.TypedValue> getTypedValue(String objectUri) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      getTypedValue in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • clear

      public void clear()
      Remove all existing elements, properties, and values
    • delete

      public void delete(String objectUri) throws org.spdx.core.InvalidSPDXAnalysisException
      Specified by:
      delete in interface org.spdx.storage.IModelStore
      Throws:
      org.spdx.core.InvalidSPDXAnalysisException
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception