Use SerializationUtils to (de)serialize NormalizedNode and YangInstanceIdentifier 94/47394/2
authorAlexis de Talhouët <adetalhouet@inocybe.com>
Fri, 21 Oct 2016 20:26:02 +0000 (16:26 -0400)
committerTomas Cere <tcere@cisco.com>
Sun, 23 Oct 2016 19:43:02 +0000 (19:43 +0000)
Controller CDS implementation provide utility method for this,
we can re-use them, as it appears it's keeping a ThreadLocal
holding NormalizedNodeDataOutput instance

Change-Id: Ia106f33d04f937ac8dacf89cb6837a157eee8ae1
Signed-off-by: Alexis de Talhouët <adetalhouet@inocybe.com>
(cherry picked from commit 4f326302b5dcb41b1da291a0240e2b8808a63893)

netconf/netconf-topology-singleton/pom.xml
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/NormalizedNodeMessage.java

index fb3c450c4bc6a5903945f10beb347e6dd340934a..36e56a805a918d955fb07827b17cb572b3e32056 100644 (file)
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <dependency>
+                <groupId>org.opendaylight.controller</groupId>
+                <artifactId>mdsal-artifacts</artifactId>
+                <version>1.4.1-SNAPSHOT</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
             <artifactId>akka-testkit_2.11</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.controller</groupId>
+            <artifactId>sal-distributed-datastore</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
index 48a86749f01127a903a02138d8d3078e9151764d..b4ede5bdbf5046c7388467523f50f618cf3b5289 100644 (file)
@@ -12,13 +12,9 @@ import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataInput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataOutput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput;
+import org.opendaylight.controller.cluster.datastore.utils.SerializationUtils;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
 
 /**
  * Message which holds node data, prepared to sending between remote hosts with serialization.
@@ -48,20 +44,16 @@ public class NormalizedNodeMessage implements Externalizable {
 
     @Override
     public void writeExternal(final ObjectOutput out) throws IOException {
-        final NormalizedNodeDataOutput dataOutput = NormalizedNodeInputOutput.newDataOutput(out);
-        final NormalizedNodeWriter normalizedNodeWriter =
-                NormalizedNodeWriter.forStreamWriter((NormalizedNodeStreamWriter) dataOutput);
-
-        dataOutput.writeYangInstanceIdentifier(identifier);
-
-        normalizedNodeWriter.write(node);
+        SerializationUtils.serializePathAndNode(getIdentifier(), node, out);
     }
 
     @Override
     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
-        final NormalizedNodeDataInput dataInput = NormalizedNodeInputOutput.newDataInput(in);
-
-        identifier = dataInput.readYangInstanceIdentifier();
-        node = dataInput.readNormalizedNode();
+        SerializationUtils.deserializePathAndNode(in, this, APPLIER);
     }
+
+    private static final SerializationUtils.Applier<NormalizedNodeMessage> APPLIER = (instance, path, node) -> {
+        instance.identifier = path;
+        instance.node = node;
+    };
 }