+ 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) {
+ try {
+ return tryDeserializeNormalizedNode(in);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
+ }
+ }
+
+ public static NormalizedNode<?, ?> deserializeNormalizedNode(byte [] bytes) {
+ try {
+ return tryDeserializeNormalizedNode(new DataInputStream(new ByteArrayInputStream(bytes)));
+ } catch (InvalidNormalizedNodeStreamException e) {
+ // Probably from legacy protobuf serialization - try that.
+ try {
+ NormalizedNodeMessages.Node serializedNode = NormalizedNodeMessages.Node.parseFrom(bytes);
+ return new NormalizedNodeToNodeCodec().decode(serializedNode);
+ } catch (InvalidProtocolBufferException e2) {
+ throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Error deserializing NormalizedNode", e);
+ }
+ }
+