In GraphComputer, labels of adjacent vertices can not be accessed. Thus, ReferenceElement needs to ensure that label() doesn't throw an UnsupportedOperationException. I borrowed the same technique used in DeatchedElement.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/acbc18dd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/acbc18dd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/acbc18dd Branch: refs/heads/tp32 Commit: acbc18ddc37a6a9453d672a0b4f64bcace9cf6cf Parents: d6cb13e Author: Marko A. Rodriguez <[email protected]> Authored: Thu Sep 21 13:31:18 2017 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Thu Sep 21 13:31:18 2017 -0600 ---------------------------------------------------------------------- .../util/reference/ReferenceElement.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/acbc18dd/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceElement.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceElement.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceElement.java index 14e5ab3..1603cfb 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceElement.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceElement.java @@ -18,10 +18,13 @@ */ package org.apache.tinkerpop.gremlin.structure.util.reference; +import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.util.ElementHelper; +import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.structure.util.Attachable; +import org.apache.tinkerpop.gremlin.structure.util.ElementHelper; import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph; import java.io.Serializable; @@ -31,6 +34,8 @@ import java.io.Serializable; */ public abstract class ReferenceElement<E extends Element> implements Element, Serializable, Attachable<E> { + private final static String EMPTY_STRING = ""; + protected Object id; protected String label; @@ -40,7 +45,16 @@ public abstract class ReferenceElement<E extends Element> implements Element, Se public ReferenceElement(final Element element) { this.id = element.id(); - this.label = element.label(); + try { + this.label = element.label(); + } catch (final UnsupportedOperationException e) { + if (element instanceof Vertex) + this.label = Vertex.DEFAULT_LABEL; + else if (element instanceof Edge) + this.label = Edge.DEFAULT_LABEL; + else + this.label = VertexProperty.DEFAULT_LABEL; + } } @Override
