[KARAF-2753] Fix potential parsing problem with overrides Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a33fd100 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a33fd100 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a33fd100
Branch: refs/heads/master Commit: a33fd100e7a27ddf6cc652f8e9414f7b98a7227d Parents: cb7e77d Author: Guillaume Nodet <[email protected]> Authored: Thu Mar 6 12:03:14 2014 +0100 Committer: Guillaume Nodet <[email protected]> Committed: Thu Mar 6 12:15:13 2014 +0100 ---------------------------------------------------------------------- .../karaf/features/internal/Overrides.java | 9 ++++---- .../karaf/features/internal/OverridesTest.java | 21 ++++++++++++++++++ .../features/internal/overrides.properties | 23 ++++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/a33fd100/features/core/src/main/java/org/apache/karaf/features/internal/Overrides.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/Overrides.java b/features/core/src/main/java/org/apache/karaf/features/internal/Overrides.java index 8c7d468..dab988a 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/Overrides.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/Overrides.java @@ -22,6 +22,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -47,7 +48,7 @@ public class Overrides { private static final Logger LOGGER = LoggerFactory.getLogger(Overrides.class); - private static final String OVERRIDE_RANGE = "range"; + protected static final String OVERRIDE_RANGE = "range"; private static final String VENDOR_WARNING = "Bundle Vendor has changed, please check if this is intentional. Bundle: "; /** @@ -169,10 +170,8 @@ public class Overrides { while ((line = reader.readLine()) != null) { line = line.trim(); if (!line.isEmpty() && !line.startsWith("#")) { - Clause[] cs = Parser.parseHeader(line); - for (Clause c : cs) { - overrides.add(c); - } + Clause[] cs = Parser.parseClauses(new String[]{line}); + Collections.addAll(overrides, cs); } } } finally { http://git-wip-us.apache.org/repos/asf/karaf/blob/a33fd100/features/core/src/test/java/org/apache/karaf/features/internal/OverridesTest.java ---------------------------------------------------------------------- diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/OverridesTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/OverridesTest.java index 79e2015..99feb32 100644 --- a/features/core/src/test/java/org/apache/karaf/features/internal/OverridesTest.java +++ b/features/core/src/test/java/org/apache/karaf/features/internal/OverridesTest.java @@ -26,6 +26,7 @@ import java.io.Writer; import java.util.Arrays; import java.util.List; +import org.apache.felix.utils.manifest.Clause; import org.apache.karaf.features.BundleInfo; import org.apache.karaf.features.internal.model.Bundle; import org.junit.Before; @@ -201,6 +202,26 @@ public class OverridesTest { assertEquals(b100.toURI().toString(), out.getLocation()); } + @Test + public void testLoadOverrides() { + List<Clause> overrides = Overrides.loadOverrides(getClass().getResource("overrides.properties").toExternalForm()); + assertEquals(2, overrides.size()); + + Clause karafAdminCommand = null; + Clause karafAdminCore = null; + for (Clause clause : overrides) { + if (clause.getName().equals("mvn:org.apache.karaf.admin/org.apache.karaf.admin.command/2.3.0.redhat-61033X")) { + karafAdminCommand = clause; + } + if (clause.getName().equals("mvn:org.apache.karaf.admin/org.apache.karaf.admin.core/2.3.0.redhat-61033X")) { + karafAdminCore = clause; + } + } + assertNotNull("Missing admin.command bundle override", karafAdminCommand); + assertNotNull("Missing admin.core bundle override", karafAdminCore); + assertNotNull("Missing range on admin.core override", karafAdminCore.getAttribute(Overrides.OVERRIDE_RANGE)); + } + /** * Copies the content of {@link java.io.InputStream} to {@link java.io.OutputStream}. * http://git-wip-us.apache.org/repos/asf/karaf/blob/a33fd100/features/core/src/test/resources/org/apache/karaf/features/internal/overrides.properties ---------------------------------------------------------------------- diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/overrides.properties b/features/core/src/test/resources/org/apache/karaf/features/internal/overrides.properties new file mode 100644 index 0000000..d34fa7e --- /dev/null +++ b/features/core/src/test/resources/org/apache/karaf/features/internal/overrides.properties @@ -0,0 +1,23 @@ + +################################################################################ +# +# 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. +# +################################################################################ + +# Sample etc/overrides.properties file for testing purposes +mvn:org.apache.karaf.admin/org.apache.karaf.admin.command/2.3.0.redhat-61033X +mvn:org.apache.karaf.admin/org.apache.karaf.admin.core/2.3.0.redhat-61033X;range=[2.3.0,2.5)
