You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2017/03/01 20:50:48 UTC
[2/9] tinkerpop git commit: added a new ClassArraySerializer to
UtilSerializers to handle Class[].class. That took longer to debug that it
should have.
added a new ClassArraySerializer to UtilSerializers to handle Class[].class. That took longer to debug that it should have.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/21642287
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/21642287
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/21642287
Branch: refs/heads/master
Commit: 216422875b8526d4e60959bbb8c52a9d1b2e62d5
Parents: 8604fd3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Feb 28 10:49:36 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Feb 28 12:05:27 2017 -0700
----------------------------------------------------------------------
.../structure/io/gryo/GryoSerializers.java | 11 ++++---
.../gremlin/structure/io/gryo/GryoVersion.java | 3 +-
.../structure/io/gryo/UtilSerializers.java | 33 ++++++++++++++++++--
3 files changed, 39 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21642287/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
index 416936c..6bcb14f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraver
import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
@@ -29,7 +30,6 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Property;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
@@ -138,7 +138,8 @@ public final class GryoSerializers {
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode bytecode) {
final List<Bytecode.Instruction> sourceInstructions = IteratorUtils.list(
IteratorUtils.filter(bytecode.getSourceInstructions().iterator(),
- i -> !i.getOperator().equals("withStrategies") && !i.getOperator().equals("withComputer")));
+ i -> !i.getOperator().equals(TraversalSource.Symbols.withStrategies) &&
+ !i.getOperator().equals(TraversalSource.Symbols.withComputer)));
writeInstructions(kryo, output, sourceInstructions);
final List<Bytecode.Instruction> stepInstructions = IteratorUtils.list(bytecode.getStepInstructions().iterator());
writeInstructions(kryo, output, stepInstructions);
@@ -150,7 +151,9 @@ public final class GryoSerializers {
final int sourceInstructionCount = input.readInt();
for (int ix = 0; ix < sourceInstructionCount; ix++) {
final String operator = input.readString();
- final Object[] args = kryo.readObject(input, Object[].class);
+ final Object[] args = operator.equals(TraversalSource.Symbols.withoutStrategies) ?
+ kryo.readObject(input, Class[].class) :
+ kryo.readObject(input, Object[].class);
bytecode.addSource(operator, args);
}
@@ -210,7 +213,7 @@ public final class GryoSerializers {
try {
if (predicate.equals("and") || predicate.equals("or"))
return predicate.equals("and") ? new AndP((List<P>) value) : new OrP((List<P>) value);
- else if (value instanceof Collection) {
+ else if (value instanceof Collection) {
if (predicate.equals("between"))
return P.between(((List) value).get(0), ((List) value).get(1));
else if (predicate.equals("inside"))
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21642287/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
index 7818f6b..d581559 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
@@ -181,6 +181,7 @@ public enum GryoVersion {
add(GryoTypeReg.of(BigDecimal.class, 35));
add(GryoTypeReg.of(Calendar.class, 39));
add(GryoTypeReg.of(Class.class, 41, new UtilSerializers.ClassSerializer()));
+ add(GryoTypeReg.of(Class[].class, 166, new UtilSerializers.ClassArraySerializer())); // ***LAST ID***
add(GryoTypeReg.of(Collection.class, 37));
add(GryoTypeReg.of(Collections.EMPTY_LIST.getClass(), 51));
add(GryoTypeReg.of(Collections.EMPTY_MAP.getClass(), 52));
@@ -260,7 +261,7 @@ public enum GryoVersion {
add(GryoTypeReg.of(SackFunctions.Barrier.class, 135));
add(GryoTypeReg.of(TraversalOptionParent.Pick.class, 137));
add(GryoTypeReg.of(HashSetSupplier.class, 136, new UtilSerializers.HashSetSupplierSerializer()));
- add(GryoTypeReg.of(MultiComparator.class, 165)); // ***LAST ID***
+ add(GryoTypeReg.of(MultiComparator.class, 165));
add(GryoTypeReg.of(TraverserSet.class, 58));
add(GryoTypeReg.of(Tree.class, 61));
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21642287/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UtilSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UtilSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UtilSerializers.java
index 7004b9f..5182e6c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UtilSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UtilSerializers.java
@@ -45,7 +45,8 @@ import java.util.UUID;
*/
final class UtilSerializers {
- private UtilSerializers() {}
+ private UtilSerializers() {
+ }
/**
* Serializer for {@code List} instances produced by {@code Arrays.asList()}.
@@ -100,6 +101,30 @@ final class UtilSerializers {
}
}
+ public final static class ClassArraySerializer implements SerializerShim<Class[]> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Class[] object) {
+ output.writeInt(object.length);
+ for (final Class clazz : object) {
+ output.writeString(clazz.getName());
+ }
+ }
+
+ @Override
+ public <I extends InputShim> Class[] read(final KryoShim<I, ?> kryo, final I input, final Class<Class[]> clazz) {
+ final int size = input.readInt();
+ final Class[] clazzes = new Class[size];
+ for (int i = 0; i < size; i++) {
+ try {
+ clazzes[i] = Class.forName(input.readString());
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ return clazzes;
+ }
+ }
+
public final static class InetAddressSerializer implements SerializerShim<InetAddress> {
@Override
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final InetAddress addy) {
@@ -137,7 +162,8 @@ final class UtilSerializers {
static final class UUIDSerializer implements SerializerShim<UUID> {
- public UUIDSerializer() { }
+ public UUIDSerializer() {
+ }
@Override
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final UUID uuid) {
@@ -158,7 +184,8 @@ final class UtilSerializers {
static final class URISerializer implements SerializerShim<URI> {
- public URISerializer() { }
+ public URISerializer() {
+ }
@Override
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final URI uri) {