You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2017/08/17 14:29:54 UTC
[02/27] karaf git commit: [KARAF-5308] Use upfront loading for
repositories
[KARAF-5308] Use upfront loading for repositories
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a75fabaf
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a75fabaf
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a75fabaf
Branch: refs/heads/model_features
Commit: a75fabaf071b8274c7f266affa7ce7cdd87a2a22
Parents: eb95bce
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Aug 15 15:39:26 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Aug 15 15:39:26 2017 +0200
----------------------------------------------------------------------
.../internal/service/FeaturesServiceImpl.java | 15 ++++----
.../internal/service/RepositoryCache.java | 7 ++--
.../internal/service/RepositoryImpl.java | 25 +++++--------
.../apache/karaf/features/RepositoryTest.java | 3 +-
.../internal/service/BlacklistTest.java | 23 ++++++------
.../features/internal/service/DeployerTest.java | 5 ---
.../service/FeaturesValidationTest.java | 37 +++++++++++---------
7 files changed, 52 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
index 90f4969..27ccf97 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
@@ -254,15 +254,14 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
public void registerListener(FeaturesListener listener) {
listeners.add(listener);
try {
- Set<String> repositories = new TreeSet<>();
+ Set<String> repositoriesList = new TreeSet<>();
Map<String, Set<String>> installedFeatures = new TreeMap<>();
synchronized (lock) {
- repositories.addAll(state.repositories);
+ repositoriesList.addAll(state.repositories);
installedFeatures.putAll(copy(state.installedFeatures));
}
- Blacklist blacklist = new Blacklist(cfg.blacklisted);
- for (String uri : repositories) {
- Repository repository = new RepositoryImpl(URI.create(uri), blacklist);
+ for (String uri : repositoriesList) {
+ Repository repository = repositories.create(URI.create(uri), false);
listener.repositoryEvent(new RepositoryEvent(repository, RepositoryEvent.EventType.RepositoryAdded, true));
}
for (Map.Entry<String, Set<String>> entry : installedFeatures.entrySet()) {
@@ -357,7 +356,7 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
@Override
public void addRepository(URI uri, boolean install) throws Exception {
- Repository repository = repositories.create(uri, true, true);
+ Repository repository = repositories.create(uri, true);
synchronized (lock) {
repositories.addRepository(repository);
featureCache = null;
@@ -610,7 +609,7 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
}
try {
if (repo == null) {
- repo = repositories.create(URI.create(uri), true, false);
+ repo = repositories.create(URI.create(uri), false);
synchronized (lock) {
repositories.addRepository(repo);
}
@@ -979,7 +978,7 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
@Override
public Repository createRepository(URI uri) throws Exception {
- return repositories.create(uri, true, true);
+ return repositories.create(uri, true);
}
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryCache.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryCache.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryCache.java
index 4898566..801ffeb 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryCache.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryCache.java
@@ -38,11 +38,8 @@ public class RepositoryCache {
this.blacklist = blacklist;
}
- public Repository create(URI uri, boolean load, boolean validate) throws Exception {
- RepositoryImpl repo = new RepositoryImpl(uri, blacklist);
- if (load)
- repo.load(validate);
- return repo;
+ public Repository create(URI uri, boolean validate) throws Exception {
+ return new RepositoryImpl(uri, blacklist, validate);
}
public void addRepository(Repository repository) throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java
index 0bdc174..0e9d703 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java
@@ -38,51 +38,44 @@ public class RepositoryImpl implements Repository {
private Features features;
public RepositoryImpl(URI uri) {
- this(uri, null);
+ this(uri, null, false);
}
- public RepositoryImpl(URI uri, Blacklist blacklist) {
+ public RepositoryImpl(URI uri, Blacklist blacklist, boolean validate) {
this.uri = uri;
this.blacklist = blacklist;
+ load(validate);
}
public URI getURI() {
return uri;
}
- public String getName() throws IOException {
- load();
+ public String getName() {
return features.getName();
}
- public URI[] getRepositories() throws IOException {
- load();
+ public URI[] getRepositories() {
return features.getRepository().stream()
.map(String::trim)
.map(URI::create)
.toArray(URI[]::new);
}
- public URI[] getResourceRepositories() throws IOException {
- load();
+ public URI[] getResourceRepositories() {
return features.getResourceRepository().stream()
.map(String::trim)
.map(URI::create)
.toArray(URI[]::new);
}
- public Feature[] getFeatures() throws IOException {
- load();
+ public Feature[] getFeatures() {
return features.getFeature()
.toArray(new Feature[features.getFeature().size()]);
}
- public void load() throws IOException {
- load(false);
- }
-
- public void load(boolean validate) throws IOException {
+ private void load(boolean validate) {
if (features == null) {
try (
InputStream inputStream = new InterruptibleInputStream(uri.toURL().openStream())
@@ -92,7 +85,7 @@ public class RepositoryImpl implements Repository {
blacklist.blacklist(features);
}
} catch (Exception e) {
- throw new IOException(e.getMessage() + " : " + uri, e);
+ throw new RuntimeException(e.getMessage() + " : " + uri, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java b/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java
index c630c6f..a6c7ede 100644
--- a/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java
@@ -177,9 +177,8 @@ public class RepositoryTest extends TestCase {
public void testShowWrongUriInException() throws Exception {
String uri = "src/test/resources/org/apache/karaf/shell/features/repo1.xml";
- RepositoryImpl r = new RepositoryImpl(new URI(uri));
try {
- r.load();
+ new RepositoryImpl(new URI(uri));
} catch (Exception e) {
assertTrue(e.getMessage().contains(uri));
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/test/java/org/apache/karaf/features/internal/service/BlacklistTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/service/BlacklistTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/service/BlacklistTest.java
index 9d09e56..956d04b 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/service/BlacklistTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/service/BlacklistTest.java
@@ -18,14 +18,14 @@ package org.apache.karaf.features.internal.service;
import static org.junit.Assert.assertTrue;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Stream;
import org.apache.karaf.features.BundleInfo;
-import org.apache.karaf.features.internal.model.Feature;
-import org.apache.karaf.features.internal.model.Features;
-import org.apache.karaf.features.internal.model.JaxbUtil;
+import org.apache.karaf.features.Feature;
import org.junit.Test;
public class BlacklistTest {
@@ -56,12 +56,15 @@ public class BlacklistTest {
assertTrue(bundles.noneMatch(b -> b.getLocation().equals(blacklisted)));
}
- private Stream<Feature> blacklistWith(String blacklistClause) {
- URL url = getClass().getResource("f02.xml");
- Features features = JaxbUtil.unmarshal(url.toExternalForm(), true);
-
+ private Stream<org.apache.karaf.features.Feature> blacklistWith(String blacklistClause) {
+ URI uri;
+ try {
+ uri = getClass().getResource("f02.xml").toURI();
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
Blacklist blacklist = new Blacklist(Collections.singletonList(blacklistClause));
- blacklist.blacklist(features);
- return features.getFeature().stream();
+ RepositoryImpl features = new RepositoryImpl(uri, blacklist, true);
+ return Arrays.asList(features.getFeatures()).stream();
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java
index c9cc4ae..a08d7c5 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java
@@ -71,7 +71,6 @@ public class DeployerTest {
TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir);
RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI());
- repo.load(true);
Feature f100 = repo.getFeatures()[0];
Feature f101 = repo.getFeatures()[1];
@@ -145,7 +144,6 @@ public class DeployerTest {
TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir);
RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI());
- repo.load(true);
Feature f100 = repo.getFeatures()[0];
Feature f101 = repo.getFeatures()[1];
@@ -247,7 +245,6 @@ public class DeployerTest {
TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir);
RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI());
- repo.load(true);
Feature f1 = repo.getFeatures()[0];
Bundle serviceBundle = createTestBundle(1, Bundle.ACTIVE, dataDir, "a100");
@@ -318,7 +315,6 @@ public class DeployerTest {
TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir);
RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI());
- repo.load(true);
Feature f1 = repo.getFeatures()[0];
Feature f2 = repo.getFeatures()[1];
@@ -479,7 +475,6 @@ public class DeployerTest {
TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir);
RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI());
- repo.load(true);
Map<String, Bundle> bundles = new HashMap<>();
bundles.put("a100", createTestBundle(1, Bundle.ACTIVE, dataDir, "a100"));
http://git-wip-us.apache.org/repos/asf/karaf/blob/a75fabaf/features/core/src/test/java/org/apache/karaf/features/internal/service/FeaturesValidationTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/service/FeaturesValidationTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/service/FeaturesValidationTest.java
index 09badc5..e21c854 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/service/FeaturesValidationTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/service/FeaturesValidationTest.java
@@ -24,28 +24,28 @@ import static org.junit.Assert.fail;
import java.net.URI;
+import org.apache.karaf.features.Feature;
import org.apache.karaf.features.Library;
-import org.apache.karaf.features.internal.model.Features;
-import org.apache.karaf.features.internal.model.JaxbUtil;
+import org.apache.karaf.features.Repository;
import org.junit.Test;
public class FeaturesValidationTest {
@Test
public void testNs10() throws Exception {
- Features features = unmarshalAndValidate("f02.xml");
+ Repository features = unmarshalAndValidate("f02.xml");
assertNotNull(features);
}
@Test
public void testNs10NoName() throws Exception {
- Features features = unmarshalAndValidate("f03.xml");
+ Repository features = unmarshalAndValidate("f03.xml");
assertNotNull(features);
}
@Test
public void testNs11() throws Exception {
- Features features = unmarshalAndValidate("f04.xml");;
+ Repository features = unmarshalAndValidate("f04.xml");;
assertNotNull(features);
}
@@ -61,27 +61,30 @@ public class FeaturesValidationTest {
@Test
public void testNs12Unmarshall() throws Exception {
- Features features = unmarshalAndValidate("f06.xml");
+ Repository features = unmarshalAndValidate("f06.xml");
assertNotNull(features);
}
@Test
public void testNs13() throws Exception {
- Features features = unmarshalAndValidate("f07.xml");
+ Repository features = unmarshalAndValidate("f07.xml");
assertNotNull(features);
- assertEquals("2.5.6.SEC02", features.getFeature().get(0).getVersion());
- assertTrue(features.getFeature().get(1).isHidden());
- assertNotNull(features.getFeature().get(1).getLibraries());
- assertEquals(1, features.getFeature().get(0).getLibraries().size());
- assertEquals("my-library", features.getFeature().get(0).getLibraries().get(0).getLocation());
- assertEquals(Library.TYPE_ENDORSED, features.getFeature().get(0).getLibraries().get(0).getType());
- assertFalse(features.getFeature().get(0).getLibraries().get(0).isExport());
- assertTrue(features.getFeature().get(0).getLibraries().get(0).isDelegate());
+ Feature f0 = features.getFeatures()[0];
+ Feature f1 = features.getFeatures()[1];
+ assertEquals("2.5.6.SEC02", f0.getVersion());
+ assertTrue(f1.isHidden());
+ assertNotNull(f1.getLibraries());
+ assertEquals(1, f0.getLibraries().size());
+ Library lib = f0.getLibraries().get(0);
+ assertEquals("my-library", lib.getLocation());
+ assertEquals(Library.TYPE_ENDORSED, lib.getType());
+ assertFalse(lib.isExport());
+ assertTrue(lib.isDelegate());
}
- private Features unmarshalAndValidate(String path) throws Exception {
+ private Repository unmarshalAndValidate(String path) throws Exception {
URI uri = getClass().getResource(path).toURI();
- return JaxbUtil.unmarshal(uri.toASCIIString(), true);
+ return new RepositoryImpl(uri, null, true);
}
}