blob: 43cb46547e704521807ce199aaa3fb69ab73e11c [file] [log] [blame]
package org.robolectric.internal.dependency;
import org.robolectric.res.FsFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;
public class PropertiesDependencyResolver implements DependencyResolver {
private final Properties properties;
private final FsFile baseDir;
private DependencyResolver delegate;
public PropertiesDependencyResolver(FsFile propertiesFile, DependencyResolver delegate) throws IOException {
this.properties = loadProperties(propertiesFile);
this.baseDir = propertiesFile.getParent();
this.delegate = delegate;
}
private Properties loadProperties(FsFile propertiesFile) throws IOException {
final Properties properties = new Properties();
InputStream stream = propertiesFile.getInputStream();
properties.load(stream);
stream.close();
return properties;
}
@Override
public URL getLocalArtifactUrl(DependencyJar dependency) {
String depShortName = dependency.getShortName();
String path = properties.getProperty(depShortName);
if (path != null) {
File pathFile = new File(path);
if (!pathFile.isAbsolute()) {
pathFile = new File(baseDir.getPath(), path);
}
try {
return pathFile.toURI().toURL();
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
} else {
if (delegate != null) {
return delegate.getLocalArtifactUrl(dependency);
}
}
throw new RuntimeException("no artifacts found for " + dependency);
}
}