Revisit Annotations merging

- avoid extra instantiation/copying when possible

Change-Id: Ia2f74a1fe2ff1176346316565c9bc6786cd7f6e4
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
index ce3ee1a..8bd22d3 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
@@ -86,6 +86,7 @@
      */
     public static SparseAnnotations combine(BasicDeviceConfig cfg, SparseAnnotations an) {
         DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
+        builder.putAll(an);
         if (!Objects.equals(cfg.driver(), an.value(AnnotationKeys.DRIVER))) {
             builder.set(AnnotationKeys.DRIVER, cfg.driver());
         }
@@ -96,7 +97,7 @@
             builder.set(AnnotationKeys.MANAGEMENT_ADDRESS, cfg.managementAddress());
         }
 
-        return DefaultAnnotations.union(an, builder.build());
+        return builder.build();
     }
 
     /**
diff --git a/core/net/src/main/java/org/onosproject/net/host/impl/BasicHostOperator.java b/core/net/src/main/java/org/onosproject/net/host/impl/BasicHostOperator.java
index dd56217..87f908a 100644
--- a/core/net/src/main/java/org/onosproject/net/host/impl/BasicHostOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/host/impl/BasicHostOperator.java
@@ -80,10 +80,10 @@
      */
     public static SparseAnnotations combine(BasicHostConfig cfg, SparseAnnotations an) {
         DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-
+        builder.putAll(an);
         combineElementAnnotations(cfg, builder);
 
-        return DefaultAnnotations.union(an, builder.build());
+        return builder.build();
     }
 
     /**
diff --git a/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java b/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
index 9247b83..7cb6499 100644
--- a/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
@@ -78,6 +78,7 @@
      */
     public static SparseAnnotations combine(BasicLinkConfig cfg, SparseAnnotations an) {
         DefaultAnnotations.Builder b = DefaultAnnotations.builder();
+        b.putAll(an);
         if (cfg.metric() != DEF_METRIC) {
             b.set(AnnotationKeys.METRIC, String.valueOf(cfg.metric()));
         }
@@ -92,7 +93,7 @@
         if (cfg.isDurable() != null) {
             b.set(AnnotationKeys.DURABLE, String.valueOf(cfg.isDurable()));
         }
-        return DefaultAnnotations.union(an, b.build());
+        return b.build();
     }
 
     /**