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 2015/03/24 21:23:38 UTC

incubator-tinkerpop git commit: The GryoSerializer is coming to a town near you with him homeboy GryoKryo. Shading is lame.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 84d1ad273 -> 95a33cf7e


The GryoSerializer is coming to a town near you with him homeboy GryoKryo. Shading is lame.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/95a33cf7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/95a33cf7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/95a33cf7

Branch: refs/heads/master
Commit: 95a33cf7e040dbd487bd674f2be39d5592306d9e
Parents: 84d1ad2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Mar 24 14:23:33 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Mar 24 14:23:33 2015 -0600

----------------------------------------------------------------------
 gremlin-core/pom.xml                            |  2 +-
 .../gremlin/structure/io/gryo/GryoInput.java    |  1 +
 .../structure/io/gryo/GryoSerializer.java       | 60 ++++++++++++++++++++
 .../driver/ser/GryoMessageSerializerV1d0.java   | 44 +++++++-------
 .../driver/ser/JsonBuilderGryoSerializer.java   | 14 ++---
 hadoop-gremlin/pom.xml                          |  4 --
 6 files changed, 91 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 4ba209a..e449b1a 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -133,7 +133,7 @@ limitations under the License.
                             <goal>shade</goal>
                         </goals>
                         <configuration>
-                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                            <createDependencyReducedPom>false</createDependencyReducedPom>
                             <artifactSet>
                                 <includes>
                                     <include>com.esotericsoftware.kryo:*</include>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
