Repository: karaf Updated Branches: refs/heads/master 96a0920c6 -> 9a7523341
[KARAF-2930] Only use an aggregate repository when needed Add some tests for gzipped repositories Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/9a752334 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/9a752334 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/9a752334 Branch: refs/heads/master Commit: 9a75233414b5ca0e0097572ff680c38fe7f49a95 Parents: 96a0920 Author: Guillaume Nodet <[email protected]> Authored: Wed Apr 23 17:06:34 2014 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Wed Apr 23 17:06:34 2014 +0200 ---------------------------------------------------------------------- .../karaf/features/internal/osgi/Activator.java | 7 +++- .../internal/repository/RepositoryTest.java | 41 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/9a752334/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java index 95665fa..4066dfa 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java @@ -142,7 +142,12 @@ public class Activator extends BaseActivator { logger.warn("Unrecognized resource repository: " + url); } } - Repository globalRepository = repositories.isEmpty() ? null : new AggregateRepository(repositories); + Repository globalRepository; + switch (repositories.size()) { + case 0: globalRepository = null; break; + case 1: globalRepository = repositories.get(0); break; + default: globalRepository = new AggregateRepository(repositories); break; + } FeatureConfigInstaller configInstaller = new FeatureConfigInstaller(configurationAdmin); String overrides = getString("overrides", new File(System.getProperty("karaf.etc"), "overrides.properties").toURI().toString()); http://git-wip-us.apache.org/repos/asf/karaf/blob/9a752334/features/core/src/test/java/org/apache/karaf/features/internal/repository/RepositoryTest.java ---------------------------------------------------------------------- diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/repository/RepositoryTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/repository/RepositoryTest.java index c05eea0..46e8e04 100644 --- a/features/core/src/test/java/org/apache/karaf/features/internal/repository/RepositoryTest.java +++ b/features/core/src/test/java/org/apache/karaf/features/internal/repository/RepositoryTest.java @@ -18,11 +18,19 @@ */ package org.apache.karaf.features.internal.repository; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.URL; +import java.util.zip.GZIPOutputStream; import org.junit.Test; import org.osgi.resource.Resource; +import static org.apache.karaf.util.StreamUtils.close; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.osgi.framework.namespace.BundleNamespace.BUNDLE_NAMESPACE; @@ -45,6 +53,22 @@ public class RepositoryTest { verify(repo); } + @Test + public void testXmlGzip() throws Exception { + URL url = getClass().getResource("repo.xml"); + url = gzip(url); + XmlRepository repo = new XmlRepository(url.toExternalForm()); + verify(repo); + } + + @Test + public void testJsonGzip() throws Exception { + URL url = getClass().getResource("repo.json"); + url = gzip(url); + JsonRepository repo = new JsonRepository(url.toExternalForm()); + verify(repo); + } + private void verify(BaseRepository repo) { assertNotNull(repo.getResources()); assertEquals(1, repo.getResources().size()); @@ -55,4 +79,21 @@ public class RepositoryTest { assertEquals(1, resource.getCapabilities(PACKAGE_NAMESPACE).size()); assertEquals(1, resource.getRequirements(PACKAGE_NAMESPACE).size()); } + + private URL gzip(URL url) throws IOException { + File temp = File.createTempFile("repo", ".tmp"); + OutputStream os = new GZIPOutputStream(new FileOutputStream(temp)); + InputStream is = url.openStream(); + copy(is, os); + close(is, os); + return temp.toURI().toURL(); + } + + private void copy(InputStream inputStream, OutputStream outputStream) throws IOException { + byte[] buffer = new byte[4096]; + int n = 0; + while (-1 != (n = inputStream.read(buffer))) { + outputStream.write(buffer, 0, n); + } + } }
