code: @Override
      public URI getContentDigest() {
  
          LOGGER.debug("getContentDigest getting digest info");
          try {
              // Determine which digest algorithm to use
              final String algorithm = hasDescriptionProperty(DEFAULT_DIGEST_ALGORITHM) ? property2values.apply(
                  getDescriptionProperty(DEFAULT_DIGEST_ALGORITHM)).findFirst().get().getString()
                  : ContentDigest.DEFAULT_ALGORITHM;
              final String algorithmWithoutStringType = algorithm.replace(FIELD_DELIMITER + XSDstring.getURI(), "");
  
              if (hasDescriptionProperty(CONTENT_DIGEST)) {
                  // Select the stored digest that matches the digest algorithm
                  final Optional<Value> digestValue = property2values.apply(getDescriptionProperty(CONTENT_DIGEST))
                          .filter(digest -> {
                          try {
                              final URI digestUri = URI.create(digest.getString());
                              return algorithmWithoutStringType.equalsIgnoreCase(ContentDigest.getAlgorithm(digestUri));
  
                          } catch (final RepositoryException e) {
                              LOGGER.warn("Exception thrown when getting digest property {}, {}", digest, e.getMessage());
                              return false;
                          }
                      }).findFirst();
  
                  // Success, return the digest value
                  if (digestValue.isPresent()) {
                      return URI.create(digestValue.get().getString());
                  }
              }
              LOGGER.warn("No digest value was found to match the algorithm: {}", algorithmWithoutStringType);
          } catch (final RepositoryException e) {
              LOGGER.warn("Could not get content digest: {}", e.getMessage());
          }
  
          return ContentDigest.missingChecksum();
      }
docs: /*
  (non-Javadoc)
  @see org.fcrepo.kernel.api.models.FedoraBinary#getContentDigest()