indy-repository-manager/src/main/java/org/jboss/pnc/indyrepositorymanager/IndyRepositorySession.java
private String computeGenericIdentifier(String originUrl, String localUrl, String sha256) {
        String identifier = originUrl;
        if (identifier == null) {
            // this is from/to a hosted repository, either the build repo or something like that.
            identifier = localUrl;
        }
        identifier += '|' + sha256;
        return identifier;
    }
private String computeGenericIdentifier(String originUrl, String localUrl, String sha256) {
        String identifier = originUrl;
        if (identifier == null) {
            // this is from/to a hosted repository, either the build repo or something like that.
            identifier = localUrl;
        }
        identifier += '|' + sha256;
        return identifier;
    }
Compute the identifier string for a generic download, that does not match package type specific files structure.
It prefers to use the origin URL if it is not empty. In case it is then it uses local URL, which can never be
empty, it is the local file mirror in Indy. After that it attaches the sha256 separated by a pipe.

@param originUrl the origin URL of the transfer, it can be null
@param localUrl url where the artifact was backed up in Indy
@param sha256 the SHA-256 of the transfer
@return the generated identifier