Class InMemSpdxStore

  • All Implemented Interfaces:
    AutoCloseable, org.spdx.storage.IModelStore

    public class InMemSpdxStore
    extends Object
    implements org.spdx.storage.IModelStore
    Author:
    Gary O'Neall 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.
    • Field Detail

      • LICENSE_ID_PATTERN_GENERATED

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

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

      • InMemSpdxStore

        public InMemSpdxStore()
    • Method Detail

      • 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
      • 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)
                                                     throws org.spdx.core.InvalidSPDXAnalysisException
        Specified by:
        getAllItems in interface org.spdx.storage.IModelStore
        Throws:
        org.spdx.core.InvalidSPDXAnalysisException
      • 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
      • getCaseSensisitiveId

        public Optional<String> getCaseSensisitiveId​(String nameSpace,
                                                     String caseInsensisitiveId)
        Specified by:
        getCaseSensisitiveId 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