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 2017/06/29 06:26:24 UTC
[1/2] karaf git commit: [KARAF-5199] Fix ordering of candidates when
comparing 2 bundles
Repository: karaf
Updated Branches:
refs/heads/master 4f6af4eaa -> 2cfdcadc9
[KARAF-5199] Fix ordering of candidates when comparing 2 bundles
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/9803938c
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/9803938c
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/9803938c
Branch: refs/heads/master
Commit: 9803938c307b4951105b8ac4def8cc5645f042f4
Parents: 4f6af4e
Author: Guillaume Nodet <gn...@apache.org>
Authored: Thu Jun 29 08:19:16 2017 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Thu Jun 29 08:19:16 2017 +0200
----------------------------------------------------------------------
.../internal/region/CandidateComparator.java | 6 ++--
.../features/internal/region/SubsystemTest.java | 22 +++++++++++++
.../karaf/features/internal/region/data10/a.mf | 6 ++++
.../karaf/features/internal/region/data10/b1.mf | 6 ++++
.../karaf/features/internal/region/data10/b2.mf | 6 ++++
.../internal/region/data10/features.xml | 34 ++++++++++++++++++++
6 files changed, 78 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/main/java/org/apache/karaf/features/internal/region/CandidateComparator.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/region/CandidateComparator.java b/features/core/src/main/java/org/apache/karaf/features/internal/region/CandidateComparator.java
index 9fecd4b..9980c1b 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/region/CandidateComparator.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/region/CandidateComparator.java
@@ -81,7 +81,9 @@ public class CandidateComparator implements Comparator<Capability> {
final Resource resource2 = cap2.getResource();
String n1 = ResolverUtil.getSymbolicName(resource1);
String n2 = ResolverUtil.getSymbolicName(resource2);
- c = n1.compareTo(n2);
+ if (n1 != null && n2 != null) {
+ c = n2.compareTo(n1);
+ }
// Resources looks like identical, but it required by different features/subsystems/regions
// so use this difference for deterministic heuristic
if (c == 0) {
@@ -91,7 +93,7 @@ public class CandidateComparator implements Comparator<Capability> {
// In case the owners are the same but with different version, prefer the latest one
// TODO: this may not be fully correct, as we'd need to separate names/versions
// TODO: and do a real version comparison
- c = - o1.compareTo(o2);
+ c = o2.compareTo(o1);
}
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/test/java/org/apache/karaf/features/internal/region/SubsystemTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/region/SubsystemTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/region/SubsystemTest.java
index f6b6563..378f0ce 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/region/SubsystemTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/region/SubsystemTest.java
@@ -305,6 +305,28 @@ public class SubsystemTest {
verify(resolver, expected);
}
+ @Test
+ public void testBundleNoVersion() throws Exception {
+ RepositoryImpl repo = new RepositoryImpl(getClass().getResource("data10/features.xml").toURI());
+
+ Map<String, Set<String>> features = new HashMap<>();
+ addToMapSet(features, "root", "f");
+
+ Map<String, Set<String>> expected = new HashMap<>();
+ addToMapSet(expected, "root", "a/1.0.0");
+ addToMapSet(expected, "root", "b_2_0/0.0.0");
+
+ SubsystemResolver resolver = new SubsystemResolver(this.resolver, new TestDownloadManager(getClass(), "data10"));
+ resolver.prepare(Arrays.asList(repo.getFeatures()),
+ features,
+ Collections.emptyMap());
+ resolver.resolve(Collections.emptySet(),
+ FeaturesService.DEFAULT_FEATURE_RESOLUTION_RANGE,
+ null, null, null);
+
+ verify(resolver, expected);
+ }
+
private void verify(SubsystemResolver resolver, Map<String, Set<String>> expected) {
Map<String, Set<String>> mapping = getBundleNamesPerRegions(resolver);
if (!expected.equals(mapping)) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/a.mf
----------------------------------------------------------------------
diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/a.mf b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/a.mf
new file mode 100644
index 0000000..3c3ebea
--- /dev/null
+++ b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/a.mf
@@ -0,0 +1,6 @@
+Manifest-Version: 1
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: a
+Bundle-Version: 1.0.0
+Import-Package: b
+
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b1.mf
----------------------------------------------------------------------
diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b1.mf b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b1.mf
new file mode 100644
index 0000000..6861e46
--- /dev/null
+++ b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b1.mf
@@ -0,0 +1,6 @@
+Manifest-Version: 1
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: b_1_0
+Bundle-Version: 0
+Export-Package: b
+
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b2.mf
----------------------------------------------------------------------
diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b2.mf b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b2.mf
new file mode 100644
index 0000000..343eab0
--- /dev/null
+++ b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/b2.mf
@@ -0,0 +1,6 @@
+Manifest-Version: 1
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: b_2_0
+Bundle-Version: 0
+Export-Package: b
+
http://git-wip-us.apache.org/repos/asf/karaf/blob/9803938c/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/features.xml
----------------------------------------------------------------------
diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/features.xml b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/features.xml
new file mode 100644
index 0000000..f00c12c
--- /dev/null
+++ b/features/core/src/test/resources/org/apache/karaf/features/internal/region/data10/features.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<features name="test" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <feature name="f">
+ <feature>d</feature>
+ <bundle>a</bundle>
+ </feature>
+
+ <feature name="d" version="1.0">
+ <bundle>b1</bundle>
+ </feature>
+
+ <feature name="d" version="2.0">
+ <bundle>b2</bundle>
+ </feature>
+
+</features>
\ No newline at end of file
[2/2] karaf git commit: [KARAF-5230] Support version range when
installing features The feature is still pre-selected,
but at least it does not reject the feature
Posted by gn...@apache.org.
[KARAF-5230] Support version range when installing features
The feature is still pre-selected, but at least it does not reject the feature
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2cfdcadc
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2cfdcadc
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2cfdcadc
Branch: refs/heads/master
Commit: 2cfdcadc99849e01ffac33b96f139d4fe08369bf
Parents: 9803938
Author: Guillaume Nodet <gn...@apache.org>
Authored: Thu Jun 29 08:26:15 2017 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Thu Jun 29 08:26:15 2017 +0200
----------------------------------------------------------------------
.../internal/service/FeaturesServiceImpl.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/2cfdcadc/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 e27b796..9600f11 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
@@ -793,7 +793,9 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
List<String> featuresToAdd = new ArrayList<>();
List<String> featuresToRemove = new ArrayList<>();
for (String feature : features) {
- feature = normalize(feature);
+ if (!feature.contains(VERSION_SEPARATOR)) {
+ feature += "/0.0.0";
+ }
String name = feature.substring(0, feature.indexOf(VERSION_SEPARATOR));
String version = feature.substring(feature.indexOf(VERSION_SEPARATOR) + 1);
Pattern pattern = Pattern.compile(name);
@@ -837,10 +839,18 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
}
}
featuresToAdd = new ArrayList<>(new LinkedHashSet<>(featuresToAdd));
- print("Adding features: " + join(featuresToAdd), options.contains(Option.Verbose));
+ List<String> featuresToDisplay = new ArrayList<>();
for (String feature : featuresToAdd) {
fl.add(FEATURE_OSGI_REQUIREMENT_PREFIX + feature);
+ String v = feature.substring(feature.indexOf(VERSION_SEPARATOR) + VERSION_SEPARATOR.length());
+ VersionRange vr = new VersionRange(v, true);
+ if (vr.isPointVersion()) {
+ v = feature.substring(0, feature.indexOf(VERSION_SEPARATOR) + VERSION_SEPARATOR.length())
+ + vr.getCeiling().toString();
+ }
+ featuresToDisplay.add(v);
}
+ print("Adding features: " + join(featuresToDisplay), options.contains(Option.Verbose));
Map<String, Map<String, FeatureState>> stateChanges = Collections.emptyMap();
doProvisionInThread(required, stateChanges, state, options);
}