Repository: karaf Updated Branches: refs/heads/master 67744469a -> 84b1981fe
[KARAF-2752] Small refactoring Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/84b1981f Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/84b1981f Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/84b1981f Branch: refs/heads/master Commit: 84b1981fe26f974414c9b7e7b768fddc8c1cd1db Parents: c0c373d Author: Christian Schneider <[email protected]> Authored: Thu Jan 14 13:42:51 2016 +0100 Committer: Christian Schneider <[email protected]> Committed: Thu Jan 14 13:43:04 2016 +0100 ---------------------------------------------------------------------- .../features/internal/service/Overrides.java | 43 ++++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/84b1981f/features/core/src/main/java/org/apache/karaf/features/internal/service/Overrides.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/Overrides.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/Overrides.java index f78870c..4e171e1 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/service/Overrides.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/Overrides.java @@ -71,35 +71,42 @@ public final class Overrides { public static <T extends Resource> void override(Map<String, T> resources, Collection<String> overrides) { // Do override replacement for (Clause override : Parser.parseClauses(overrides.toArray(new String[overrides.size()]))) { - String url = override.getName(); - String vr = override.getAttribute(OVERRIDE_RANGE); - T over = resources.get(url); + String overrideRange = override.getAttribute(OVERRIDE_RANGE); + T over = resources.get(override.getName()); if (over == null) { // Ignore invalid overrides continue; } for (String uri : new ArrayList<String>(resources.keySet())) { Resource res = resources.get(uri); - if (getSymbolicName(res).equals(getSymbolicName(over))) { - VersionRange range; - if (vr == null) { - // default to micro version compatibility - Version v1 = getVersion(res); - Version v2 = new Version(v1.getMajor(), v1.getMinor() + 1, 0); - range = new VersionRange(false, v1, v2, true); - } else { - range = VersionRange.parseVersionRange(vr); - } - // The resource matches, so replace it with the overridden resource - // if the override is actually a newer version than what we currently have - if (range.contains(getVersion(over)) && getVersion(res).compareTo(getVersion(over)) < 0) { - resources.put(uri, over); - } + if (shouldOverride(res, over, overrideRange)) { + resources.put(uri, over); } } } } + /** + * @param resource resource to be overriden + * @param explicitRange range set on the override clause + * @return if the resource should be overriden by the given override + */ + private static <T extends Resource> boolean shouldOverride(Resource resource, T override, String explicitRange) { + if (!getSymbolicName(resource).equals(getSymbolicName(override))) { + return false; + } + VersionRange range; + if (explicitRange == null) { + // default to micro version compatibility + Version v1 = getVersion(resource); + Version v2 = new Version(v1.getMajor(), v1.getMinor() + 1, 0); + range = new VersionRange(false, v1, v2, true); + } else { + range = VersionRange.parseVersionRange(explicitRange); + } + return range.contains(getVersion(override)) && getVersion(resource).compareTo(getVersion(override)) < 0; + } + public static Set<String> loadOverrides(String overridesUrl) { Set<String> overrides = new HashSet<String>(); try {
