Backward compatibility change for Configuration Service 20/4920/2
authorAlessandro Boch <aboch@cisco.com>
Mon, 27 Jan 2014 18:17:48 +0000 (10:17 -0800)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 29 Jan 2014 04:19:32 +0000 (04:19 +0000)
- Now that config save is no longer bound to infinispan cache type
  contraint of ConcurrentMap, need to assure old configuration still
  serialized as concurrent maps can be still be read.

Change-Id: I6b4404b2280fa923391aeee02cf56ed9a8847552
Signed-off-by: Alessandro Boch <aboch@cisco.com>
opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java
opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ContainerConfigurationService.java

index 03acfa8..e4d55d1 100644 (file)
@@ -9,6 +9,7 @@
 
 package org.opendaylight.controller.configuration.internal;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashSet;
@@ -189,7 +190,12 @@ public class ConfigurationService implements IConfigurationService, ICacheUpdate
         }
         String source = String.format("%s%s", ROOT, fileName);
         Object obj = objReader.read(reader, source);
-        return (obj == null || !(obj instanceof List)) ? Collections.<ConfigurationObject> emptyList()
-                : (List<ConfigurationObject>) obj;
+        if (obj == null) {
+            return Collections.<ConfigurationObject> emptyList();
+        }
+        if (obj instanceof ConcurrentMap) {
+            return new ArrayList<ConfigurationObject>(((ConcurrentMap)obj).values());
+        }
+        return (List<ConfigurationObject>) obj;
     }
 }
index c33fdef..9c1d391 100644 (file)
@@ -10,6 +10,7 @@
 package org.opendaylight.controller.configuration.internal;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Dictionary;
 import java.util.EnumSet;
@@ -219,7 +220,12 @@ public class ContainerConfigurationService implements IConfigurationContainerSer
         }
         String source = String.format("%s%s", root, fileName);
         Object obj = objReader.read(reader, source);
-        return (obj == null || !(obj instanceof List)) ? Collections.<ConfigurationObject> emptyList()
-                : (List<ConfigurationObject>) obj;
+        if (obj == null) {
+            return Collections.<ConfigurationObject> emptyList();
+        }
+        if (obj instanceof ConcurrentMap) {
+            return new ArrayList<ConfigurationObject>(((ConcurrentMap)obj).values());
+        }
+        return (List<ConfigurationObject>) obj;
     }
 }