Switch (DOM)DataTreeIdentifier to serialization proxy 58/109258/3
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 9 Dec 2023 13:32:41 +0000 (14:32 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 9 Dec 2023 17:52:04 +0000 (18:52 +0100)
Switch to using proxies on writeout, so the JVM representation is
disconnected from the serial form.

JIRA: MDSAL-844
Change-Id: I090786c58557df9fb2de36bb237c4a8aabd5c37e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifier.java
binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifierTest.java
dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifier.java
dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifierTest.java

index 33cb59fe9023376e9b12a99e5ecd42adefbca853..3f0504c41f36e1a0e6c868983e2949b071ff8dd2 100644 (file)
@@ -76,4 +76,9 @@ public final class DataTreeIdentifier<T extends DataObject> implements Hierarchi
     public String toString() {
         return MoreObjects.toStringHelper(this).add("datastore", datastoreType).add("root", rootIdentifier).toString();
     }
+
+    @java.io.Serial
+    Object writeReplace() {
+        return new DTIv1(this);
+    }
 }
\ No newline at end of file
index 9abfaa4866300cbd6360d64d5ae80076cb0679f4..d87589c5abe385906907277956564c229b992d9d 100644 (file)
@@ -70,7 +70,7 @@ class DataTreeIdentifierTest {
         }
 
         final var bytes = bos.toByteArray();
-        assertEquals(728, bytes.length);
+        assertEquals(450, bytes.length);
 
         try (var ois = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
             assertEquals(TEST_IDENTIFIER1, ois.readObject());
index 8373cf2e6fafdcbe71fb2f1798446eaa5ec963e4..9b2a6ce4d167b8b8d2c1b5724c3c20c4d4fd5295 100644 (file)
@@ -15,7 +15,6 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yangtools.concepts.HierarchicalIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 
 /**
  * A unique identifier for a particular subtree. It is composed of the logical data store type and the instance
@@ -24,6 +23,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
 @NonNullByDefault
 public final class DOMDataTreeIdentifier implements HierarchicalIdentifier<DOMDataTreeIdentifier>,
         Comparable<DOMDataTreeIdentifier> {
+    @java.io.Serial
     private static final long serialVersionUID = 1L;
 
     private final YangInstanceIdentifier rootIdentifier;
@@ -59,7 +59,7 @@ public final class DOMDataTreeIdentifier implements HierarchicalIdentifier<DOMDa
     }
 
     public DOMDataTreeIdentifier toOptimized() {
-        final YangInstanceIdentifier opt = rootIdentifier.toOptimized();
+        final var opt = rootIdentifier.toOptimized();
         return opt == rootIdentifier ? this : new DOMDataTreeIdentifier(datastoreType, opt);
     }
 
@@ -89,8 +89,8 @@ public final class DOMDataTreeIdentifier implements HierarchicalIdentifier<DOMDa
                 return 1;
             }
 
-            final PathArgument myPathArg = myIter.next();
-            final PathArgument otherPathArg = otherIter.next();
+            final var myPathArg = myIter.next();
+            final var otherPathArg = otherIter.next();
             cmp = myPathArg.compareTo(otherPathArg);
             if (cmp != 0) {
                 return cmp;
@@ -104,4 +104,9 @@ public final class DOMDataTreeIdentifier implements HierarchicalIdentifier<DOMDa
     public String toString() {
         return MoreObjects.toStringHelper(this).add("datastore", datastoreType).add("root", rootIdentifier).toString();
     }
+
+    @java.io.Serial
+    Object writeReplace() {
+        return new DTIv1(this);
+    }
 }
index fecd65b040a71068f76f00059ce10005190ce738..ee597bfdf98695ab3e086ab1d18be43c01ac5232 100644 (file)
@@ -98,7 +98,7 @@ class DOMDataTreeIdentifierTest {
         }
 
         final var bytes = bos.toByteArray();
-        assertEquals(561, bytes.length);
+        assertEquals(275, bytes.length);
 
         try (var ois = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
             assertEquals(REF_TREE, ois.readObject());