Enhanced layout service and hooked-in the ui topo session.
Change-Id: I357143766deb3f0d697a3e7963a53968ccdf3bc8
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 bc58121..60797f4 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
@@ -35,7 +35,11 @@
import org.slf4j.LoggerFactory;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
+import java.util.stream.Collectors;
+
+import static com.google.common.base.Preconditions.checkNotNull;
/**
* Manages the user interface topology layouts.
@@ -47,6 +51,11 @@
private final Logger log = LoggerFactory.getLogger(getClass());
+ private static final String ID_NULL = "Layout ID cannot be null";
+ private static final String LAYOUT_NULL = "Layout cannot be null";
+
+ private static final UiTopoLayoutId DEFAULT_ID = UiTopoLayoutId.layoutId("_default_");
+
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected StorageService storageService;
@@ -57,6 +66,7 @@
public void activate() {
KryoNamespace.Builder kryoBuilder = new KryoNamespace.Builder()
.register(KryoNamespaces.API)
+ .register(UiTopoLayoutId.class)
.register(UiTopoLayout.class);
layouts = storageService.<UiTopoLayoutId, UiTopoLayout>consistentMapBuilder()
@@ -66,6 +76,9 @@
.build();
layoutMap = layouts.asJavaMap();
+ // Create and add the default layout, if needed.
+ layoutMap.computeIfAbsent(DEFAULT_ID, k -> new UiTopoLayout(k, null, null));
+
log.info("Started");
}
@@ -76,22 +89,38 @@
@Override
+ public UiTopoLayout getRootLayout() {
+ return getLayout(DEFAULT_ID);
+ }
+
+ @Override
public Set<UiTopoLayout> getLayouts() {
return ImmutableSet.copyOf(layoutMap.values());
}
@Override
public boolean addLayout(UiTopoLayout layout) {
+ checkNotNull(layout, LAYOUT_NULL);
return layouts.put(layout.id(), layout) == null;
}
@Override
public UiTopoLayout getLayout(UiTopoLayoutId layoutId) {
+ checkNotNull(layoutId, ID_NULL);
return layoutMap.get(layoutId);
}
@Override
+ public Set<UiTopoLayout> getChildren(UiTopoLayoutId layoutId) {
+ checkNotNull(layoutId, ID_NULL);
+ return layoutMap.values().stream()
+ .filter(l -> Objects.equals(l.parent(), layoutId))
+ .collect(Collectors.toSet());
+ }
+
+ @Override
public boolean removeLayout(UiTopoLayout layout) {
+ checkNotNull(layout, LAYOUT_NULL);
return layouts.remove(layout.id()) != null;
}