@ Override public String addContent ( String spaceID , String contentID , InputStream content , String contentMimeType , Map < String , String > userProperties , long contentSize , String checksum , String storeID ) throws ResourceException , InvalidIdException , ResourcePropertiesInvalidException { IdUtil . validateContentId ( contentID ) ; validateProperties ( userProperties , "add content" , spaceID , contentID ) ; try { StorageProvider storage = storageProviderFactory . getStorageProvider ( storeID ) ; try { // overlay new properties on top of older extended properties // so that old tags and custom properties are preserved. // c.f. https://jira.duraspace.org/browse/DURACLOUD-757 Map < String , String > oldUserProperties = storage . getContentProperties ( spaceID , contentID ) ; //remove all non extended properties if ( userProperties != null ) { oldUserProperties . putAll ( userProperties ) ; //use old mimetype if none specified. String oldMimetype = oldUserProperties . remove ( StorageProvider . PROPERTIES_CONTENT_MIMETYPE ) ; if ( contentMimeType == null || contentMimeType . trim ( ) == "" ) { contentMimeType = oldMimetype ; } oldUserProperties = StorageProviderUtil . removeCalculatedProperties ( oldUserProperties ) ; } userProperties = oldUserProperties ; } catch ( NotFoundException ex ) { // do nothing - no properties to update // since file did not previous exist. } return storage . addContent ( spaceID , contentID , contentMimeType , userProperties , contentSize , checksum , content ) ; } catch ( NotFoundException e ) { throw new ResourceNotFoundException ( "add content" , spaceID , contentID , e ) ; } catch ( ChecksumMismatchException e ) { throw new ResourceChecksumException ( "add content" , spaceID , contentID , e ) ; } catch ( Exception e ) { storageProviderFactory . expireStorageProvider ( storeID ) ; throw new ResourceException ( "add content" , spaceID , contentID , e ) ; } }
Adds content to a space .