Implementing the UiLayoutManager.
Change-Id: I0a3424f7e3b13a3c18e668a5eed5151755bce4f9
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoLayoutManager.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoLayoutManager.java
index a8959df..bc58121 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoLayoutManager.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoLayoutManager.java
@@ -16,16 +16,26 @@
package org.onosproject.ui.impl.topo;
+import com.google.common.collect.ImmutableSet;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
+import org.onlab.util.KryoNamespace;
+import org.onosproject.store.serializers.KryoNamespaces;
+import org.onosproject.store.service.ConsistentMap;
+import org.onosproject.store.service.Serializer;
+import org.onosproject.store.service.StorageService;
import org.onosproject.ui.UiTopoLayoutService;
import org.onosproject.ui.model.topo.UiTopoLayout;
+import org.onosproject.ui.model.topo.UiTopoLayoutId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Manages the user interface topology layouts.
@@ -35,39 +45,54 @@
@Service
public class UiTopoLayoutManager implements UiTopoLayoutService {
-// private static final ClassLoader CL =
-// UiTopoLayoutManager.class.getClassLoader();
-
private final Logger log = LoggerFactory.getLogger(getClass());
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected StorageService storageService;
+
+ private ConsistentMap<UiTopoLayoutId, UiTopoLayout> layouts;
+ private Map<UiTopoLayoutId, UiTopoLayout> layoutMap;
+
@Activate
public void activate() {
- // TODO: implement starting stuff
+ KryoNamespace.Builder kryoBuilder = new KryoNamespace.Builder()
+ .register(KryoNamespaces.API)
+ .register(UiTopoLayout.class);
+
+ layouts = storageService.<UiTopoLayoutId, UiTopoLayout>consistentMapBuilder()
+ .withSerializer(Serializer.using(kryoBuilder.build()))
+ .withName("onos-topo-layouts")
+ .withRelaxedReadConsistency()
+ .build();
+ layoutMap = layouts.asJavaMap();
+
log.info("Started");
}
@Deactivate
public void deactivate() {
- // TODO: implement stopping stuff
log.info("Stopped");
}
@Override
- public List<UiTopoLayout> getLayouts() {
- // TODO: implement
- return null;
+ public Set<UiTopoLayout> getLayouts() {
+ return ImmutableSet.copyOf(layoutMap.values());
}
@Override
public boolean addLayout(UiTopoLayout layout) {
- // TODO: implement
- return false;
+ return layouts.put(layout.id(), layout) == null;
+ }
+
+ @Override
+ public UiTopoLayout getLayout(UiTopoLayoutId layoutId) {
+ return layoutMap.get(layoutId);
}
@Override
public boolean removeLayout(UiTopoLayout layout) {
- // TODO: implement
- return false;
+ return layouts.remove(layout.id()) != null;
}
+
}