Search in sources :

Example 1 with Download

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;
    }
}
Also used : RevisionRef(aQute.service.library.Library.RevisionRef) Revision(aQute.service.library.Library.Revision) RevisionRef(aQute.service.library.Library.RevisionRef) Matcher(java.util.regex.Matcher) Coordinate(aQute.service.library.Coordinate) Library(aQute.service.library.Library) URI(java.net.URI) Download(aQute.bnd.jpm.StoredRevisionCache.Download) URISyntaxException(java.net.URISyntaxException) FileNotFoundException(java.io.FileNotFoundException) SocketException(java.net.SocketException) IOException(java.io.IOException)

Aggregations

Download (aQute.bnd.jpm.StoredRevisionCache.Download)1 Coordinate (aQute.service.library.Coordinate)1 Library (aQute.service.library.Library)1 Revision (aQute.service.library.Library.Revision)1 RevisionRef (aQute.service.library.Library.RevisionRef)1 FileNotFoundException (java.io.FileNotFoundException)1 IOException (java.io.IOException)1 SocketException (java.net.SocketException)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 Matcher (java.util.regex.Matcher)1