You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/06/04 12:15:36 UTC
[22/43] incubator-tinkerpop git commit: Do property implementation of
features on EmptyGraph TINKERPOP3-599
Do property implementation of features on EmptyGraph TINKERPOP3-599
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/9b4caa80
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/9b4caa80
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/9b4caa80
Branch: refs/heads/preprocessor
Commit: 9b4caa804524bfd5a2e42d1460f8483731e775d5
Parents: f8b288e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 2 17:07:12 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 3 06:27:05 2015 -0400
----------------------------------------------------------------------
.../structure/util/empty/EmptyGraph.java | 314 ++++++++++++++++++-
1 file changed, 303 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9b4caa80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/empty/EmptyGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/empty/EmptyGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/empty/EmptyGraph.java
index 272c709..d7a06c0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/empty/EmptyGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/empty/EmptyGraph.java
@@ -24,12 +24,14 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Transaction;
import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import java.util.Collections;
import java.util.Iterator;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
*/
public final class EmptyGraph implements Graph {
@@ -46,17 +48,7 @@ public final class EmptyGraph implements Graph {
@Override
public Features features() {
- return new Features() {
- @Override
- public GraphFeatures graph() {
- return new GraphFeatures() {
- @Override
- public boolean supportsTransactions() {
- return false;
- }
- };
- }
- };
+ return EmptyGraphFeatures.INSTANCE;
}
@Override
@@ -103,4 +95,304 @@ public final class EmptyGraph implements Graph {
public Iterator<Edge> edges(final Object... edgeIds) {
return Collections.emptyIterator();
}
+
+ public static final class EmptyGraphFeatures implements Graph.Features {
+
+ static final EmptyGraphFeatures INSTANCE = new EmptyGraphFeatures();
+ private GraphFeatures graphFeatures = new EmptyGraphGraphFeatures();
+ private VertexFeatures vertexFeatures = new EmptyGraphVertexFeatures();
+ private EdgeFeatures edgeFeatures = new EmptyGraphEdgeFeatures();
+ private EdgePropertyFeatures edgePropertyFeatures = new EmptyGraphEdgePropertyFeatures();
+ private VertexPropertyFeatures vertexPropertyFeatures = new EmptyGraphVertexPropertyFeatures();
+
+ private EmptyGraphFeatures() {}
+
+ @Override
+ public GraphFeatures graph() {
+ return graphFeatures;
+ }
+
+ @Override
+ public VertexFeatures vertex() {
+ return vertexFeatures;
+ }
+
+ @Override
+ public EdgeFeatures edge() {
+ return edgeFeatures;
+ }
+
+ public final class EmptyGraphGraphFeatures implements GraphFeatures {
+ @Override
+ public boolean supportsPersistence() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsTransactions() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsThreadedTransactions() {
+ return false;
+ }
+
+ @Override
+ public VariableFeatures variables() {
+ return null;
+ }
+
+ @Override
+ public boolean supportsComputer() {
+ return false;
+ }
+ }
+
+ public final class EmptyGraphVertexFeatures extends EmptyGraphElementFeatures implements VertexFeatures {
+ @Override
+ public VertexProperty.Cardinality getCardinality(final String key) {
+ // probably not much hurt here in returning list...it's an "empty graph"
+ return VertexProperty.Cardinality.list;
+ }
+
+ @Override
+ public boolean supportsAddVertices() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsRemoveVertices() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsMultiProperties() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsMetaProperties() {
+ return false;
+ }
+
+ @Override
+ public VertexPropertyFeatures properties() {
+ return vertexPropertyFeatures;
+ }
+ }
+
+ public final class EmptyGraphEdgeFeatures extends EmptyGraphElementFeatures implements EdgeFeatures {
+ @Override
+ public boolean supportsAddEdges() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsRemoveEdges() {
+ return false;
+ }
+
+ @Override
+ public EdgePropertyFeatures properties() {
+ return edgePropertyFeatures;
+ }
+ }
+
+ public final class EmptyGraphVertexPropertyFeatures extends EmptyGraphPropertyFeatures implements VertexPropertyFeatures {
+ @Override
+ public boolean supportsAddProperty() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsRemoveProperty() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsUserSuppliedIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsNumericIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsStringIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsUuidIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsCustomIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsAnyIds() {
+ return false;
+ }
+
+ @Override
+ public boolean willAllowId(Object id) {
+ return false;
+ }
+ }
+
+ public final class EmptyGraphEdgePropertyFeatures extends EmptyGraphPropertyFeatures implements EdgePropertyFeatures {
+
+ }
+
+ public abstract class EmptyGraphPropertyFeatures implements PropertyFeatures {
+ @Override
+ public boolean supportsSerializableValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsProperties() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsBooleanValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsByteValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsDoubleValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsFloatValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsIntegerValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsLongValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsMapValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsMixedListValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsBooleanArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsByteArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsDoubleArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsFloatArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsIntegerArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsStringArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsLongArrayValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsStringValues() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsUniformListValues() {
+ return false;
+ }
+ }
+
+ public abstract class EmptyGraphElementFeatures implements ElementFeatures {
+ @Override
+ public boolean supportsAddProperty() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsRemoveProperty() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsUserSuppliedIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsNumericIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsStringIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsUuidIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsCustomIds() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsAnyIds() {
+ return false;
+ }
+
+ @Override
+ public boolean willAllowId(final Object id) {
+ // going to assume "false" here...it's an "empty graph"
+ return false;
+ }
+ }
+ }
}
\ No newline at end of file