Madan Jampani
Committed by Gerrit Code Review

Replace ECMap with ConsistentMap in UiExtensionManager

Change-Id: Ibe7e98611e755fe4c3123bd7f27cdab79677a761
...@@ -32,20 +32,20 @@ import com.google.common.collect.ImmutableMap; ...@@ -32,20 +32,20 @@ import com.google.common.collect.ImmutableMap;
32 import com.google.common.collect.ImmutableSet; 32 import com.google.common.collect.ImmutableSet;
33 import com.google.common.collect.Lists; 33 import com.google.common.collect.Lists;
34 import com.google.common.collect.Maps; 34 import com.google.common.collect.Maps;
35 +
35 import org.apache.felix.scr.annotations.Activate; 36 import org.apache.felix.scr.annotations.Activate;
36 import org.apache.felix.scr.annotations.Component; 37 import org.apache.felix.scr.annotations.Component;
37 import org.apache.felix.scr.annotations.Deactivate; 38 import org.apache.felix.scr.annotations.Deactivate;
38 import org.apache.felix.scr.annotations.Reference; 39 import org.apache.felix.scr.annotations.Reference;
39 import org.apache.felix.scr.annotations.ReferenceCardinality; 40 import org.apache.felix.scr.annotations.ReferenceCardinality;
40 import org.apache.felix.scr.annotations.Service; 41 import org.apache.felix.scr.annotations.Service;
41 -import org.onlab.util.KryoNamespace;
42 import org.onosproject.mastership.MastershipService; 42 import org.onosproject.mastership.MastershipService;
43 import org.onosproject.store.serializers.KryoNamespaces; 43 import org.onosproject.store.serializers.KryoNamespaces;
44 -import org.onosproject.store.service.EventuallyConsistentMap; 44 +import org.onosproject.store.service.ConsistentMap;
45 -import org.onosproject.store.service.EventuallyConsistentMapEvent; 45 +import org.onosproject.store.service.MapEvent;
46 -import org.onosproject.store.service.EventuallyConsistentMapListener; 46 +import org.onosproject.store.service.MapEventListener;
47 +import org.onosproject.store.service.Serializer;
47 import org.onosproject.store.service.StorageService; 48 import org.onosproject.store.service.StorageService;
48 -import org.onosproject.store.service.WallClockTimestamp;
49 import org.onosproject.ui.UiExtension; 49 import org.onosproject.ui.UiExtension;
50 import org.onosproject.ui.UiExtensionService; 50 import org.onosproject.ui.UiExtensionService;
51 import org.onosproject.ui.UiMessageHandlerFactory; 51 import org.onosproject.ui.UiMessageHandlerFactory;
...@@ -79,7 +79,7 @@ public class UiExtensionManager ...@@ -79,7 +79,7 @@ public class UiExtensionManager
79 79
80 private static final ClassLoader CL = UiExtensionManager.class.getClassLoader(); 80 private static final ClassLoader CL = UiExtensionManager.class.getClassLoader();
81 81
82 - private static final String ONOS_USER_PREFERENCES = "onos-user-preferences"; 82 + private static final String ONOS_USER_PREFERENCES = "onos-ui-user-preferences";
83 private static final String CORE = "core"; 83 private static final String CORE = "core";
84 private static final String GUI_ADDED = "guiAdded"; 84 private static final String GUI_ADDED = "guiAdded";
85 private static final String GUI_REMOVED = "guiRemoved"; 85 private static final String GUI_REMOVED = "guiRemoved";
...@@ -107,8 +107,9 @@ public class UiExtensionManager ...@@ -107,8 +107,9 @@ public class UiExtensionManager
107 protected StorageService storageService; 107 protected StorageService storageService;
108 108
109 // User preferences 109 // User preferences
110 - private EventuallyConsistentMap<String, ObjectNode> prefs; 110 + private ConsistentMap<String, ObjectNode> prefsConsistentMap;
111 - private final EventuallyConsistentMapListener<String, ObjectNode> prefsListener = 111 + private Map<String, ObjectNode> prefs;
112 + private final MapEventListener<String, ObjectNode> prefsListener =
112 new InternalPrefsListener(); 113 new InternalPrefsListener();
113 114
114 private final ObjectMapper mapper = new ObjectMapper(); 115 private final ObjectMapper mapper = new ObjectMapper();
...@@ -167,28 +168,27 @@ public class UiExtensionManager ...@@ -167,28 +168,27 @@ public class UiExtensionManager
167 168
168 @Activate 169 @Activate
169 public void activate() { 170 public void activate() {
170 - KryoNamespace.Builder kryoBuilder = new KryoNamespace.Builder() 171 + Serializer serializer = Serializer.using(KryoNamespaces.API,
171 - .register(KryoNamespaces.API) 172 + ObjectNode.class, ArrayNode.class,
172 - .register(ObjectNode.class, ArrayNode.class,
173 JsonNodeFactory.class, LinkedHashMap.class, 173 JsonNodeFactory.class, LinkedHashMap.class,
174 TextNode.class, BooleanNode.class, 174 TextNode.class, BooleanNode.class,
175 LongNode.class, DoubleNode.class, ShortNode.class, 175 LongNode.class, DoubleNode.class, ShortNode.class,
176 IntNode.class, NullNode.class); 176 IntNode.class, NullNode.class);
177 177
178 - prefs = storageService.<String, ObjectNode>eventuallyConsistentMapBuilder() 178 + prefsConsistentMap = storageService.<String, ObjectNode>consistentMapBuilder()
179 .withName(ONOS_USER_PREFERENCES) 179 .withName(ONOS_USER_PREFERENCES)
180 - .withSerializer(kryoBuilder) 180 + .withSerializer(serializer)
181 - .withTimestampProvider((k, v) -> new WallClockTimestamp()) 181 + .withRelaxedReadConsistency()
182 - .withPersistence()
183 .build(); 182 .build();
184 - prefs.addListener(prefsListener); 183 + prefsConsistentMap.addListener(prefsListener);
184 + prefs = prefsConsistentMap.asJavaMap();
185 register(core); 185 register(core);
186 log.info("Started"); 186 log.info("Started");
187 } 187 }
188 188
189 @Deactivate 189 @Deactivate
190 public void deactivate() { 190 public void deactivate() {
191 - prefs.removeListener(prefsListener); 191 + prefsConsistentMap.removeListener(prefsListener);
192 UiWebSocketServlet.closeAll(); 192 UiWebSocketServlet.closeAll();
193 unregister(core); 193 unregister(core);
194 log.info("Stopped"); 194 log.info("Stopped");
...@@ -283,11 +283,11 @@ public class UiExtensionManager ...@@ -283,11 +283,11 @@ public class UiExtensionManager
283 283
284 // Auxiliary listener to preference map events. 284 // Auxiliary listener to preference map events.
285 private class InternalPrefsListener 285 private class InternalPrefsListener
286 - implements EventuallyConsistentMapListener<String, ObjectNode> { 286 + implements MapEventListener<String, ObjectNode> {
287 @Override 287 @Override
288 - public void event(EventuallyConsistentMapEvent<String, ObjectNode> event) { 288 + public void event(MapEvent<String, ObjectNode> event) {
289 String userName = userName(event.key()); 289 String userName = userName(event.key());
290 - if (event.type() == EventuallyConsistentMapEvent.Type.PUT) { 290 + if (event.type() == MapEvent.Type.INSERT || event.type() == MapEvent.Type.UPDATE) {
291 UiWebSocketServlet.sendToUser(userName, UPDATE_PREFS, jsonPrefs()); 291 UiWebSocketServlet.sendToUser(userName, UPDATE_PREFS, jsonPrefs());
292 } 292 }
293 } 293 }
......