TINKERPOP-1968 Minor change to loading Grateful from TinkerFactory Decided to load it from a resources in tinkergraph-gremlin. Seemed to better than relying on the local file system.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f6d76f9f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f6d76f9f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f6d76f9f Branch: refs/heads/shortest-path-wip Commit: f6d76f9fa16980f85e86b595d2e0c06e4d1cfc86 Parents: bd19934 Author: Stephen Mallette <sp...@genoprime.com> Authored: Fri May 18 18:39:39 2018 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Thu May 31 16:18:09 2018 -0400 ---------------------------------------------------------------------- .../the-gremlin-console/index.asciidoc | 5 ++- .../upgrade/release-3.2.x-incubating.asciidoc | 8 +++++ tinkergraph-gremlin/pom.xml | 19 +++++++++++ .../tinkergraph/structure/TinkerFactory.java | 32 ++++--------------- .../tinkergraph/structure/grateful-dead.kryo | Bin 0 -> 332226 bytes 5 files changed, 36 insertions(+), 28 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6d76f9f/docs/src/tutorials/the-gremlin-console/index.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/tutorials/the-gremlin-console/index.asciidoc b/docs/src/tutorials/the-gremlin-console/index.asciidoc index da8bac3..cc090d9 100644 --- a/docs/src/tutorials/the-gremlin-console/index.asciidoc +++ b/docs/src/tutorials/the-gremlin-console/index.asciidoc @@ -117,9 +117,8 @@ However, if you find that a larger graph might be helpful, there is another opti [gremlin-groovy] ---- -graph = TinkerGraph.open() -graph.io(gryo()).readGraph('data/grateful-dead.kryo') -graph +graph = TinkerFactory.createGratefulDead() +g = graph.traversal() ---- The Grateful Dead graph ships with the Gremlin Console and the data can be found in several formats (along with the http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6d76f9f/docs/src/upgrade/release-3.2.x-incubating.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc index 112ce22..ccdf51a 100644 --- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc +++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc @@ -27,6 +27,14 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima Please see the link:https://github.com/apache/tinkerpop/blob/3.2.10/CHANGELOG.asciidoc#release-3-2-10[changelog] for a complete list of all the modifications that are part of this release. +=== Upgrading for Users + +==== TinkerFactory.createGratefulDead() + +The Grateful Dead dataset has been with TinkerPop since the early days of 1.x. It has always been available as a +packaged dataset that needed to be loaded through the various IO options available, while other toy graphs had the +benefit of `TinkerFactory` to help get them bootstrapped. For 3.2.10, Grateful Dead is now more conveniently loaded +via that same method as the other toy graphs with `TinkerFactory.createGratefulDead()`. == TinkerPop 3.2.9 http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6d76f9f/tinkergraph-gremlin/pom.xml ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml index 1ff0aa0..1432ac5 100644 --- a/tinkergraph-gremlin/pom.xml +++ b/tinkergraph-gremlin/pom.xml @@ -127,6 +127,25 @@ limitations under the License. </configuration> </execution> <execution> + <id>copy-gratefuldead-to-tinkergraph-resources</id> + <phase>prepare-package</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure</outputDirectory> + <resources> + <resource> + <directory>${io.tmp.dir}</directory> + <filtering>false</filtering> + <includes> + <exclude>grateful-dead.kryo</exclude> + </includes> + </resource> + </resources> + </configuration> + </execution> + <execution> <id>copy-gio-from-tmp-to-resources</id> <phase>prepare-package</phase> <goals> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6d76f9f/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java index 3a47f17..6c0f1b2 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java @@ -24,11 +24,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; -import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo; import java.io.File; +import java.io.InputStream; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.apache.tinkerpop.gremlin.structure.io.IoCore.gryo; @@ -193,12 +192,7 @@ public final class TinkerFactory { /** * Creates the "grateful dead" graph which is a larger graph than most of the toy graphs but has real-world - * structure and application and is therefore useful for demonstrating more complex traversals. Unlike the - * other graphs, this creation process relies on a local data files for creation. Specifically, it requires - * {@code grateful-dead.kryo} to be present. It will check the following common directories in the listed order - * to try to load this graph: {@code ./}, {@code data/}, {@code ../data/} as these are the common places to find - * this file from normal TinkerPop packaging. If the file cannot be found in those directories an - * {@code IllegalStateException}. + * structure and application and is therefore useful for demonstrating more complex traversals. */ public static TinkerGraph createGratefulDead() { final TinkerGraph g = getTinkerGraphWithNumberManager(); @@ -210,24 +204,12 @@ public final class TinkerFactory { * Generate the graph in {@link #createGratefulDead()} into an existing graph. */ public static void generateGratefulDead(final TinkerGraph graph) { - final String fileName = "grateful-dead.kryo"; - final List<String> files = Arrays.asList(fileName, - "data/" + fileName, - ".." + File.separator + "data" + File.separator + fileName); - - for (String fn : files) { - final File f = new File(fn); - if (f.exists()) { - try { - graph.io(gryo()).readGraph(fn); - } catch (Exception ex) { - throw new IllegalStateException(ex); - } - } + final InputStream stream = TinkerFactory.class.getResourceAsStream("grateful-dead.kryo"); + try { + graph.io(gryo()).reader().create().readGraph(stream, graph); + } catch (Exception ex) { + throw new IllegalStateException(ex); } - - if (!graph.vertices().hasNext()) - throw new IllegalStateException("grateful-dead.kryo cannot be found"); } private static TinkerGraph getTinkerGraphWithNumberManager() { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6d76f9f/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo b/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo new file mode 100644 index 0000000..57fa587 Binary files /dev/null and b/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo differ