index 6187463..2dbfd7b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
@@ -28,6 +28,7 @@ import java.io.InputStream;
 public class GryoInput extends Input {
 
     public GryoInput() {
+        super();
     }
 
     public GryoInput(final int bufferSize) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
new file mode 100644
index 0000000..d8802c0
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
@@ -0,0 +1,60 @@
+/*
+ * 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.structure.io.gryo;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GryoSerializer<T> extends Serializer<T> {
+
+    public GryoSerializer() {
+        super();
+    }
+
+    public GryoSerializer(boolean acceptsNull) {
+        super(acceptsNull);
+    }
+
+
+    public GryoSerializer(boolean acceptsNull, boolean immutable) {
+        super(acceptsNull, immutable);
+    }
+
+
+    public abstract void write(final GryoKryo kryo, final GryoOutput output, final T object);
+
+
+    public abstract T read(final GryoKryo kryo, final GryoInput input, final Class<T> type);
+
+
+    @Override
+    public final void write(final Kryo kryo, final Output output, final T object) {
+        this.write((GryoKryo) kryo, (GryoOutput) output, object);
+    }
+
+    @Override
+    public final T read(final Kryo kryo, final Input input, final Class<T> type) {
+        return this.read((GryoKryo) kryo, (GryoInput) input, type);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
index 178fa24..f8ebd5a 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
@@ -18,19 +18,19 @@
  */
 package org.apache.tinkerpop.gremlin.driver.ser;
 
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Kryo;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Serializer;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Input;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Output;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.util.ReferenceCountUtil;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoInput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoKryo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.util.ReferenceCountUtil;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoOutput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializer;
 import org.javatuples.Pair;
 
 import java.io.ByteArrayOutputStream;
@@ -51,9 +51,9 @@ import java.util.stream.Collectors;
  */
 public class GryoMessageSerializerV1d0 implements MessageSerializer {
     private GryoMapper gryoMapper;
-    private ThreadLocal<Kryo> kryoThreadLocal = new ThreadLocal<Kryo>() {
+    private ThreadLocal<GryoKryo> kryoThreadLocal = new ThreadLocal<GryoKryo>() {
         @Override
-        protected Kryo initialValue() {
+        protected GryoKryo initialValue() {
             return gryoMapper.createMapper();
         }
     };
@@ -128,7 +128,7 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
         }
 
         if (!classNameList.isEmpty()) {
-            final List<Pair<Class, Function<Kryo, Serializer>>> classList = classNameList.stream().map(serializerDefinition -> {
+            final List<Pair<Class, Function<GryoKryo, GryoSerializer>>> classList = classNameList.stream().map(serializerDefinition -> {
                 String className;
                 Optional<String> serializerName;
                 if (serializerDefinition.contains(";")) {
@@ -145,20 +145,20 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
 
                 try {
                     final Class clazz = Class.forName(className);
-                    final Serializer serializer;
+                    final GryoSerializer serializer;
                     if (serializerName.isPresent()) {
                         final Class serializerClazz = Class.forName(serializerName.get());
-                        serializer = (Serializer) serializerClazz.newInstance();
+                        serializer = (GryoSerializer) serializerClazz.newInstance();
                     } else
                         serializer = null;
 
-                    return Pair.<Class, Function<Kryo, Serializer>>with(clazz, kryo -> serializer);
+                    return Pair.<Class, Function<GryoKryo, GryoSerializer>>with(clazz, kryo -> serializer);
                 } catch (Exception ex) {
                     throw new IllegalStateException("Class could not be found", ex);
                 }
             }).collect(Collectors.toList());
 
-            classList.forEach(c -> builder.addCustom(c.getValue0(), c.getValue1()));
+            classList.forEach(c -> builder.addCustom(c.getValue0(), (Function) c.getValue1()));
         }
 
         this.serializeToString = Boolean.parseBoolean(config.getOrDefault(TOKEN_SERIALIZE_RESULT_TO_STRING, "false").toString());
@@ -174,10 +174,10 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
     @Override
     public ResponseMessage deserializeResponse(final ByteBuf msg) throws SerializationException {
         try {
-            final Kryo kryo = kryoThreadLocal.get();
+            final GryoKryo kryo = kryoThreadLocal.get();
             final byte[] payload = new byte[msg.readableBytes()];
             msg.readBytes(payload);
-            try (final Input input = new Input(payload)) {
+            try (final GryoInput input = new GryoInput(payload)) {
                 final Map<String, Object> responseData = (Map<String, Object>) kryo.readClassAndObject(input);
                 final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
                 final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
@@ -213,9 +213,9 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
             message.put(SerTokens.TOKEN_RESULT, result);
             message.put(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null);
 
-            final Kryo kryo = kryoThreadLocal.get();
+            final GryoKryo kryo = kryoThreadLocal.get();
             try (final OutputStream baos = new ByteArrayOutputStream()) {
-                final Output output = new Output(baos);
+                final GryoOutput output = new GryoOutput(baos);
                 kryo.writeClassAndObject(output, message);
 
                 final long size = output.total();
@@ -238,10 +238,10 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
     @Override
     public RequestMessage deserializeRequest(final ByteBuf msg) throws SerializationException {
         try {
-            final Kryo kryo = kryoThreadLocal.get();
+            final GryoKryo kryo = kryoThreadLocal.get();
             final byte[] payload = new byte[msg.readableBytes()];
             msg.readBytes(payload);
-            try (final Input input = new Input(payload)) {
+            try (final GryoInput input = new GryoInput(payload)) {
                 final Map<String, Object> requestData = (Map<String, Object>) kryo.readClassAndObject(input);
                 final RequestMessage.Builder builder = RequestMessage.build((String) requestData.get(SerTokens.TOKEN_OP))
                         .overrideRequestId((UUID) requestData.get(SerTokens.TOKEN_REQUEST))
@@ -260,9 +260,9 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
     public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
         ByteBuf encodedMessage = null;
         try {
-            final Kryo kryo = kryoThreadLocal.get();
+            final GryoKryo kryo = kryoThreadLocal.get();
             try (final OutputStream baos = new ByteArrayOutputStream()) {
-                final Output output = new Output(baos);
+                final GryoOutput output = new GryoOutput(baos);
                 final String mimeType = serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE;
                 output.writeByte(mimeType.length());
                 output.write(mimeType.getBytes(UTF8));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
index ff8310f..62f6219 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
@@ -18,27 +18,27 @@
  */
 package org.apache.tinkerpop.gremlin.driver.ser;
 
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Kryo;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Serializer;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Input;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Output;
 import groovy.json.JsonBuilder;
 import groovy.json.JsonSlurper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoInput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoKryo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoOutput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializer;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public class JsonBuilderGryoSerializer extends Serializer<JsonBuilder> {
+public class JsonBuilderGryoSerializer extends GryoSerializer<JsonBuilder> {
 
     final JsonSlurper slurper = new JsonSlurper();
 
     @Override
-    public void write(final Kryo kryo, final Output output, final JsonBuilder jsonBuilder) {
+    public void write(final GryoKryo kryo, final GryoOutput output, final JsonBuilder jsonBuilder) {
         output.writeString(jsonBuilder.toString());
     }
 
     @Override
-    public JsonBuilder read(final Kryo kryo, final Input input, final Class<JsonBuilder> jsonBuilderClass) {
+    public JsonBuilder read(final GryoKryo kryo, final GryoInput input, final Class<JsonBuilder> jsonBuilderClass) {
         final String jsonString = input.readString();
         return new JsonBuilder(slurper.parseText(jsonString));
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/hadoop-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index d851e5e..a7e039c 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -141,10 +141,6 @@ limitations under the License.
                     <artifactId>commons-codec</artifactId>
                 </exclusion>
                 <!-- gremlin-core conflicts -->
-                <!--<exclusion>
-                    <groupId>com.esotericsoftware.kryo</groupId>
-                    <artifactId>kryo</artifactId>
-                </exclusion>-->
                 <exclusion>
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-api</artifactId>