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