Search in sources :

Example 6 with StreamProvider

use of org.apache.karaf.features.internal.download.StreamProvider in project karaf by apache.

the class VerifyMojo method loadRepositories.

public Map<String, Features> loadRepositories(DownloadManager manager, Set<String> uris) throws Exception {
    final Map<String, Features> loaded = new HashMap<>();
    final Downloader downloader = manager.createDownloader();
    FeaturesServiceConfig config = null;
    if (featureProcessingInstructions != null) {
        config = new FeaturesServiceConfig(featureProcessingInstructions.toURI().toString(), null);
    } else {
        config = new FeaturesServiceConfig();
    }
    FeaturesProcessorImpl processor = new FeaturesProcessorImpl(config);
    if (blacklistedDescriptors != null) {
        blacklistedDescriptors.forEach(lp -> processor.getInstructions().getBlacklistedRepositoryLocationPatterns().add(new LocationPattern(lp)));
    }
    processor.getInstructions().getBlacklistedRepositoryLocationPatterns().add(new LocationPattern("mvn:" + selfGroupId + "/" + selfArtifactId));
    for (String repository : uris) {
        if (!processor.isRepositoryBlacklisted(repository)) {
            downloader.download(repository, new DownloadCallback() {

                @Override
                public void downloaded(final StreamProvider provider) throws Exception {
                    synchronized (loaded) {
                        // If provider was already loaded, no need to do it again.
                        if (loaded.containsKey(provider.getUrl())) {
                            return;
                        }
                    }
                    try (InputStream is = provider.open()) {
                        Features featuresModel;
                        if (JacksonUtil.isJson(provider.getUrl())) {
                            featuresModel = JacksonUtil.unmarshal(provider.getUrl());
                        } else {
                            featuresModel = JaxbUtil.unmarshal(provider.getUrl(), is, false);
                        }
                        processor.process(featuresModel);
                        synchronized (loaded) {
                            loaded.put(provider.getUrl(), featuresModel);
                            for (String innerRepository : featuresModel.getRepository()) {
                                if (!processor.isRepositoryBlacklisted(innerRepository)) {
                                    downloader.download(innerRepository, this);
                                }
                            }
                        }
                    }
                }
            });
        }
    }
    downloader.await();
    return loaded;
}
Also used : StreamProvider(org.apache.karaf.features.internal.download.StreamProvider) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) DownloadCallback(org.apache.karaf.features.internal.download.DownloadCallback) ZipInputStream(java.util.zip.ZipInputStream) InputStream(java.io.InputStream) Downloader(org.apache.karaf.features.internal.download.Downloader) MultiException(org.apache.karaf.features.internal.util.MultiException) BundleException(org.osgi.framework.BundleException) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) ResolutionException(org.osgi.service.resolver.ResolutionException) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) FeaturesProcessorImpl(org.apache.karaf.features.internal.service.FeaturesProcessorImpl) LocationPattern(org.apache.karaf.features.LocationPattern) FeaturesServiceConfig(org.apache.karaf.features.internal.service.FeaturesServiceConfig)

Aggregations

StreamProvider (org.apache.karaf.features.internal.download.StreamProvider)6 HashMap (java.util.HashMap)5 IOException (java.io.IOException)4 InputStream (java.io.InputStream)4 LinkedHashMap (java.util.LinkedHashMap)4 Downloader (org.apache.karaf.features.internal.download.Downloader)4 ZipInputStream (java.util.zip.ZipInputStream)3 MultiException (org.apache.karaf.features.internal.util.MultiException)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 MalformedURLException (java.net.MalformedURLException)2 URL (java.net.URL)2 FileSystemNotFoundException (java.nio.file.FileSystemNotFoundException)2 Path (java.nio.file.Path)2 ArrayList (java.util.ArrayList)2 DownloadCallback (org.apache.karaf.features.internal.download.DownloadCallback)2 FileInputStream (java.io.FileInputStream)1 Method (java.lang.reflect.Method)1 URI (java.net.URI)1 URLConnection (java.net.URLConnection)1 FileSystem (java.nio.file.FileSystem)1