Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-2023 1f2b52840 -> bbc0265c0 (forced update)


TINKERPOP-2024 Make server archetype use remote traversal

Since we're promoting remote traversals over scripts it would be better for the 
archetype to use them.


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

Branch: refs/heads/TINKERPOP-2023
Commit: 1a3549f7232ebe65cbba158c1442a567bc2dc695
Parents: 00cb9a8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Aug 13 10:28:53 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Aug 13 10:28:53 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../archetype-resources/README.asciidoc         |  4 +--
 .../src/main/java/Service.java                  | 30 ++++++++------------
 .../src/test/java/ServiceTest.java              |  2 +-
 4 files changed, 16 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1a3549f7/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index a45f0f8..d3db46f 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 * Fixed problem with Gremlin Server sometimes returning an additional message 
after a failure.
 * Allowed spaces in classpath for `gremlin-server.bat`.
+* Modified Maven archetype for Gremlin Server to use remote traversals rather 
than scripts.
 * Added an system error code for failed plugin installs for Gremlin Server 
`-i` option.
 * Match numbers in `choose()` options using `NumberHelper` (match values, 
ignore data type).
 * Added support for GraphSON serialization of `Date` in Javascript.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1a3549f7/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/README.asciidoc
----------------------------------------------------------------------
diff --git 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/README.asciidoc
 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/README.asciidoc
index 49d0f62..04ea28e 100644
--- 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/README.asciidoc
+++ 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/README.asciidoc
@@ -18,8 +18,8 @@ limitations under the License.
 
 This is a starter project that demonstrates how a basic
 
link:http://tinkerpop.apache.org/docs/${project.version}/reference/#gremlin-server[Gremlin
 Server] project is structured
-with Maven. This project demonstrates how to connect to Gremlin Server through 
Java using the
-link:http://tinkerpop.apache.org/docs/${project.version}/reference/#connecting-via-java[Gremlin
 Driver] that is
+with Maven. This project demonstrates how to connect to Gremlin Server with 
Java using remote traversals with the
+link:http://tinkerpop.apache.org/docs/${project.version}/reference/#connecting-via-remotegraph[Gremlin
 Driver] that is
 distributed by TinkerPop.
 
 == Prerequisites

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1a3549f7/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/main/java/Service.java
----------------------------------------------------------------------
diff --git 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/main/java/Service.java
 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/main/java/Service.java
index 3479c30..a79bdaa 100644
--- 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/main/java/Service.java
+++ 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/main/java/Service.java
@@ -19,13 +19,11 @@
 package ${package};
 
 import org.apache.tinkerpop.gremlin.driver.Cluster;
-import org.apache.tinkerpop.gremlin.driver.Client;
-import org.apache.tinkerpop.gremlin.driver.Result;
+import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
+import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 
-import java.util.Map;
-import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
 
 public class Service implements AutoCloseable {
 
@@ -35,12 +33,12 @@ public class Service implements AutoCloseable {
     private final Cluster cluster = Cluster.build().port(45940).create();
 
     /**
-     * Use the Cluster instance to construct different Client instances (e.g. 
one for sessionless communication
-     * and one or more sessions). A sessionless Client should be thread-safe 
and typically no more than one is
-     * needed unless there is some need to divide connection pools across 
multiple Client instances. In this case
-     * there is just a single sessionless Client instance used for the entire 
App.
+     * Construct a remote GraphTraversalSource using the above created Cluster 
instance that will connect to Gremlin
+     * Server.
      */
-    private final Client client = cluster.connect();
+    private final GraphTraversalSource g = EmptyGraph.instance().
+                                                      traversal().
+                                                      
withRemote(DriverRemoteConnection.using(cluster));
 
     /**
      * Create Service as a singleton given the simplicity of App.
@@ -53,18 +51,14 @@ public class Service implements AutoCloseable {
         return INSTANCE;
     }
 
-    public List<String> findCreatorsOfSoftware(String softwareName) throws 
Exception {
-        // it is very important from a performance perspective to parameterize 
queries
-        Map params = new HashMap();
-        params.put("n", softwareName);
-
-        return 
client.submit("g.V().hasLabel('software').has('name',n).in('created').values('name')",
 params)
-                .all().get().stream().map(r -> 
r.getString()).collect(Collectors.toList());
+    public List<Object> findCreatorsOfSoftware(String softwareName) throws 
Exception {
+        return g.V().has("software", "name", softwareName).
+                 in("created").
+                 values("name").toList();
     }
 
     @Override
     public void close() throws Exception {
-        client.close();
         cluster.close();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1a3549f7/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/test/java/ServiceTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/test/java/ServiceTest.java
 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/test/java/ServiceTest.java
index e013671..cc3feaa 100644
--- 
a/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/test/java/ServiceTest.java
+++ 
b/gremlin-archetype/gremlin-archetype-server/src/main/resources/archetype-resources/src/test/java/ServiceTest.java
@@ -78,7 +78,7 @@ public class ServiceTest {
 
     @Test
     public void shouldCreateGraph() throws Exception {
-        final List<String> result = service.findCreatorsOfSoftware("lop");
+        final List<Object> result = service.findCreatorsOfSoftware("lop");
         assertThat(result, is(Arrays.asList("marko", "josh", "peter")));
     }
 }
\ No newline at end of file

Reply via email to