Bug 4822: Simplify access to configuration variables 85/32185/1
authorLorand Jakab <lojakab@cisco.com>
Wed, 6 Jan 2016 12:09:04 +0000 (14:09 +0200)
committerLorand Jakab <lojakab@cisco.com>
Wed, 6 Jan 2016 12:09:04 +0000 (14:09 +0200)
This patch removes the need to pass on configuration variables as part
of the API. Instead, any class can get access to any configuration
variable by accessing a single static instance of ConfigIni. This opens
up the possibility of adding new knobs to modify behavior of parts of
the code, without the need to change APIs (adding a method call
parameter for each knob).

The patch doesn't change the existing APIs (they should be cleaned up in
Boron timeframe though), but allows new confguration options with no API
changes. The main reason for this patch NOW is Bug 4822, which is
related to the merging of locators, and needs support for a new
configuration option.

Change-Id: I0f3a8680c749034f2b784cd5c24379dc3f589538
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/config/ConfigIni.java

index b349d2193950b96f184d040aa8d09c81a587bedb..366bd6b53de0c56289ba121880c796a866ba6f55 100644 (file)
@@ -57,9 +57,8 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I
 
     private volatile boolean shouldAuthenticate = true;
 
-    private static final ConfigIni configIni = new ConfigIni();
-    private volatile boolean smr = configIni.smrIsSet();
-    private volatile String elpPolicy = configIni.getElpPolicy();
+    private volatile boolean smr = ConfigIni.getInstance().smrIsSet();
+    private volatile String elpPolicy = ConfigIni.getInstance().getElpPolicy();
 
     private ThreadLocal<MapReply> tlsMapReply = new ThreadLocal<MapReply>();
     private ThreadLocal<MapNotify> tlsMapNotify = new ThreadLocal<MapNotify>();
index 6d1937b3541c92e7da528a456d6ef9a8cb512649..855ffff1180136e17217a12636b9e63cbf6c5811 100644 (file)
@@ -91,9 +91,8 @@ public class MappingService implements OdlMappingserviceService, IMappingService
     private BindingAwareBroker bindingAwareBroker;
     private NotificationPublishService notificationPublishService;
 
-    private static final ConfigIni configIni = new ConfigIni();
-    private boolean overwritePolicy = configIni.mappingOverwriteIsSet();
-    private boolean notificationPolicy = configIni.smrIsSet();
+    private boolean overwritePolicy = ConfigIni.getInstance().mappingOverwriteIsSet();
+    private boolean notificationPolicy = ConfigIni.getInstance().smrIsSet();
     private boolean iterateMask = true;
 
     public MappingService() {
index d770d076fa128311b9e826551e318f8aa2263c42..2620651d1eebe9a8a5dc5a404dc32e5b015b86f4 100644 (file)
@@ -13,7 +13,7 @@ import org.osgi.framework.FrameworkUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ConfigIni {
+public final class ConfigIni {
     protected static final Logger LOG = LoggerFactory.getLogger(ConfigIni.class);
     private boolean mappingOverwrite;
     private boolean smr;
@@ -23,7 +23,9 @@ public class ConfigIni {
     private static final String LISP_SMR = "lisp.smr";
     private static final String LISP_ELP_POLICY = "lisp.elpPolicy";
 
-    public ConfigIni() {
+    private static final ConfigIni INSTANCE = new ConfigIni();
+
+    private ConfigIni() {
         Bundle b = FrameworkUtil.getBundle(this.getClass());
         BundleContext context = null;
         if (b != null) {
@@ -128,4 +130,8 @@ public class ConfigIni {
     public String getElpPolicy() {
         return elpPolicy;
     }
+
+    public static ConfigIni getInstance() {
+        return INSTANCE;
+    }
 }