You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by va...@apache.org on 2023/10/23 22:48:07 UTC

[tinkerpop] branch master updated: Fixed deserialization of element properties for GraphBinary (#2304)

This is an automated email from the ASF dual-hosted git repository.

valentyn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/master by this push:
     new e5a337bde6 Fixed deserialization of element properties for GraphBinary (#2304)
e5a337bde6 is described below

commit e5a337bde6777202a533c5585cb1046ce78fd017
Author: Valentyn Kahamlyk <vk...@users.noreply.github.com>
AuthorDate: Mon Oct 23 15:48:02 2023 -0700

    Fixed deserialization of element properties for GraphBinary (#2304)
---
 CHANGELOG.asciidoc                                   |  1 +
 .../structure/io/binary/types/EdgeSerializer.java    | 18 +++++++++++++++---
 .../structure/io/binary/types/VertexSerializer.java  | 20 +++++++++++++-------
 3 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index f15482f169..be19dd4cde 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -37,6 +37,7 @@ This release also includes changes from <<release-3-6-5, 3.6.6>> and <<release-3
 * Added list filtering functions `all` and `any`.
 * Added getter for `isStart` on `UnionStep`.
 * Added `agent` parameter to `DriverRemoteConnection` options to allow a user-provided `http.Agent` implementation.
+* Fixed deserialization of element properties for GraphBinary.
 * Fixed bug in `union()` as a start step where the `Path` was including the starting dummy traverser.
 * Improved performance for element comparison.
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/EdgeSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/EdgeSerializer.java
index 71992aceca..fdfb94f05a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/EdgeSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/EdgeSerializer.java
@@ -19,13 +19,14 @@
 package org.apache.tinkerpop.gremlin.structure.io.binary.types;
 
 import org.apache.commons.collections.IteratorUtils;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.io.Buffer;
 import org.apache.tinkerpop.gremlin.structure.io.binary.DataType;
 import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryReader;
 import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryWriter;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.io.Buffer;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 
 import java.io.IOException;
 import java.util.List;
@@ -53,7 +54,18 @@ public class EdgeSerializer extends SimpleTypeSerializer<Edge> {
 
         final List<Property> properties = context.read(buffer);
 
-        return new DetachedEdge(id, label, properties, outVId, outVLabel, inVId, inVLabel);
+        final DetachedVertex inV = DetachedVertex.build().setId(inVId).setLabel(inVLabel).create();
+        final DetachedVertex outV = DetachedVertex.build().setId(outVId).setLabel(outVLabel).create();
+
+        final DetachedEdge.Builder builder = DetachedEdge.build().setId(id).setLabel(label).setInV(inV).setOutV(outV);
+
+        if (properties != null) {
+            for (final Property p : properties) {
+                builder.addProperty(p);
+            }
+        }
+
+        return builder.create();
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/VertexSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/VertexSerializer.java
index 01e3d87324..5dbdfd1b0c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/VertexSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/VertexSerializer.java
@@ -19,19 +19,17 @@
 package org.apache.tinkerpop.gremlin.structure.io.binary.types;
 
 import org.apache.commons.collections.IteratorUtils;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.Buffer;
 import org.apache.tinkerpop.gremlin.structure.io.binary.DataType;
 import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryReader;
 import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryWriter;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.io.Buffer;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 
 import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -45,9 +43,17 @@ public class VertexSerializer extends SimpleTypeSerializer<Vertex> {
     protected Vertex readValue(final Buffer buffer, final GraphBinaryReader context) throws IOException {
         final Object id = context.read(buffer);
         final String label = context.readValue(buffer, String.class, false);
-        final List<VertexProperty> properties = context.read(buffer);
+        final List<DetachedVertexProperty> properties = context.read(buffer);
+
+        final DetachedVertex.Builder builder = DetachedVertex.build().setId(id).setLabel(label);
+
+        if (properties != null) {
+            for (final DetachedVertexProperty vp : properties) {
+                builder.addProperty(vp);
+            }
+        }
 
-        return new DetachedVertex(id, label, properties);
+        return builder.create();
     }
 
     @Override