From fb58c5c5dc9116917a39cd9b2c4d751a05a374fd Mon Sep 17 00:00:00 2001 From: Tglman Date: Tue, 25 Jun 2024 15:55:48 +0200 Subject: [PATCH] fix: add compatibility for GSON3 for rid parser --- driver/pom.xml | 2 +- .../io/graphson/OrientGraphSONV3.java | 32 +++++++++++++++++++ server/pom.xml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/driver/pom.xml b/driver/pom.xml index 8383b5a5..400a9ee7 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -16,7 +16,7 @@ UTF-8 UTF-8 - 3.6.2 + 3.5.6 ${project.basedir}/../ diff --git a/driver/src/main/java/org/apache/tinkerpop/gremlin/orientdb/io/graphson/OrientGraphSONV3.java b/driver/src/main/java/org/apache/tinkerpop/gremlin/orientdb/io/graphson/OrientGraphSONV3.java index 81133f52..2be091b3 100644 --- a/driver/src/main/java/org/apache/tinkerpop/gremlin/orientdb/io/graphson/OrientGraphSONV3.java +++ b/driver/src/main/java/org/apache/tinkerpop/gremlin/orientdb/io/graphson/OrientGraphSONV3.java @@ -4,6 +4,7 @@ import static org.apache.tinkerpop.gremlin.orientdb.io.OrientIoRegistry.newORecordId; import com.orientechnologies.orient.core.id.ORecordId; +import java.io.IOException; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -13,6 +14,10 @@ import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens; import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge; import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex; +import org.apache.tinkerpop.shaded.jackson.core.JsonParser; +import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException; +import org.apache.tinkerpop.shaded.jackson.core.JsonToken; +import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext; import org.apache.tinkerpop.shaded.jackson.databind.JsonDeserializer; /** Created by Enrico Risa on 06/09/2017. */ @@ -87,6 +92,33 @@ public ORecordIdDeserializer() { super(Object.class); } + @Override + public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) + throws IOException, JsonProcessingException { + boolean keyString = true; + if (jsonParser.currentToken() == JsonToken.START_OBJECT) { + Map m = deserializationContext.readValue(jsonParser, LinkedHashMap.class); + return createObject(m); + } else { + final Map m = new LinkedHashMap<>(); + + while (jsonParser.nextToken() != JsonToken.END_ARRAY) { + final Object key = deserializationContext.readValue(jsonParser, Object.class); + if (!(key instanceof String)) { + keyString = false; + } + jsonParser.nextToken(); + final Object val = deserializationContext.readValue(jsonParser, Object.class); + m.put(key, val); + } + if (keyString) { + return createObject((Map) (Map) m); + } else { + return m; + } + } + } + @Override public Object createObject(Map data) { diff --git a/server/pom.xml b/server/pom.xml index 29c9a1cb..830d341d 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -13,7 +13,7 @@ orientdb-gremlin-server - 3.5.2 + 3.5.6 1.7.21 ${project.basedir}/../