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) {