code: @Override
      @Transactional
      public void addContentItem(Snapshot snapshot,
                                 String contentId,
                                 Map<String, String> props)
          throws SnapshotException {
  
          String contentIdHash = createChecksumGenerator().generateChecksum(contentId);
          try {
              if (this.snapshotContentItemRepo.findBySnapshotAndContentIdHash(snapshot, contentIdHash) != null) {
                  return;
              }
  
              SnapshotContentItem item = new SnapshotContentItem();
              item.setContentId(contentId);
              item.setSnapshot(snapshot);
              item.setContentIdHash(contentIdHash);
              String propString = PropertiesSerializer.serialize(props);
              item.setMetadata(propString);
              this.snapshotContentItemRepo.save(item);
          } catch (Exception ex) {
              throw new SnapshotException("failed to add content item: " + ex.getMessage(), ex);
          }
      }
docs: /*
  (non-Javadoc)
  
  @see org.duracloud.snapshot.service.SnapshotManager#addContentItem(
  org.duracloud.snapshot.db.model.Snapshot, java.lang.String, java.util.Map)