All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.molgenis.util.ResourceFingerprintRegistry Maven / Gradle / Ivy

package org.molgenis.util;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.google.common.hash.HashCode;
import com.google.common.hash.Hashing;
import com.google.common.io.BaseEncoding;

public class ResourceFingerprintRegistry
{
	private final Map resourceFingerprints;

	public ResourceFingerprintRegistry()
	{
		resourceFingerprints = new HashMap();
	}

	public String getFingerprint(String resourceName) throws IOException
	{
		return getFingerprint(this.getClass(), resourceName);
	}

	public String getFingerprint(Class contextClass, String resourceName) throws IOException
	{
		String resourceFingerprint = resourceFingerprints.get(resourceName);
		if (resourceFingerprint == null)
		{
			resourceFingerprint = createFingerprint(contextClass, resourceName);
			resourceFingerprints.put(resourceName, resourceFingerprint);
		}
		return resourceFingerprint;
	}

	private String createFingerprint(Class contextClass, String resourceName) throws IOException
	{
		byte[] bytes = contextClass != null ? ResourceUtils.getBytes(contextClass, resourceName) : ResourceUtils
				.getBytes(resourceName);
		HashCode crc32 = Hashing.crc32().hashBytes(bytes);
		return BaseEncoding.base64Url().omitPadding().encode(crc32.asBytes());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy