Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1278 35f666f92 -> 253013263
Move serializers for Traverser into io packages Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/25301326 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/25301326 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/25301326 Branch: refs/heads/TINKERPOP-1278 Commit: 25301326365e10581e8662e4f0c118f9f1d26070 Parents: 35f666f Author: Stephen Mallette <[email protected]> Authored: Tue Aug 16 09:07:48 2016 -0400 Committer: Stephen Mallette <[email protected]> Committed: Tue Aug 16 09:07:48 2016 -0400 ---------------------------------------------------------------------- .../DefaultRemoteTraverserSerializers.java | 86 -------------------- .../structure/io/graphson/GraphSONModule.java | 3 +- .../graphson/GraphSONTraversalSerializers.java | 30 +++++++ .../gremlin/structure/io/gryo/GryoMapper.java | 3 +- .../structure/io/gryo/GryoSerializers.java | 15 ++++ 5 files changed, 47 insertions(+), 90 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/25301326/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/DefaultRemoteTraverserSerializers.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/DefaultRemoteTraverserSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/DefaultRemoteTraverserSerializers.java deleted file mode 100644 index 2ff6cc6..0000000 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/DefaultRemoteTraverserSerializers.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tinkerpop.gremlin.process.remote.traversal; - -import org.apache.tinkerpop.gremlin.process.traversal.Traverser; -import org.apache.tinkerpop.gremlin.structure.Property; -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; -import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim; -import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator; -import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider; -import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer; -import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer; - -import java.io.IOException; - -/** - * @author Stephen Mallette (http://stephen.genoprime.com) - */ -public final class DefaultRemoteTraverserSerializers { - - private DefaultRemoteTraverserSerializers() {} - - /** - * Serializes {@link DefaultRemoteTraverser} to and from Gryo. - */ - public final static class GryoSerializer implements SerializerShim<DefaultRemoteTraverser> { - @Override - public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final DefaultRemoteTraverser remoteTraverser) { - kryo.writeClassAndObject(output, remoteTraverser.get()); - output.writeLong(remoteTraverser.bulk()); - } - - @Override - public <I extends InputShim> DefaultRemoteTraverser read(final KryoShim<I, ?> kryo, final I input, final Class<DefaultRemoteTraverser> remoteTraverserClass) { - final Object o = kryo.readClassAndObject(input); - return new DefaultRemoteTraverser<>(o, input.readLong()); - } - } - - public final static class GraphSONSerializer extends StdSerializer<Traverser> { - - public GraphSONSerializer() { - super(Traverser.class); - } - - @Override - public void serialize(final Traverser traverserInstance, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) - throws IOException { - ser(traverserInstance, jsonGenerator, serializerProvider, null); - } - - @Override - public void serializeWithType(final Traverser traverserInstance, final JsonGenerator jsonGenerator, - final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException { - ser(traverserInstance, jsonGenerator, serializerProvider, typeSerializer); - } - - private static void ser(final Traverser traverserInstance, final JsonGenerator jsonGenerator, - final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException { - jsonGenerator.writeStartObject(); - if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, Traverser.class.getName()); - jsonGenerator.writeObjectField("bulk", traverserInstance.bulk()); - jsonGenerator.writeObjectField("value", traverserInstance.get()); - jsonGenerator.writeEndObject(); - } - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/25301326/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java index bf8c513..f7d340c 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io.graphson; -import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverserSerializers; import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Operator; import org.apache.tinkerpop.gremlin.process.traversal.Order; @@ -143,7 +142,7 @@ abstract class GraphSONModule extends SimpleModule { addSerializer(P.class, new GraphSONTraversalSerializers.PJacksonSerializer()); addSerializer(Lambda.class, new GraphSONTraversalSerializers.LambdaJacksonSerializer()); addSerializer(Bytecode.Binding.class, new GraphSONTraversalSerializers.BindingJacksonSerializer()); - addSerializer(Traverser.class, new DefaultRemoteTraverserSerializers.GraphSONSerializer()); + addSerializer(Traverser.class, new GraphSONTraversalSerializers.TraverserSerializer()); // -- deserializers for traversal addDeserializer(Bytecode.class, new GraphSONTraversalSerializers.BytecodeJacksonDeserializer()); addDeserializer(Enum.class, new GraphSONTraversalSerializers.EnumJacksonDeserializer()); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/25301326/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTraversalSerializers.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTraversalSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTraversalSerializers.java index 1c02d31..8023cd2 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTraversalSerializers.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTraversalSerializers.java @@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Pop; import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions; import org.apache.tinkerpop.gremlin.process.traversal.Scope; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; +import org.apache.tinkerpop.gremlin.process.traversal.Traverser; 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; @@ -43,6 +44,7 @@ import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext; import org.apache.tinkerpop.shaded.jackson.databind.JsonNode; import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider; import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer; +import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer; import org.apache.tinkerpop.shaded.jackson.databind.node.JsonNodeType; import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer; @@ -190,6 +192,34 @@ public final class GraphSONTraversalSerializers { } + final static class TraverserSerializer extends StdSerializer<Traverser> { + + public TraverserSerializer() { + super(Traverser.class); + } + + @Override + public void serialize(final Traverser traverserInstance, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) + throws IOException { + ser(traverserInstance, jsonGenerator, serializerProvider, null); + } + + @Override + public void serializeWithType(final Traverser traverserInstance, final JsonGenerator jsonGenerator, + final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException { + ser(traverserInstance, jsonGenerator, serializerProvider, typeSerializer); + } + + private static void ser(final Traverser traverserInstance, final JsonGenerator jsonGenerator, + final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException { + jsonGenerator.writeStartObject(); + if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, Traverser.class.getName()); + jsonGenerator.writeObjectField("bulk", traverserInstance.bulk()); + jsonGenerator.writeObjectField("value", traverserInstance.get()); + jsonGenerator.writeEndObject(); + } + } + /////////////////// // DESERIALIZERS // ////////////////// http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/25301326/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java index 24d7d8b..add254e 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java @@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphFilter; import org.apache.tinkerpop.gremlin.process.computer.MapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory; import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser; -import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverserSerializers; import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Contains; import org.apache.tinkerpop.gremlin.process.traversal.Operator; @@ -323,7 +322,7 @@ public final class GryoMapper implements Mapper<Kryo> { add(GryoTypeReg.of(O_OB_S_SE_SL_Traverser.class, 89)); add(GryoTypeReg.of(LP_O_OB_S_SE_SL_Traverser.class, 90)); add(GryoTypeReg.of(LP_O_OB_P_S_SE_SL_Traverser.class, 91)); - add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new DefaultRemoteTraverserSerializers.GryoSerializer())); // ***LAST ID*** + add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new GryoSerializers.DefaultRemoteTraverserSerializer())); // ***LAST ID*** add(GryoTypeReg.of(Bytecode.class, 122, new GryoSerializers.BytecodeSerializer())); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/25301326/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 be25f33..e785948 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 @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.structure.io.gryo; +import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser; import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Path; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -142,4 +143,18 @@ public final class GryoSerializers { } } } + + public final static class DefaultRemoteTraverserSerializer implements SerializerShim<DefaultRemoteTraverser> { + @Override + public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final DefaultRemoteTraverser remoteTraverser) { + kryo.writeClassAndObject(output, remoteTraverser.get()); + output.writeLong(remoteTraverser.bulk()); + } + + @Override + public <I extends InputShim> DefaultRemoteTraverser read(final KryoShim<I, ?> kryo, final I input, final Class<DefaultRemoteTraverser> remoteTraverserClass) { + final Object o = kryo.readClassAndObject(input); + return new DefaultRemoteTraverser<>(o, input.readLong()); + } + } }
