blob: 199bbe0223a9e7f3238729e74dd9e40c2111cacb [file] [log] [blame]
package org.robolectric.internal.dependency;
import java.io.File;
import java.lang.String;
import java.lang.StringBuilder;
import java.net.MalformedURLException;
import java.net.URL;
public class LocalDependencyResolver implements DependencyResolver {
private File offlineJarDir;
public LocalDependencyResolver(File offlineJarDir) {
super();
this.offlineJarDir = offlineJarDir;
}
@Override
public URL getLocalArtifactUrl(DependencyJar dependency) {
StringBuilder filenameBuilder = new StringBuilder();
filenameBuilder.append(dependency.getArtifactId())
.append("-")
.append(dependency.getVersion());
if (dependency.getClassifier() != null) {
filenameBuilder.append("-")
.append(dependency.getClassifier());
}
filenameBuilder.append(".")
.append(dependency.getType());
return fileToUrl(validateFile(new File(offlineJarDir, filenameBuilder.toString())));
}
/**
* Validates {@code file} is an existing file that is readable.
*
* @param file the File to test
* @return the provided file, if all validation passes
* @throws IllegalArgumentException if validation fails
*/
private static File validateFile(File file) throws IllegalArgumentException {
if (!file.isFile()) {
throw new IllegalArgumentException("Path is not a file: " + file);
}
if (!file.canRead()) {
throw new IllegalArgumentException("Unable to read file: " + file);
}
return file;
}
/** Returns the given file as a {@link URL}. */
private static URL fileToUrl(File file) {
try {
return file.toURI().toURL();
} catch (MalformedURLException e) {
throw new IllegalArgumentException(
String.format("File \"%s\" cannot be represented as a URL: %s", file, e));
}
}
}