From 466768821429e50e9969231f7d52b1c61562611d Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Thu, 1 Jan 2015 17:13:17 -0500 Subject: [PATCH] Adding back the Class argument varients for methods. These will just call the ClassInitializer varient with a default initializer. They are provided mostly for convience. Change-Id: I2e3b132f53f11bfe82a2280ff5f956040a131716 --- .../syncleus/ferma/AbstractVertexFrame.java | 40 ++++ .../ferma/AbstractVertexTraversal.java | 14 +- .../syncleus/ferma/DelegatingFramedGraph.java | 176 +++++------------- .../java/com/syncleus/ferma/EdgeFrame.java | 2 - .../java/com/syncleus/ferma/FramedGraph.java | 74 +++++++- .../syncleus/ferma/GlobalVertexTraversal.java | 10 + .../java/com/syncleus/ferma/VertexFrame.java | 130 ++++++++++++- .../com/syncleus/ferma/VertexTraversal.java | 26 +++ .../com/syncleus/ferma/FramedGraphTest.java | 130 +++++++++++++ .../com/syncleus/ferma/FramedVertexTest.java | 144 +++++++------- .../ferma/SimpleTypeResolverTest.java | 2 +- 11 files changed, 525 insertions(+), 223 deletions(-) diff --git a/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java b/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java index 31133f35..26f4fe27 100644 --- a/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java +++ b/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java @@ -50,6 +50,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement final T framedEdge = getGraph().frameNewElement(edge, initializer); return framedEdge; } + + @Override + public <T> T addFramedEdge(final String label, final VertexFrame inVertex, final Class<T> kind) { + return this.addFramedEdge(label, inVertex, new DefaultClassInitializer<>(kind)); + } @Override public <T> T addFramedEdgeExplicit(final String label, final VertexFrame inVertex, final ClassInitializer<T> initializer) { @@ -58,6 +63,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement final T framedEdge = getGraph().frameNewElementExplicit(edge, initializer); return framedEdge; } + + @Override + public <T> T addFramedEdgeExplicit(final String label, final VertexFrame inVertex, final Class<T> kind) { + return this.addFramedEdgeExplicit(label, inVertex, new DefaultClassInitializer<>(kind)); + } @Override public TEdge addFramedEdge(final String label, final VertexFrame inVertex) { @@ -198,6 +208,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkOut((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkOut(final Class<K> kind, final String... labels) { + return this.setLinkOut(new DefaultClassInitializer<>(kind), labels); + } @Override public <K> K setLinkOutExplicit(final ClassInitializer<K> initializer, final String... labels) { @@ -205,6 +220,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkOut((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkOutExplicit(final Class<K> kind, final String... labels) { + return this.setLinkOutExplicit(new DefaultClassInitializer<>(kind), labels); + } @Override public <K> K setLinkIn(final ClassInitializer<K> initializer, final String... labels) { @@ -212,6 +232,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkIn((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkIn(final Class<K> kind, final String... labels) { + return this.setLinkIn(new DefaultClassInitializer<>(kind), labels); + } @Override public <K> K setLinkInExplicit(final ClassInitializer<K> initializer, final String... labels) { @@ -219,6 +244,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkIn((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkInExplicit(final Class<K> kind, final String... labels) { + return this.setLinkInExplicit(new DefaultClassInitializer<>(kind), labels); + } @Override public <K> K setLinkBoth(final ClassInitializer<K> initializer, final String... labels) { @@ -226,6 +256,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkBoth((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkBoth(final Class<K> kind, final String... labels) { + return this.setLinkBoth(new DefaultClassInitializer<>(kind), labels); + } @Override public <K> K setLinkBothExplicit(final ClassInitializer<K> initializer, final String... labels) { @@ -233,6 +268,11 @@ public abstract class AbstractVertexFrame extends AbstractElementFrame implement setLinkBoth((VertexFrame) vertex, labels); return vertex; } + + @Override + public <K> K setLinkBothExplicit(final Class<K> kind, final String... labels) { + return this.setLinkBothExplicit(new DefaultClassInitializer<>(kind), labels); + } @Override public VertexTraversal<?, ?, ?> traversal() { diff --git a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java b/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java index 9002aebd..fde022fe 100644 --- a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java +++ b/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java @@ -63,7 +63,7 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex @Override public VertexFrame nextOrAdd() { - return nextOrAdd(VertexFrame.DEFAULT_INITIALIZER); + return nextOrAdd(TVertex.DEFAULT_INITIALIZER); } @Override @@ -433,7 +433,11 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex catch (final NoSuchElementException e) { return graph().addFramedVertex(initializer); } - + } + + @Override + public <N> N nextOrAdd(final Class<N> kind) { + return this.nextOrAdd(new DefaultClassInitializer<>(kind)); } @Override @@ -444,7 +448,11 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex catch (final NoSuchElementException e) { return graph().addFramedVertex(initializer); } - + } + + @Override + public <N> N nextOrAddExplicit(final Class<N> kind) { + return this.nextOrAddExplicit(new DefaultClassInitializer<>(kind)); } @Override diff --git a/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java b/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java index 3df3656a..4c207fd4 100644 --- a/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java +++ b/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java @@ -236,6 +236,11 @@ public class DelegatingFramedGraph implements FramedGraph { initializer.initalize(frame); return frame; } + + @Override + public <T> T frameNewElement(final Element e, final Class<T> kind) { + return this.frameNewElement(e, new DefaultClassInitializer<>(kind)); + } @Override public <T> Iterator<? extends T> frame(final Iterator<? extends Element> pipeline, final Class<T> kind) { @@ -262,169 +267,104 @@ public class DelegatingFramedGraph implements FramedGraph { } @Override - public <T> T frameNewElementExplicit(final Element e, final ClassInitializer<T> kind) { - final T frame = frameElement(e, kind.getInitializationType()); - this.untypedResolver.init(e, kind.getInitializationType()); + public <T> T frameNewElementExplicit(final Element e, final ClassInitializer<T> initializer) { + final T frame = frameElement(e, initializer.getInitializationType()); + this.untypedResolver.init(e, initializer.getInitializationType()); ((AbstractElementFrame) frame).init(); - kind.initalize(frame); + initializer.initalize(frame); return frame; } + + @Override + public <T> T frameNewElementExplicit(final Element e, final Class<T> kind) { + return this.frameNewElementExplicit(e, new DefaultClassInitializer<>(kind)); + } @Override - public <T> Iterator<? extends T> frameExplicit(final Iterator<? extends Element> pipeline, final ClassInitializer<T> kind) { + public <T> Iterator<? extends T> frameExplicit(final Iterator<? extends Element> pipeline, final Class<T> kind) { return Iterators.transform(pipeline, new Function<Element, T>() { @Override public T apply(final Element input) { - return frameElementExplicit(input, kind.getInitializationType()); + return frameElementExplicit(input, kind); } }); } - /** - * Add a vertex to the graph - * - * @param <T> The type used to frame the element. - * @param kind - * The kind of the frame. - * @return The framed vertex. - */ @Override - public <T> T addFramedVertex(final ClassInitializer<T> kind) { - final T framedVertex = frameNewElement(delegate.addVertex(null), kind); + public <T> T addFramedVertex(final ClassInitializer<T> initializer) { + final T framedVertex = frameNewElement(delegate.addVertex(null), initializer); return framedVertex; } + + @Override + public <T> T addFramedVertex(final Class<T> kind) { + return this.addFramedVertex(new DefaultClassInitializer<>(kind)); + } - /** - * Add a vertex to the graph - * - * This will bypass the default type resolution and use the untyped resolver - * instead. This method is useful for speeding up a look up when type resolution - * isn't required. - * - * @param <T> The type used to frame the element. - * @param kind - * The kind of the frame. - * @return The framed vertex. - */ @Override - public <T> T addFramedVertexExplicit(final ClassInitializer<T> kind) { - final T framedVertex = frameNewElementExplicit(delegate.addVertex(null), kind); + public <T> T addFramedVertexExplicit(final ClassInitializer<T> initializer) { + final T framedVertex = frameNewElementExplicit(delegate.addVertex(null), initializer); return framedVertex; } + + @Override + public <T> T addFramedVertexExplicit(final Class<T> kind) { + return this.addFramedVertexExplicit(new DefaultClassInitializer<>(kind)); + } - /** - * Add a vertex to the graph using a frame type of {@link TVertex}. - * - * @return The framed vertex. - */ @Override public TVertex addFramedVertex() { return addFramedVertex(TVertex.DEFAULT_INITIALIZER); } - /** - * Add a vertex to the graph using a frame type of {@link TVertex}. - * - * This will bypass the default type resolution and use the untyped resolver - * instead. This method is useful for speeding up a look up when type resolution - * isn't required. - * - * @return The framed vertex. - */ @Override public TVertex addFramedVertexExplicit() { return addFramedVertexExplicit(TVertex.DEFAULT_INITIALIZER); } - /** - * Add a edge to the graph - * - * @param <T> The type used to frame the element. - * @param source The source vertex - * @param destination The destination vertex - * @param label The label for the edge - * @param kind - * The kind of the frame. - * @return The framed edge. - */ @Override - public <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, final ClassInitializer<T> kind) { - final T framedEdge = frameNewElement(this.delegate.addEdge(null, source.getElement(), destination.getElement(), label), kind); + public <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, final ClassInitializer<T> initializer) { + final T framedEdge = frameNewElement(this.delegate.addEdge(null, source.getElement(), destination.getElement(), label), initializer); return framedEdge; } + + @Override + public <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, final Class<T> kind) { + return this.addFramedEdge(source, destination, label, new DefaultClassInitializer<>(kind)); + } - /** - * Add a edge to the graph - * - * This will bypass the default type resolution and use the untyped resolver - * instead. This method is useful for speeding up a look up when type resolution - * isn't required. - * - * @param <T> The type used to frame the element. - * @param source The source vertex - * @param destination The destination vertex - * @param label The label for the edge - * @param kind - * The kind of the frame. - * @return The framed edge. - */ @Override - public <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, final ClassInitializer<T> kind) { - final T framedEdge = frameNewElementExplicit(this.delegate.addEdge(null, source.getElement(), destination.getElement(), label), kind); + public <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, final ClassInitializer<T> initializer) { + final T framedEdge = frameNewElementExplicit(this.delegate.addEdge(null, source.getElement(), destination.getElement(), label), initializer); return framedEdge; } + + @Override + public <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, final Class<T> kind) { + return this.addFramedEdgeExplicit(source, destination, label, new DefaultClassInitializer<>(kind)); + } - /** - * Add a edge to the graph using a frame type of {@link TEdge}. - * - * @param source The source vertex - * @param destination The destination vertex - * @param label The label for the edge - * @return The framed edge. - */ @Override public TEdge addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label) { return addFramedEdge(source, destination, label, TEdge.DEFAULT_INITIALIZER); } - /** - * Add a edge to the graph using a frame type of {@link TEdge}. - * - * This will bypass the default type resolution and use the untyped resolver - * instead. This method is useful for speeding up a look up when type resolution - * isn't required. - * - * @param source The source vertex - * @param destination The destination vertex - * @param label The label for the edge - * @return The framed edge. - */ @Override public TEdge addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label) { return addFramedEdgeExplicit(source, destination, label, TEdge.DEFAULT_INITIALIZER); } - /** - * Query over all vertices in the graph. - * - * @return The query. - */ @Override public VertexTraversal<?, ?, ?> v() { return new GlobalVertexTraversal(this, delegate); } - /** - * Query over all edges in the graph. - * - * @return The query. - */ @Override public EdgeTraversal<?, ?, ?> e() { return new SimpleTraversal(this, delegate).e(); @@ -470,13 +410,6 @@ public class DelegatingFramedGraph implements FramedGraph { return new FramingEdgeIterable<>(this, this.getEdges(key, value), kind, true); } - /** - * Query over a list of vertices in the graph. - * - * @param ids - * The ids of the vertices. - * @return The query. - */ @Override public VertexTraversal<?, ?, ?> v(final Collection<?> ids) { return new SimpleTraversal(this, Iterators.transform(ids.iterator(), new Function<Object, Vertex>() { @@ -489,13 +422,6 @@ public class DelegatingFramedGraph implements FramedGraph { })).castToVertices(); } - /** - * Query over a list of vertices in the graph. - * - * @param ids - * The ids of the vertices. - * @return The query. - */ @Override public VertexTraversal<?, ?, ?> v(final Object... ids) { return new SimpleTraversal(this, Iterators.transform(Iterators.forArray(ids), new Function<Object, Vertex>() { @@ -508,13 +434,6 @@ public class DelegatingFramedGraph implements FramedGraph { })).castToVertices(); } - /** - * Query over a list of edges in the graph. - * - * @param ids - * The ids of the edges. - * @return The query. - */ @Override public EdgeTraversal<?, ?, ?> e(final Object... ids) { return new SimpleTraversal(this, Iterators.transform(Iterators.forArray(ids), new Function<Object, Edge>() { @@ -527,13 +446,6 @@ public class DelegatingFramedGraph implements FramedGraph { })).castToEdges(); } - /** - * Query over a list of edges in the graph. - * - * @param ids - * The ids of the edges. - * @return The query. - */ @Override public EdgeTraversal<?, ?, ?> e(final Collection<?> ids) { return new SimpleTraversal(this, Iterators.transform(ids.iterator(), new Function<Object, Edge>() { diff --git a/src/main/java/com/syncleus/ferma/EdgeFrame.java b/src/main/java/com/syncleus/ferma/EdgeFrame.java index 59710f8e..1fa79c89 100644 --- a/src/main/java/com/syncleus/ferma/EdgeFrame.java +++ b/src/main/java/com/syncleus/ferma/EdgeFrame.java @@ -22,8 +22,6 @@ import com.google.gson.JsonObject; import com.tinkerpop.blueprints.Edge; public interface EdgeFrame extends ElementFrame { - static final ClassInitializer<EdgeFrame> DEFAULT_INITIALIZER = new DefaultClassInitializer(EdgeFrame.class); - @Override Edge getElement(); diff --git a/src/main/java/com/syncleus/ferma/FramedGraph.java b/src/main/java/com/syncleus/ferma/FramedGraph.java index e97db7e9..676a058b 100644 --- a/src/main/java/com/syncleus/ferma/FramedGraph.java +++ b/src/main/java/com/syncleus/ferma/FramedGraph.java @@ -35,6 +35,16 @@ public interface FramedGraph extends Graph { */ void close(); + /** + * Add a vertex to the graph + * + * @param <T> The type used to frame the element. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The framed vertex. + */ + <T> T addFramedVertex(ClassInitializer<T> initializer); + /** * Add a vertex to the graph * @@ -43,8 +53,22 @@ public interface FramedGraph extends Graph { * The kind of the frame. * @return The framed vertex. */ - <T> T addFramedVertex(ClassInitializer<T> kind); + <T> T addFramedVertex(Class<T> kind); + /** + * Add a vertex to the graph + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <T> The type used to frame the element. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The framed vertex. + */ + <T> T addFramedVertexExplicit(ClassInitializer<T> initializer); + /** * Add a vertex to the graph * @@ -57,7 +81,7 @@ public interface FramedGraph extends Graph { * The kind of the frame. * @return The framed vertex. */ - <T> T addFramedVertexExplicit(ClassInitializer<T> kind); + <T> T addFramedVertexExplicit(Class<T> kind); /** * Add a vertex to the graph using a frame type of {@link TVertex}. @@ -77,6 +101,19 @@ public interface FramedGraph extends Graph { */ TVertex addFramedVertexExplicit(); + /** + * Add a edge to the graph + * + * @param <T> The type used to frame the element. + * @param source The source vertex + * @param destination the destination vertex + * @param label the label. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The framed edge. + */ + <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, ClassInitializer<T> initializer); + /** * Add a edge to the graph * @@ -88,8 +125,25 @@ public interface FramedGraph extends Graph { * The kind of the frame. * @return The framed edge. */ - <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, ClassInitializer<T> kind); + <T> T addFramedEdge(final VertexFrame source, final VertexFrame destination, final String label, Class<T> kind); + /** + * Add a edge to the graph + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <T> The type used to frame the element. + * @param source The source vertex + * @param destination the destination vertex + * @param label the label. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The framed edge. + */ + <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, ClassInitializer<T> initializer); + /** * Add a edge to the graph * @@ -105,7 +159,7 @@ public interface FramedGraph extends Graph { * The kind of the frame. * @return The framed edge. */ - <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, ClassInitializer<T> kind); + <T> T addFramedEdgeExplicit(final VertexFrame source, final VertexFrame destination, final String label, Class<T> kind); /** * Add a edge to the graph using a frame type of {@link TEdge}. @@ -203,13 +257,17 @@ public interface FramedGraph extends Graph { <T> Iterator<? extends T> frame(Iterator<? extends Element> pipeline, final Class<T> kind); - <T> T frameNewElement(Element e, ClassInitializer<T> kind); + <T> T frameNewElement(Element e, ClassInitializer<T> initializer); + + <T> T frameNewElement(Element e, Class<T> kind); - <T> T frameElement(Element e, Class<T> initializer); + <T> T frameElement(Element e, Class<T> kind); - <T> T frameNewElementExplicit(Element e, ClassInitializer<T> kind); + <T> T frameNewElementExplicit(Element e, ClassInitializer<T> initializer); + + <T> T frameNewElementExplicit(Element e, Class<T> kind); <T> T frameElementExplicit(Element e, Class<T> kind); - <T> Iterator<? extends T> frameExplicit(Iterator<? extends Element> pipeline, final ClassInitializer<T> kind); + <T> Iterator<? extends T> frameExplicit(Iterator<? extends Element> pipeline, final Class<T> kind); } diff --git a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java b/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java index a29533f9..212a06ff 100644 --- a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java +++ b/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java @@ -297,11 +297,21 @@ public class GlobalVertexTraversal<C, S, M> implements VertexTraversal<C, S, M> public <N> N nextOrAddExplicit(final ClassInitializer<N> initializer) { return this.simpleDelegate().nextOrAddExplicit(initializer); } + + @Override + public <N> N nextOrAddExplicit(final Class<N> kind) { + return this.nextOrAddExplicit(new DefaultClassInitializer<>(kind)); + } @Override public <N> N nextOrAdd(final ClassInitializer<N> initializer) { return this.delegate().nextOrAdd(initializer); } + + @Override + public <N> N nextOrAdd(final Class<N> kind) { + return this.nextOrAdd(new DefaultClassInitializer<>(kind)); + } @Override public <N> List<? extends N> next(final int amount, final Class<N> kind) { diff --git a/src/main/java/com/syncleus/ferma/VertexFrame.java b/src/main/java/com/syncleus/ferma/VertexFrame.java index 1d75ff98..0ecf30d6 100644 --- a/src/main/java/com/syncleus/ferma/VertexFrame.java +++ b/src/main/java/com/syncleus/ferma/VertexFrame.java @@ -21,12 +21,24 @@ package com.syncleus.ferma; import com.google.gson.JsonObject; import com.tinkerpop.blueprints.Vertex; -public interface VertexFrame extends ElementFrame { - static final ClassInitializer<VertexFrame> DEFAULT_INITIALIZER = new DefaultClassInitializer(VertexFrame.class); - +public interface VertexFrame extends ElementFrame { @Override Vertex getElement(); + /** + * Add an edge using the supplied frame type. + * + * @param <T> The type for the framed edge. + * @param label + * The label for the edge + * @param inVertex + * The vertex to link to. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The new edge. + */ + <T> T addFramedEdge(String label, VertexFrame inVertex, ClassInitializer<T> initializer); + /** * Add an edge using the supplied frame type. * @@ -39,8 +51,26 @@ public interface VertexFrame extends ElementFrame { * The kind of frame. * @return The new edge. */ - <T> T addFramedEdge(String label, VertexFrame inVertex, ClassInitializer<T> kind); + <T> T addFramedEdge(String label, VertexFrame inVertex, Class<T> kind); + /** + * Add an edge using the supplied frame type. + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <T> The type for the framed edge. + * @param label + * The label for the edge + * @param inVertex + * The vertex to link to. + * @param initializer + * the initializer for the frame which defines its type and may initialize properties + * @return The new edge. + */ + <T> T addFramedEdgeExplicit(String label, VertexFrame inVertex, ClassInitializer<T> initializer); + /** * Add an edge using the supplied frame type. * @@ -57,7 +87,7 @@ public interface VertexFrame extends ElementFrame { * The kind of frame. * @return The new edge. */ - <T> T addFramedEdgeExplicit(String label, VertexFrame inVertex, ClassInitializer<T> kind); + <T> T addFramedEdgeExplicit(String label, VertexFrame inVertex, Class<T> kind); /** * Add an edge using a frame type of {@link TEdge}. @@ -217,6 +247,19 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkOut(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all out edges with the labels and then add a single edge to a new + * vertex. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkOut(Class<K> kind, String... labels); /** * Remove all out edges with the labels and then add a single edge to a new @@ -234,6 +277,23 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkOutExplicit(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all out edges with the labels and then add a single edge to a new + * vertex. + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkOutExplicit(Class<K> kind, String... labels); /** * Remove all in edges with the labels and then add a single edge from a @@ -247,6 +307,19 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkIn(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all in edges with the labels and then add a single edge from a + * new vertex. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkIn(Class<K> kind, String... labels); /** * Remove all in edges with the labels and then add a single edge from a @@ -264,6 +337,23 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkInExplicit(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all in edges with the labels and then add a single edge from a + * new vertex. + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkInExplicit(Class<K> kind, String... labels); /** * Remove all edges with the labels and then add edges to/from a new @@ -277,6 +367,19 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkBoth(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all edges with the labels and then add edges to/from a new + * vertex. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkBoth(Class<K> kind, String... labels); /** * Remove all edges with the labels and then add edges to/from a new @@ -294,6 +397,23 @@ public interface VertexFrame extends ElementFrame { * @return The newly created edge. */ <K> K setLinkBothExplicit(ClassInitializer<K> initializer, String... labels); + + /** + * Remove all edges with the labels and then add edges to/from a new + * vertex. + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <K> The type used to frame the edge. + * @param kind + * The kind of frame. + * @param labels + * The labels of the edges. + * @return The newly created edge. + */ + <K> K setLinkBothExplicit(Class<K> kind, String... labels); /** * Shortcut to get frame Traversal of current element diff --git a/src/main/java/com/syncleus/ferma/VertexTraversal.java b/src/main/java/com/syncleus/ferma/VertexTraversal.java index 561274dc..3a46dc64 100644 --- a/src/main/java/com/syncleus/ferma/VertexTraversal.java +++ b/src/main/java/com/syncleus/ferma/VertexTraversal.java @@ -336,6 +336,21 @@ public interface VertexTraversal<C, S, M> extends Traversal<VertexFrame, C, S, M * @return the next emitted object */ <N> N nextOrAddExplicit(ClassInitializer<N> initializer); + + /** + * Get the next object emitted from the pipeline. If no such object exists a + * new vertex is created. + * + * This will bypass the default type resolution and use the untyped resolver + * instead. This method is useful for speeding up a look up when type resolution + * isn't required. + * + * @param <N> The type used to frame the element + * @param kind + * The kind of frame. + * @return the next emitted object + */ + <N> N nextOrAddExplicit(Class<N> kind); /** * Get the next object emitted from the pipeline. If no such object exists a @@ -347,6 +362,17 @@ public interface VertexTraversal<C, S, M> extends Traversal<VertexFrame, C, S, M * @return the next emitted object */ <N> N nextOrAdd(ClassInitializer<N> initializer); + + /** + * Get the next object emitted from the pipeline. If no such object exists a + * new vertex is created. + * + * @param <N> The type used to frame the element + * @param kind + * The kind of frame. + * @return the next emitted object + */ + <N> N nextOrAdd(Class<N> kind); /** * Return the next X objects in the traversal as a list. diff --git a/src/test/java/com/syncleus/ferma/FramedGraphTest.java b/src/test/java/com/syncleus/ferma/FramedGraphTest.java index 3f741817..a99f2303 100644 --- a/src/test/java/com/syncleus/ferma/FramedGraphTest.java +++ b/src/test/java/com/syncleus/ferma/FramedGraphTest.java @@ -57,6 +57,28 @@ public class FramedGraphTest { final Person bryn = fg.v().has("name", "Bryn").next(Person.class); + Assert.assertEquals("Bryn", bryn.getName()); + Assert.assertEquals(15, bryn.getKnowsList().get(0).getYears()); + + final Collection<? extends Integer> knowsCollection = fg.v().has("name", "Julia").bothE().property("years", Integer.class).aggregate().cap(); + Assert.assertEquals(1, knowsCollection.size()); + } + + @Test + public void testSanityByClass() { + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g); + final Person p1 = fg.addFramedVertex(Person.class); + p1.setName("Bryn"); + + final Person p2 = fg.addFramedVertex(Person.class); + p2.setName("Julia"); + final Knows knows = p1.addKnows(p2); + knows.setYears(15); + + final Person bryn = fg.v().has("name", "Bryn").next(Person.class); + + Assert.assertEquals("Bryn", bryn.getName()); Assert.assertEquals(15, bryn.getKnowsList().get(0).getYears()); @@ -79,6 +101,28 @@ public class FramedGraphTest { final Person bryn = fg.v().has("name", "Bryn").nextExplicit(Person.class); + Assert.assertEquals("Bryn", bryn.getName()); + Assert.assertEquals(15, bryn.getKnowsListExplicit().get(0).getYears()); + + final Collection<? extends Integer> knowsCollection = fg.v().has("name", "Julia").bothE().property("years", Integer.class).aggregate().cap(); + Assert.assertEquals(1, knowsCollection.size()); + } + + @Test + public void testSanityExplicitByClass() { + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g); + final Person p1 = fg.addFramedVertexExplicit(Person.class); + p1.setName("Bryn"); + + final Person p2 = fg.addFramedVertexExplicit(Person.class); + p2.setName("Julia"); + final Knows knows = p1.addKnowsExplicit(p2); + knows.setYears(15); + + final Person bryn = fg.v().has("name", "Bryn").nextExplicit(Person.class); + + Assert.assertEquals("Bryn", bryn.getName()); Assert.assertEquals(15, bryn.getKnowsListExplicit().get(0).getYears()); @@ -103,6 +147,24 @@ public class FramedGraphTest { Assert.assertEquals(Programmer.class, bryn.getClass()); Assert.assertEquals(Person.class, julia.getClass()); } + + @Test + public void testJavaTypingByClass() { + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g, true, false); + + final Person p1 = fg.addFramedVertex(Programmer.class); + p1.setName("Bryn"); + + final Person p2 = fg.addFramedVertex(Person.class); + p2.setName("Julia"); + + final Person bryn = fg.v().has("name", "Bryn").next(Person.class); + final Person julia = fg.v().has("name", "Julia").next(Person.class); + + Assert.assertEquals(Programmer.class, bryn.getClass()); + Assert.assertEquals(Person.class, julia.getClass()); + } @Test public void testJavaTypingAddExplicit() { @@ -121,6 +183,24 @@ public class FramedGraphTest { Assert.assertEquals(Person.class, bryn.getClass()); Assert.assertEquals(Person.class, julia.getClass()); } + + @Test + public void testJavaTypingAddExplicitByClass() { + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g, true, false); + + final Person p1 = fg.addFramedVertexExplicit(Programmer.class); + p1.setName("Bryn"); + + final Person p2 = fg.addFramedVertexExplicit(Person.class); + p2.setName("Julia"); + + final Person bryn = fg.v().has("name", "Bryn").next(Person.class); + final Person julia = fg.v().has("name", "Julia").next(Person.class); + + Assert.assertEquals(Person.class, bryn.getClass()); + Assert.assertEquals(Person.class, julia.getClass()); + } @Test public void testJavaTypingNextExplicit() { @@ -139,6 +219,24 @@ public class FramedGraphTest { Assert.assertEquals(Person.class, bryn.getClass()); Assert.assertEquals(Person.class, julia.getClass()); } + + @Test + public void testJavaTypingNextExplicitByClass() { + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g, true, false); + + final Person p1 = fg.addFramedVertex(Programmer.class); + p1.setName("Bryn"); + + final Person p2 = fg.addFramedVertex(Person.class); + p2.setName("Julia"); + + final Person bryn = fg.v().has("name", "Bryn").nextExplicit(Person.class); + final Person julia = fg.v().has("name", "Julia").nextExplicit(Person.class); + + Assert.assertEquals(Person.class, bryn.getClass()); + Assert.assertEquals(Person.class, julia.getClass()); + } @Test public void testCustomFrameBuilder() { @@ -155,6 +253,22 @@ public class FramedGraphTest { final Person person = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); Assert.assertEquals(o, person); } + + @Test + public void testCustomFrameBuilderByClass() { + final Person o = new Person(); + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g, new FrameFactory() { + + @SuppressWarnings("unchecked") + @Override + public <T> T create(final Element e, final Class<T> kind) { + return (T) o; + } + }, new SimpleTypeResolver()); + final Person person = fg.addFramedVertex(Person.class); + Assert.assertEquals(o, person); + } @Test public void testCustomFrameBuilderExplicit() { @@ -171,6 +285,22 @@ public class FramedGraphTest { final Person person = fg.addFramedVertexExplicit(Person.DEFAULT_INITIALIZER); Assert.assertEquals(o, person); } + + @Test + public void testCustomFrameBuilderExplicitByClass() { + final Person o = new Person(); + final Graph g = new TinkerGraph(); + final FramedGraph fg = new DelegatingFramedGraph(g, new FrameFactory() { + + @SuppressWarnings("unchecked") + @Override + public <T> T create(final Element e, final Class<T> kind) { + return (T) o; + } + }, new SimpleTypeResolver()); + final Person person = fg.addFramedVertexExplicit(Person.class); + Assert.assertEquals(o, person); + } @Mock private TransactionalGraph transactionalGraph; diff --git a/src/test/java/com/syncleus/ferma/FramedVertexTest.java b/src/test/java/com/syncleus/ferma/FramedVertexTest.java index 8dd0f212..f5d1be70 100644 --- a/src/test/java/com/syncleus/ferma/FramedVertexTest.java +++ b/src/test/java/com/syncleus/ferma/FramedVertexTest.java @@ -133,7 +133,7 @@ public class FramedVertexTest { @Test public void testLinkOutSingleLabel() { - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final String label = "knows"; @@ -153,7 +153,7 @@ public class FramedVertexTest { final String[] newLabels = new String[]{"knows", "friends_with"}; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final Map<String, Number> expectedCounts = new HashMap<>(); @@ -177,7 +177,7 @@ public class FramedVertexTest { @Test public void testLinkInSingleLabel() { - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final String label = "knows"; @@ -197,7 +197,7 @@ public class FramedVertexTest { final String[] newLabels = new String[]{"knows", "friends_with"}; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final Map<String, Number> expectedCounts = new HashMap<>(); @@ -222,7 +222,7 @@ public class FramedVertexTest { @Test public void testLinkBothSingleLabel() { - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final String label = "knows"; @@ -244,7 +244,7 @@ public class FramedVertexTest { final String[] newLabels = new String[]{"knows", "friends_with"}; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); p3.setName("Tjad"); final Map<String, Number> expectedCounts = new HashMap<>(); @@ -272,12 +272,12 @@ public class FramedVertexTest { @Test public void testUnlinkInWithNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p5.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); + p5.addFramedEdge(label, p3, Knows.class); Assert.assertTrue("Multiple edges(in) of type " + label + " must exist for vertice", p3.in(label).count() > 1); @@ -290,12 +290,12 @@ public class FramedVertexTest { @Test public void testUnlinkOutWithNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p5, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); + p3.addFramedEdge(label, p5, Knows.class); Assert.assertTrue("Multiple edges(out) of type " + label + " must exist for vertice", p3.out(label).count() > 1); @@ -309,17 +309,17 @@ public class FramedVertexTest { @Test public void testUnlinkBothWithNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p5, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); + p3.addFramedEdge(label, p5, Knows.class); Assert.assertTrue("Multiple edges(out) of type " + label + " must exist for vertice", p3.out(label).count() > 1); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p5.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); + p5.addFramedEdge(label, p3, Knows.class); Assert.assertTrue("Multiple edges(in) of type " + label + " must exist for vertice", p3.in(label).count() > 1); @@ -333,12 +333,12 @@ public class FramedVertexTest { @Test public void testUnlinkIn() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p5.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); + p5.addFramedEdge(label, p3, Knows.class); final long allInEdgesCount = p3.in(label).count(); final Long targetVertex_InEdgeCount = p3.in(label).mark().retain(Lists.newArrayList(p4)).back().count(); @@ -355,12 +355,12 @@ public class FramedVertexTest { @Test public void testUnlinkOut() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p5, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); + p3.addFramedEdge(label, p5, Knows.class); final long allInEdgesCount = p3.out(label).count(); final Long targetVertex_OutEdgeCount = p3.out(label).mark().retain(Lists.newArrayList(p4)).back().count(); @@ -377,14 +377,14 @@ public class FramedVertexTest { @Test public void testUnlinkBoth() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p5.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p5, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); + p5.addFramedEdge(label, p3, Knows.class); + p3.addFramedEdge(label, p4, Knows.class); + p3.addFramedEdge(label, p5, Knows.class); final long allInEdgesCount = p3.both(label).count(); final Long targetVertex_EdgeCount = p3.both(label).mark().retain(Lists.newArrayList(p4)).back().count(); @@ -402,11 +402,11 @@ public class FramedVertexTest { @Test public void testSetLinkIn() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); Assert.assertTrue("An edge(in) of type " + label + " must exist between vertices", p3.in(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -423,8 +423,8 @@ public class FramedVertexTest { @Test public void testSetLinkInNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); p3.setLinkIn(p4, label); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.in(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -436,11 +436,11 @@ public class FramedVertexTest { @Test public void testSetLinkOut() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.out(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -457,8 +457,8 @@ public class FramedVertexTest { @Test public void testSetLinkOutNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); p3.setLinkOut(p4, label); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.out(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -470,12 +470,12 @@ public class FramedVertexTest { @Test public void testSetLinkBoth() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p5 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); + final Person p5 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); + p3.addFramedEdge(label, p4, Knows.class); Assert.assertTrue("An in edge of type " + label + " must exist between vertices", p3.in(label).retain(Lists.newArrayList(p4)).count() > 0); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.out(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -496,8 +496,8 @@ public class FramedVertexTest { @Test public void testSetLinkBothNull() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); p3.setLinkBoth(p4, label); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.both(label).retain(Lists.newArrayList(p4)).count() > 0); @@ -509,14 +509,14 @@ public class FramedVertexTest { @Test public void testSetNewLinkIn() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p4.addFramedEdge(label, p3, Knows.class); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.in(label).retain(Lists.newArrayList(p4)).count() > 0); - final Person p5 = p3.setLinkIn(Person.DEFAULT_INITIALIZER, label); + final Person p5 = p3.setLinkIn(Person.class, label); //Make sure old edge was deleted Assert.assertEquals("old " + label + " edge was not removed", 0, p3.in(label).retain(Lists.newArrayList(p4)).count()); @@ -530,14 +530,14 @@ public class FramedVertexTest { @Test public void testSetNewLinkOut() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.out(label).retain(Lists.newArrayList(p4)).count() > 0); - final Person p5 = p3.setLinkOut(Person.DEFAULT_INITIALIZER, label); + final Person p5 = p3.setLinkOut(Person.class, label); //Make sure old edge was deleted Assert.assertEquals("old " + label + " edge was not removed", 0, p3.out(label).retain(Lists.newArrayList(p4)).count()); @@ -551,16 +551,16 @@ public class FramedVertexTest { @Test public void testSetNewLinkBoth() { final String label = "knows"; - final Person p3 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); - final Person p4 = fg.addFramedVertex(Person.DEFAULT_INITIALIZER); + final Person p3 = fg.addFramedVertex(Person.class); + final Person p4 = fg.addFramedVertex(Person.class); - p3.addFramedEdge(label, p4, Knows.DEFAULT_INITIALIZER); - p4.addFramedEdge(label, p3, Knows.DEFAULT_INITIALIZER); + p3.addFramedEdge(label, p4, Knows.class); + p4.addFramedEdge(label, p3, Knows.class); Assert.assertTrue("An in edge of type " + label + " must exist between vertices", p3.in(label).retain(Lists.newArrayList(p4)).count() > 0); Assert.assertTrue("An out edge of type " + label + " must exist between vertices", p3.out(label).retain(Lists.newArrayList(p4)).count() > 0); - final Person p5 = p3.setLinkBoth(Person.DEFAULT_INITIALIZER, label); + final Person p5 = p3.setLinkBoth(Person.class, label); //Make sure old edge was deleted Assert.assertEquals("old " + label + " edge was not removed", 0, p3.both(label).retain(Lists.newArrayList(p4)).count()); diff --git a/src/test/java/com/syncleus/ferma/SimpleTypeResolverTest.java b/src/test/java/com/syncleus/ferma/SimpleTypeResolverTest.java index 4f10b05f..e481576d 100644 --- a/src/test/java/com/syncleus/ferma/SimpleTypeResolverTest.java +++ b/src/test/java/com/syncleus/ferma/SimpleTypeResolverTest.java @@ -34,7 +34,7 @@ public class SimpleTypeResolverTest { final FramedGraph framedGraph = new DelegatingFramedGraph(godGraph, TEST_TYPES); //add a single node to the graph, a programmer. - framedGraph.addFramedVertex(Programmer.DEFAULT_INITIALIZER); + framedGraph.addFramedVertex(Programmer.class); //make sure the newly added node is actually a programmer final Person programmer = framedGraph.v().next(Person.class); -- GitLab