Add helper to build DefaultAnnotations based on existing Annotations
Change-Id: Ibbc598f90888aa60dc32ed84a79bda4d4cc615ff
diff --git a/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java b/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
index 7c97ecd..115412c 100644
--- a/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
+++ b/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
@@ -218,6 +218,34 @@
}
/**
+ * Adds all specified annotation. Any previous value associated with
+ * the given annotations will be overwritten.
+ *
+ * @param base annotations
+ * @return self
+ */
+ public Builder putAll(Annotations base) {
+ if (base instanceof DefaultAnnotations) {
+ builder.putAll(((DefaultAnnotations) base).map);
+
+ } else if (base instanceof SparseAnnotations) {
+ final SparseAnnotations sparse = (SparseAnnotations) base;
+ for (String key : base.keys()) {
+ if (sparse.isRemoved(key)) {
+ remove(key);
+ } else {
+ set(key, base.value(key));
+ }
+ }
+
+ } else {
+ base.keys().forEach(key -> set(key, base.value(key)));
+
+ }
+ return this;
+ }
+
+ /**
* Adds the specified annotation. Any previous value associated with
* the given annotation key will be overwritten.
*