diff options
Diffstat (limited to 'common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java')
-rw-r--r-- | common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java index 358e5535..a368d25f 100644 --- a/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java +++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterService.java @@ -1,19 +1,20 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -24,37 +25,32 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; /** * The parameter service makes ONAP PF parameter groups available to all classes in a JVM. - * + * * <p>The reason for having a parameter service is to avoid having to pass parameters down long call chains in modules * such as PDPs and editors. The parameter service makes correct and verified parameters available statically. - * + * * <p>The parameter service must be used with care because changing a parameter set anywhere in a JVM will affect all * users of those parameters anywhere in the JVM. * * @author Liam Fallon (liam.fallon@ericsson.com) */ -public abstract class ParameterService { +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class ParameterService { // The map holding the parameters private static Map<String, ParameterGroup> parameterGroupMap = new ConcurrentHashMap<>(); /** - * This class is an abstract static class that cannot be extended. - */ - private ParameterService() { - } - - /** * Register a parameter group with the parameter service. * * @param parameterGroup the parameter group */ public static void register(final ParameterGroup parameterGroup) { - if (!parameterGroupMap.containsKey(parameterGroup.getName())) { - parameterGroupMap.put(parameterGroup.getName(), parameterGroup); - } else { + if (parameterGroupMap.putIfAbsent(parameterGroup.getName(), parameterGroup) != null) { throw new ParameterRuntimeException( "\"" + parameterGroup.getName() + "\" already registered in parameter service"); } @@ -70,7 +66,7 @@ public abstract class ParameterService { if (overwrite && parameterGroupMap.containsKey(parameterGroup.getName())) { deregister(parameterGroup); } - + register(parameterGroup); } @@ -80,9 +76,7 @@ public abstract class ParameterService { * @param parameterGroupName the name of the parameter group */ public static void deregister(final String parameterGroupName) { - if (parameterGroupMap.containsKey(parameterGroupName)) { - parameterGroupMap.remove(parameterGroupName); - } else { + if (parameterGroupMap.remove(parameterGroupName) == null) { throw new ParameterRuntimeException("\"" + parameterGroupName + "\" not registered in parameter service"); } } @@ -104,7 +98,7 @@ public abstract class ParameterService { */ public static <T extends ParameterGroup> T get(final String parameterGroupName) { @SuppressWarnings("unchecked") - final T parameterGroup = (T) parameterGroupMap.get(parameterGroupName); + final var parameterGroup = (T) parameterGroupMap.get(parameterGroupName); if (parameterGroup == null) { throw new ParameterRuntimeException("\"" + parameterGroupName + "\" not found in parameter service"); @@ -120,7 +114,7 @@ public abstract class ParameterService { * @return true if the parameter is defined */ public static boolean contains(final String parameterGroupName) { - return parameterGroupMap.containsKey(parameterGroupName) && parameterGroupMap.get(parameterGroupName) != null; + return parameterGroupMap.get(parameterGroupName) != null; } /** |