You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by pi...@apache.org on 2012/04/26 13:08:35 UTC

svn commit: r1330773 - /karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java

Author: pieber
Date: Thu Apr 26 11:08:35 2012
New Revision: 1330773

URL: http://svn.apache.org/viewvc?rev=1330773&view=rev
Log:
[KARAF-1406] Fixed scanFeatures - fileEdit incompatibility

Signed-off-by: Andreas Pieber <an...@gmail.com>

Modified:
    karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java

Modified: karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java?rev=1330773&r1=1330772&r2=1330773&view=diff
==============================================================================
--- karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java (original)
+++ karaf/trunk/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/KarafTestContainer.java Thu Apr 26 11:08:35 2012
@@ -351,39 +351,53 @@ public class KarafTestContainer implemen
         options.addAll(extractFileOptionsBasedOnFeaturesScannerOptions(subsystem));
         options.addAll(configureBootDelegation(subsystem));
         options.addAll(configureSystemBundles(subsystem));
-        HashMap<String, HashMap<String, KarafDistributionConfigurationFileOption>> optionMap = Maps.newHashMap();
+        HashMap<String, HashMap<String, List<KarafDistributionConfigurationFileOption>>> optionMap = Maps.newHashMap();
         for (KarafDistributionConfigurationFileOption option : options) {
             if (!optionMap.containsKey(option.getConfigurationFilePath())) {
                 optionMap.put(option.getConfigurationFilePath(),
-                    new HashMap<String, KarafDistributionConfigurationFileOption>());
+                    new HashMap<String, List<KarafDistributionConfigurationFileOption>>());
             }
-            HashMap<String, KarafDistributionConfigurationFileOption> optionEntries =
+            HashMap<String, List<KarafDistributionConfigurationFileOption>> optionEntries =
                 optionMap.get(option.getConfigurationFilePath());
-            if (optionEntries.containsKey(option.getKey())) {
-                LOGGER.warn("Key: {} occurs twice; value {} overwritten", option.getKey(),
-                    optionEntries.get(option.getKey()).getValue());
+            if (!optionEntries.containsKey(option.getKey())) {
+                optionEntries.put(option.getKey(), new ArrayList<KarafDistributionConfigurationFileOption>());
+            } else {
+                // if special file warn, replace and continue
+                if (!option.getConfigurationFilePath().equals(FeaturesCfg.FILE_PATH)) {
+                    LOGGER.warn("you're trying to add an additional value to a config file; you're current " +
+                            "value will be replaced.");
+                    optionEntries.put(option.getKey(), new ArrayList<KarafDistributionConfigurationFileOption>());
+                }
             }
-            optionEntries.put(option.getKey(), option);
+            optionEntries.get(option.getKey()).add(option);
         }
         Set<String> configFiles = optionMap.keySet();
         for (String configFile : configFiles) {
-            HANDLING: {
-                KarafPropertiesFile karafPropertiesFile = new KarafPropertiesFile(karafHome, configFile);
-                karafPropertiesFile.load();
-                Collection<KarafDistributionConfigurationFileOption> optionsToApply =
-                    optionMap.get(configFile).values();
-                for (KarafDistributionConfigurationFileOption optionToApply : optionsToApply) {
+
+            KarafPropertiesFile karafPropertiesFile = new KarafPropertiesFile(karafHome, configFile);
+            karafPropertiesFile.load();
+            Collection<List<KarafDistributionConfigurationFileOption>> optionsToApply =
+                optionMap.get(configFile).values();
+            boolean store = true;
+            for (List<KarafDistributionConfigurationFileOption> optionListToApply : optionsToApply) {
+                for (KarafDistributionConfigurationFileOption optionToApply : optionListToApply) {
                     if (optionToApply instanceof KarafDistributionConfigurationFilePutOption) {
                         karafPropertiesFile.put(optionToApply.getKey(), optionToApply.getValue());
                     } else if (optionToApply instanceof KarafDistributionConfigurationFileReplacementOption) {
                         karafPropertiesFile
                             .replace(((KarafDistributionConfigurationFileReplacementOption) optionToApply)
                                 .getSource());
-                        break HANDLING; // we don't need to store in that case; only the first one is relevant.
+                        store = false;
+                        break;
                     } else {
                         karafPropertiesFile.extend(optionToApply.getKey(), optionToApply.getValue());
                     }
                 }
+                if (!store) {
+                    break;
+                }
+            }
+            if (store) {
                 karafPropertiesFile.store();
             }
         }