in command.line/java/jetbrains/buildServer/core/runtime/RuntimeUtil.java [138:171]
public final static File load(URI uri, final File destination, final IProgressMonitor monitor, final Class<?>... urlInterceptors) throws IOException {
if ("file".equals(uri.getScheme())) {
monitor.status(new ProgressStatus(ProgressStatus.OK, String.format("Tool located on filesystem '%s'. Do not download.", uri)));
return new File(uri);
}
//TODO: move to Provisioner???
if ("class".equals(uri.getScheme())) {
final URI original = uri;
uri = resolve(uri, monitor);
if (uri != null) {
monitor.status(new ProgressStatus(ProgressStatus.OK, String.format("Tool location resolved to '%s'", uri)));
} else {
monitor.status(new ProgressStatus(ProgressStatus.OK, String.format("Resolver '%s' does not return any URI", original)));
}
}
//create if required
if (!destination.exists()) {
destination.mkdirs();
destination.createNewFile();
monitor.status(new ProgressStatus(ProgressStatus.OK, String.format("Temporary '%s' file created", destination)));
}
//Remote part
URL url = uri.toURL();
try {
url = intercept(url, monitor, urlInterceptors);
return loadUrl(url, destination, monitor);
} catch (Exception e) {
final IOException ioe = new IOException(e.getMessage());
ioe.initCause(e);
throw ioe;
}
}