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/05/23 01:46:11 UTC

incubator-tinkerpop git commit: greatly simplified ConfigurationTraversal -- sweet.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 278ee6f6f -> ef2c71432


greatly simplified ConfigurationTraversal -- sweet.


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

Branch: refs/heads/master
Commit: ef2c7143215f289f1c45034e10441c8c7ec7887d
Parents: 278ee6f
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 22 17:46:24 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 22 17:46:24 2015 -0600

----------------------------------------------------------------------
 .../peerpressure/PeerPressureVertexProgram.java |  5 ++--
 .../ranking/pagerank/PageRankVertexProgram.java |  6 +++--
 .../computer/util/ConfigurationTraversal.java   | 24 ++++++--------------
 3 files changed, 14 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ef2c7143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
index 7e697a2..2b9b972 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalClassFunction;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
@@ -225,8 +226,8 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
         }
 
 
-        public Builder traversal(final Class<Supplier<Traversal.Admin<Vertex, Edge>>> traversalClass) {
-            ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder traversal(final Class<? extends Supplier<Traversal.Admin<?, ?>>> traversalClass) {
+            ConfigurationTraversal.storeState(new TraversalClassFunction(traversalClass), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ef2c7143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index b91efa4..d469544 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalClassFunction;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
@@ -44,6 +45,7 @@ import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
+import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -188,8 +190,8 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
         }
 
 
-        public Builder traversal(final Class<Function<Graph, Traversal.Admin<Vertex, Edge>>> traversalClass) {
-            ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder traversal(final Class<? extends Supplier<Traversal.Admin<?, ?>>> traversalClass) {
+            ConfigurationTraversal.storeState(new TraversalClassFunction(traversalClass), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ef2c7143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
index 9933ac9..eb8cc83 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
@@ -31,13 +31,12 @@ import java.util.function.Supplier;
  */
 public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Admin<S, E>> {
 
-    private Function<Graph, Traversal.Admin<S, E>> functionTraversal;
-    private Object configTraversal;
+    private Function<Graph, Traversal.Admin<S, E>> traversalFunction;
     private String configKey;
     private Graph graph;
 
     public Traversal.Admin<S, E> get() {
-        return this.functionTraversal.apply(this.graph);
+        return this.traversalFunction.apply(this.graph);
     }
 
     private ConfigurationTraversal() {
@@ -46,16 +45,16 @@ public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Ad
 
     public void storeState(final Configuration configuration) {
         try {
-            VertexProgramHelper.serialize(this.configTraversal, configuration, this.configKey);   // the traversal can not be serialized (probably because of lambdas). As such, try direct reference.
+            VertexProgramHelper.serialize(this.traversalFunction, configuration, this.configKey);   // the traversal can not be serialized (probably because of lambdas). As such, try direct reference.
         } catch (final IllegalArgumentException e) {
-            configuration.setProperty(this.configKey, this.configTraversal);
+            configuration.setProperty(this.configKey, this.traversalFunction);
         }
     }
 
-    public static <S, E> ConfigurationTraversal<S, E> storeState(final Object traversalConfigObject, final Configuration configuration, final String configKey) {
+    public static <S, E> ConfigurationTraversal<S, E> storeState(final Function<Graph, Traversal.Admin<S, E>> traversalFunction, final Configuration configuration, final String configKey) {
         final ConfigurationTraversal<S, E> configurationTraversal = new ConfigurationTraversal<>();
         configurationTraversal.configKey = configKey;
-        configurationTraversal.configTraversal = traversalConfigObject;
+        configurationTraversal.traversalFunction = traversalFunction;
         configurationTraversal.storeState(configuration);
         return configurationTraversal;
     }
@@ -65,16 +64,7 @@ public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Ad
         configurationTraversal.graph = graph;
         configurationTraversal.configKey = configKey;
         final Object configValue = configuration.getProperty(configKey);
-        configurationTraversal.configTraversal = configValue instanceof String ? VertexProgramHelper.deserialize(configuration, configKey) : (Function<Graph, Traversal.Admin<S, E>>) configValue;
-        if (configurationTraversal.configTraversal instanceof Class) {
-            try {
-                configurationTraversal.functionTraversal = ((Class<Function<Graph, Traversal.Admin<S, E>>>) configurationTraversal.configTraversal).newInstance();
-            } catch (final Exception e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        } else {
-            configurationTraversal.functionTraversal = (Function<Graph, Traversal.Admin<S, E>>) configurationTraversal.configTraversal;
-        }
+        configurationTraversal.traversalFunction = configValue instanceof String ? VertexProgramHelper.deserialize(configuration, configKey) : (Function<Graph, Traversal.Admin<S, E>>) configValue;
         return configurationTraversal;
     }
 }