Remove legacy NormalizedNode serialization classes
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / utils / SerializationUtils.java
index 79772fed5e23c9bad4cce7d71febc0ea5f367739..2e3cfd0e3a1f96d62b329c30ed1c34473235d52c 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.controller.cluster.datastore.utils;
 
 import com.google.common.base.Preconditions;
-import com.google.protobuf.InvalidProtocolBufferException;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
@@ -16,13 +15,9 @@ import java.io.DataInputStream;
 import java.io.DataOutput;
 import java.io.DataOutputStream;
 import java.io.IOException;
-import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.InvalidNormalizedNodeStreamException;
 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.NormalizedNodeInputStreamReader;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeOutputStreamWriter;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -30,31 +25,33 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  * Provides various utility methods for serialization and de-serialization.
  *
  * @author Thomas Pantelis
+ * @deprecated use {@link org.opendaylight.controller.cluster.datastore.node.utils.stream.SerializationUtils} instead
  */
+@Deprecated
 public final class SerializationUtils {
-    public static final ThreadLocal<NormalizedNodeOutputStreamWriter> REUSABLE_WRITER_TL = new ThreadLocal<>();
-    public static final ThreadLocal<NormalizedNodeInputStreamReader> REUSABLE_READER_TL = new ThreadLocal<>();
+    public static final ThreadLocal<NormalizedNodeDataOutput> REUSABLE_WRITER_TL = new ThreadLocal<>();
+    public static final ThreadLocal<NormalizedNodeDataInput> REUSABLE_READER_TL = new ThreadLocal<>();
 
-    public static interface Applier<T> {
+    public interface Applier<T> {
         void apply(T instance, YangInstanceIdentifier path, NormalizedNode<?, ?> node);
     }
 
     private static NormalizedNodeDataOutput streamWriter(DataOutput out) throws IOException {
-        NormalizedNodeOutputStreamWriter streamWriter = REUSABLE_WRITER_TL.get();
-        if(streamWriter == null) {
-            streamWriter = new NormalizedNodeOutputStreamWriter(out);
+        NormalizedNodeDataOutput streamWriter = REUSABLE_WRITER_TL.get();
+        if (streamWriter == null) {
+            streamWriter = NormalizedNodeInputOutput.newDataOutput(out);
         }
 
         return streamWriter;
     }
 
     private static NormalizedNodeDataInput streamReader(DataInput in) throws IOException {
-        NormalizedNodeInputStreamReader streamWriter = REUSABLE_READER_TL.get();
-        if(streamWriter == null) {
-            streamWriter = new NormalizedNodeInputStreamReader(in);
+        NormalizedNodeDataInput streamReader = REUSABLE_READER_TL.get();
+        if (streamReader == null) {
+            streamReader = NormalizedNodeInputOutput.newDataInput(in);
         }
 
-        return streamWriter;
+        return streamReader;
     }
 
     public static void serializePathAndNode(YangInstanceIdentifier path, NormalizedNode<?, ?> node,
@@ -82,17 +79,14 @@ public final class SerializationUtils {
         }
     }
 
-    public static void serializeNormalizedNode(NormalizedNode<?, ?> node, DataOutput out) {
-        try {
-            out.writeBoolean(node != null);
-            if(node != null) {
-                NormalizedNodeDataOutput streamWriter = streamWriter(out);
-                streamWriter.writeNormalizedNode(node);
-            }
-        } catch (IOException e) {
-            throw new IllegalArgumentException(String.format("Error serializing NormalizedNode %s",
-                    node), e);
+    private static NormalizedNode<?, ?> tryDeserializeNormalizedNode(DataInput in) throws IOException {
+        boolean present = in.readBoolean();
+        if (present) {
+            NormalizedNodeDataInput streamReader = streamReader(in);
+            return streamReader.readNormalizedNode();
         }
+
+        return null;
     }
 
     public static NormalizedNode<?, ?> deserializeNormalizedNode(DataInput in) {
@@ -103,33 +97,25 @@ public final class SerializationUtils {
         }
     }
 
-    private static NormalizedNode<?, ?> tryDeserializeNormalizedNode(DataInput in) throws IOException {
-        boolean present = in.readBoolean();
-        if(present) {
-            NormalizedNodeDataInput streamReader = streamReader(in);
-            return streamReader.readNormalizedNode();
+    public static NormalizedNode<?, ?> deserializeNormalizedNode(byte [] bytes) {
+        try {
+            return tryDeserializeNormalizedNode(new DataInputStream(new ByteArrayInputStream(bytes)));
+        } catch (IOException e) {
+            throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
         }
-
-        return null;
     }
 
-    public static NormalizedNode<?, ?> deserializeNormalizedNode(byte [] bytes) {
-        NormalizedNode<?, ?> node = null;
+    public static void serializeNormalizedNode(NormalizedNode<?, ?> node, DataOutput out) {
         try {
-            node = tryDeserializeNormalizedNode(new DataInputStream(new ByteArrayInputStream(bytes)));
-        } catch(InvalidNormalizedNodeStreamException e) {
-            // Probably from legacy protobuf serialization - try that.
-            try {
-                NormalizedNodeMessages.Node serializedNode = NormalizedNodeMessages.Node.parseFrom(bytes);
-                node =  new NormalizedNodeToNodeCodec(null).decode(serializedNode);
-            } catch (InvalidProtocolBufferException e2) {
-                throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
+            out.writeBoolean(node != null);
+            if (node != null) {
+                NormalizedNodeDataOutput streamWriter = streamWriter(out);
+                streamWriter.writeNormalizedNode(node);
             }
         } catch (IOException e) {
-            throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
+            throw new IllegalArgumentException(String.format("Error serializing NormalizedNode %s",
+                    node), e);
         }
-
-        return node;
     }
 
     public static byte [] serializeNormalizedNode(NormalizedNode<?, ?> node) {