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);
+ }
+ }
}