diff options
Diffstat (limited to 'common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java')
-rw-r--r-- | common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java | 273 |
1 files changed, 128 insertions, 145 deletions
diff --git a/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java index 7698d3f8ec..80fbaf8fd0 100644 --- a/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java +++ b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/AggregateConfiguration.java @@ -1,5 +1,30 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed 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. + */ + package org.onap.config.impl; +import static org.onap.config.Constants.LOAD_ORDER_KEY; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; import org.apache.commons.configuration2.CombinedConfiguration; import org.apache.commons.configuration2.Configuration; import org.apache.commons.configuration2.tree.MergeCombiner; @@ -8,166 +33,124 @@ import org.apache.commons.configuration2.tree.UnionCombiner; import org.onap.config.ConfigurationUtils; import org.onap.config.type.ConfigurationMode; -import java.io.File; -import java.net.URL; -import java.util.HashMap; -import java.util.*; - -import static org.onap.config.Constants.LOAD_ORDER_KEY; - -/** - * The type Aggregate configuration. - */ public final class AggregateConfiguration { - private Map<String, Configuration> rootConfig = new HashMap<>(); - private Map<String, Configuration> unionConfig = new HashMap<>(); - private Map<String, Configuration> mergeConfig = new HashMap<>(); - private Map<String, Configuration> overrideConfig = new LinkedHashMap<>(); + private final Map<String, Configuration> rootConfig = new HashMap<>(); + private final Map<String, Configuration> unionConfig = new HashMap<>(); + private final Map<String, Configuration> mergeConfig = new HashMap<>(); + private final Map<String, Configuration> overrideConfig = new LinkedHashMap<>(); - /** - * Instantiates a new Aggregate configuration. - */ - public AggregateConfiguration() { - try { - Class clazz = Class.forName(Thread.currentThread().getStackTrace()[2].getClassName()); - if (!clazz.getCanonicalName() - .equals(ConfigurationImpl.class.getCanonicalName())) { - throw new RuntimeException("Illegal access."); - } - } catch (ClassNotFoundException cfe) { - throw new RuntimeException("Class not found while loading change notifier"); - } - } + public AggregateConfiguration() { - private void addConfig(String path, ConfigurationMode configMode, Configuration config) { - if (configMode != null) { - switch (configMode) { - case MERGE: - mergeConfig.put(path, config); - break; - case OVERRIDE: - overrideConfig.put(path, config); - break; - case UNION: - unionConfig.put(path, config); - break; - default: - } - } else { - rootConfig.put(path, config); + try { + Class clazz = Class.forName(Thread.currentThread().getStackTrace()[2].getClassName()); + if (!clazz.getCanonicalName().equals(ConfigurationImpl.class.getCanonicalName())) { + throw new RuntimeException("Illegal access."); + } + } catch (ClassNotFoundException cfe) { + throw new RuntimeException("Class not found while loading change notifier"); + } } - } - /** - * Add config. - * - * @param file the file - * @throws Exception the exception - */ - public void addConfig(File file) throws Exception { - addConfig(file.getAbsolutePath().toUpperCase(), ConfigurationUtils.getMergeStrategy(file), - ConfigurationUtils.getConfigurationBuilder(file, false).getConfiguration()); - } - - /** - * Add config. - * - * @param url the url - * @throws Exception the exception - */ - public void addConfig(URL url) throws Exception { - addConfig(url.getFile().toUpperCase(), ConfigurationUtils.getMergeStrategy(url), - ConfigurationUtils.getConfigurationBuilder(url).getConfiguration()); - } - - /** - * Remove config. - * - * @param file the file - */ - public void removeConfig(File file) { - String key = file.getAbsolutePath().toUpperCase(); - if (rootConfig.containsKey(key)) { - rootConfig.remove(key); - } else if (mergeConfig.containsKey(key)) { - mergeConfig.remove(key); - } else if (unionConfig.containsKey(key)) { - unionConfig.remove(key); - } else if (overrideConfig.containsKey(key)) { - overrideConfig.remove(key); + public void addConfig(File file) throws Exception { + addConfig(file.getAbsolutePath().toUpperCase(), ConfigurationUtils.getMergeStrategy(file), + ConfigurationUtils.getConfigurationBuilder(file, false).getConfiguration()); } - } - - /** - * Contains config boolean. - * - * @param file the file - * @return the boolean - */ - public boolean containsConfig(File file) { - String key = file.getAbsolutePath().toUpperCase(); - return rootConfig.containsKey(key) || mergeConfig.containsKey(key) - || unionConfig.containsKey(key) || overrideConfig.containsKey(key); - } - /** - * Gets final configuration. - * - * @return the final configuration - */ - public Configuration getFinalConfiguration() { - CombinedConfiguration ccRoot = new CombinedConfiguration(new MergeCombiner()); - ArrayList<Configuration> tempList = new ArrayList<>(rootConfig.values()); - Collections.sort(tempList, this::sortForMerge); - for (Configuration conf : tempList) { - ccRoot.addConfiguration(conf); + private void addConfig(String path, ConfigurationMode configMode, Configuration config) { + if (configMode != null) { + switch (configMode) { + case MERGE: + mergeConfig.put(path, config); + break; + case OVERRIDE: + overrideConfig.put(path, config); + break; + case UNION: + unionConfig.put(path, config); + break; + default: + } + } else { + rootConfig.put(path, config); + } } - CombinedConfiguration ccMergeRoot = new CombinedConfiguration(new MergeCombiner()); - ccMergeRoot.addConfiguration(ccRoot); - tempList = new ArrayList<>(mergeConfig.values()); - Collections.sort(tempList, this::sortForMerge); - for (Configuration conf : tempList) { - ccMergeRoot.addConfiguration(conf); - } - CombinedConfiguration ccUnionRoot = new CombinedConfiguration(new UnionCombiner()); - ccUnionRoot.addConfiguration(ccMergeRoot); - for (Configuration conf : unionConfig.values()) { - ccUnionRoot.addConfiguration(conf); - } - ArrayList<Configuration> tempOverrideConfigs = new ArrayList<>(overrideConfig.values()); - Collections.reverse(tempOverrideConfigs); - Collections.sort(tempOverrideConfigs, this::sortForOverride); - CombinedConfiguration ccOverrideRoot = new CombinedConfiguration(new OverrideCombiner()); - for (Configuration conf : tempOverrideConfigs) { - ccOverrideRoot.addConfiguration(conf); + + public void addConfig(URL url) throws Exception { + addConfig(url.getFile().toUpperCase(), ConfigurationUtils.getMergeStrategy(url), + ConfigurationUtils.getConfigurationBuilder(url).getConfiguration()); } - ccOverrideRoot.addConfiguration(ccUnionRoot); - return ccOverrideRoot; - } - private int sortForOverride(Configuration conf1, Configuration conf2){ - String order1 = conf1.getString(LOAD_ORDER_KEY); - String order2 = conf2.getString(LOAD_ORDER_KEY); - if (ConfigurationUtils.isBlank(order1) || !order1.trim().matches("\\d+")){ - order1 = "0"; + public void removeConfig(File file) { + String key = file.getAbsolutePath().toUpperCase(); + if (rootConfig.containsKey(key)) { + rootConfig.remove(key); + } else if (mergeConfig.containsKey(key)) { + mergeConfig.remove(key); + } else if (unionConfig.containsKey(key)) { + unionConfig.remove(key); + } else if (overrideConfig.containsKey(key)) { + overrideConfig.remove(key); + } } - if (ConfigurationUtils.isBlank(order2) || !order2.trim().matches("\\d+")){ - order2 = "0"; + + public boolean containsConfig(File file) { + String key = file.getAbsolutePath().toUpperCase(); + return rootConfig.containsKey(key) || mergeConfig.containsKey(key) || unionConfig.containsKey(key) + || overrideConfig.containsKey(key); } - return Integer.parseInt(order2.trim())-Integer.parseInt(order1.trim()); - } - private int sortForMerge(Configuration conf1, Configuration conf2){ - String order1 = conf1.getString(LOAD_ORDER_KEY); - String order2 = conf2.getString(LOAD_ORDER_KEY); - if (ConfigurationUtils.isBlank(order1) || !order1.trim().matches("\\d+")){ - order1 = "0"; + public Configuration getFinalConfiguration() { + CombinedConfiguration ccRoot = new CombinedConfiguration(new MergeCombiner()); + ArrayList<Configuration> tempList = new ArrayList<>(rootConfig.values()); + tempList.sort(this::sortForMerge); + for (Configuration conf : tempList) { + ccRoot.addConfiguration(conf); + } + CombinedConfiguration ccMergeRoot = new CombinedConfiguration(new MergeCombiner()); + ccMergeRoot.addConfiguration(ccRoot); + tempList = new ArrayList<>(mergeConfig.values()); + tempList.sort(this::sortForMerge); + for (Configuration conf : tempList) { + ccMergeRoot.addConfiguration(conf); + } + CombinedConfiguration ccUnionRoot = new CombinedConfiguration(new UnionCombiner()); + ccUnionRoot.addConfiguration(ccMergeRoot); + for (Configuration conf : unionConfig.values()) { + ccUnionRoot.addConfiguration(conf); + } + ArrayList<Configuration> tempOverrideConfigs = new ArrayList<>(overrideConfig.values()); + Collections.reverse(tempOverrideConfigs); + tempOverrideConfigs.sort(this::sortForOverride); + CombinedConfiguration ccOverrideRoot = new CombinedConfiguration(new OverrideCombiner()); + for (Configuration conf : tempOverrideConfigs) { + ccOverrideRoot.addConfiguration(conf); + } + ccOverrideRoot.addConfiguration(ccUnionRoot); + return ccOverrideRoot; } - if (ConfigurationUtils.isBlank(order2) || !order2.trim().matches("\\d+")){ - order2 = "0"; + + private int sortForOverride(Configuration conf1, Configuration conf2) { + String order1 = conf1.getString(LOAD_ORDER_KEY); + String order2 = conf2.getString(LOAD_ORDER_KEY); + if (ConfigurationUtils.isBlank(order1) || !order1.trim().matches("\\d+")) { + order1 = "0"; + } + if (ConfigurationUtils.isBlank(order2) || !order2.trim().matches("\\d+")) { + order2 = "0"; + } + return Integer.parseInt(order2.trim()) - Integer.parseInt(order1.trim()); } - return Integer.parseInt(order1.trim())-Integer.parseInt(order2.trim()); - } + private int sortForMerge(Configuration conf1, Configuration conf2) { + String order1 = conf1.getString(LOAD_ORDER_KEY); + String order2 = conf2.getString(LOAD_ORDER_KEY); + if (ConfigurationUtils.isBlank(order1) || !order1.trim().matches("\\d+")) { + order1 = "0"; + } + if (ConfigurationUtils.isBlank(order2) || !order2.trim().matches("\\d+")) { + order2 = "0"; + } + return Integer.parseInt(order1.trim()) - Integer.parseInt(order2.trim()); + } } |