package org.atomnuke.container.packaging.resource;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.Arrays;
import org.atomnuke.container.packaging.archive.ResourceType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ResourceDescriptorImpl implements Resource {
private static final Logger LOG = LoggerFactory.getLogger(ResourceDescriptorImpl.class);
private final ResourceType resourceType;
private final URI resourceUri;
private final URL resourceUrl;
private final String relativePath;
private final byte[] digestBytes;
public ResourceDescriptorImpl(URI resourceUri, String relativePath, ResourceType resourceType) {
this(resourceUri, relativePath, resourceType, new byte[0]);
}
public ResourceDescriptorImpl(URI resourceUri, String relativePath, ResourceType resourceType, byte[] digestBytes) {
this.resourceUri = resourceUri;
this.resourceUrl = toUrl(resourceUri);
this.relativePath = relativePath;
this.resourceType = resourceType;
this.digestBytes = Arrays.copyOf(digestBytes, digestBytes.length);
}
public static URL toUrl(URI descriptor) {
try {
return descriptor.toURL();
} catch (MalformedURLException murle) {
LOG.error("Error building location for resource: " + descriptor);
return null;
}
}
@Override
public URL url() {
return resourceUrl;
}
@Override
public ResourceType type() {
return resourceType;
}
@Override
public byte[] digestBytes() {
return digestBytes;
}
@Override
public String relativePath() {
return relativePath;
}
@Override
public URI uri() {
return resourceUri;
}
}