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