use of aQute.bnd.jpm.StoredRevisionCache.Download in project bnd by bndtools.
the class Repository method dropTarget.
public boolean dropTarget(URI uri) throws Exception {
try {
init();
//
// On Linux we seem to get some spurious text. One case it added the
// text of the version after the URI. So we remove anything after
// the new line
//
String t = uri.toString().trim();
int n = t.indexOf('\n');
if (n > 0) {
uri = new URI(t.substring(0, n));
logger.debug("dropTarget cleaned up from {} to {}", t, uri);
}
RevisionRef ref;
logger.debug("dropTarget {}", uri);
String uriString = uri.toString();
Matcher m = JPM_REVISION_URL_PATTERN.matcher(uriString);
if (!m.matches()) {
if (depositoryGroup != null || depositoryName != null)
return false;
if (!Boolean.getBoolean("jpm4j.in.test") && uri.getScheme().equalsIgnoreCase("file"))
return false;
//
// See if it is a bundle
//
Download d = getCache().doDownload(uri);
if (d == null) {
return false;
}
ref = analyze(d.tmp, uri);
if (ref == null) {
logger.debug("not a proper url to drop {}", uri);
IO.delete(d.tmp);
return false;
}
getCache().makePermanent(ref, d);
} else {
Revision revision = getRevision(new Coordinate(m.group(1), m.group(2), m.group(3), m.group(4)));
if (revision == null) {
reporter.error("no revision found for %s", uri);
return false;
}
ref = new RevisionRef(revision);
}
Library.RevisionRef resource = index.getRevisionRef(ref.revision);
if (resource != null) {
resource.urls.add(uri);
// we know that we modified a resource so the index is dirty
index.save(true);
logger.debug("resource already loaded {}", uri);
return true;
}
logger.debug("adding revision {}", ref);
add(ref);
return true;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
Aggregations