You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/04/23 17:15:58 UTC

git commit: [KARAF-2930] Only use an aggregate repository when needed Add some tests for gzipped repositories

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 <gn...@gmail.com>
Authored: Wed Apr 23 17:06:34 2014 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
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);
+        }
+    }
 }