You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@s2graph.apache.org by st...@apache.org on 2017/07/01 15:28:06 UTC

[15/46] incubator-s2graph git commit: passed all before GraphTest.

passed all before GraphTest.


Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/450171de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/450171de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/450171de

Branch: refs/heads/master
Commit: 450171dee04b8872704fb201d5f19d806d247c22
Parents: bfc05ba
Author: DO YUNG YOON <st...@apache.org>
Authored: Fri Apr 14 23:57:26 2017 +0900
Committer: DO YUNG YOON <st...@apache.org>
Committed: Fri Apr 14 23:57:26 2017 +0900

----------------------------------------------------------------------
 .../org/apache/s2graph/core/JSONParser.scala    |  1 +
 .../scala/org/apache/s2graph/core/S2Edge.scala  |  2 +
 .../scala/org/apache/s2graph/core/S2Graph.scala | 62 ++++++++++----------
 .../org/apache/s2graph/core/S2Property.scala    | 34 ++++++++++-
 .../org/apache/s2graph/core/S2Vertex.scala      |  2 +
 .../core/features/S2DataTypeFeatures.scala      |  2 +-
 .../features/S2VertexPropertyFeatures.scala     | 18 +++---
 7 files changed, 77 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala b/s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala
index 9d10dc7..90574f2 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala
@@ -235,6 +235,7 @@ object JSONParser {
         }
     }
   }
+
   def jsValueToInnerVal(jsValue: JsValue, dataType: String, version: String): Option[InnerValLike] = {
     val ret = try {
       val dType = InnerVal.toInnerDataType(dataType.toLowerCase())

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
index 3b000f6..27d0b42 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
@@ -116,6 +116,8 @@ case class SnapshotEdge(graph: S2Graph,
   }
 
   def property[V](key: String, value: V, ts: Long): S2Property[V] = {
+    S2Property.assertValidProp(key, value)
+
     val labelMeta = label.metaPropsInvMap.getOrElse(key, throw new RuntimeException(s"$key is not configured on IndexEdge."))
     val newProps = new S2Property(edge, labelMeta, key, value, ts)
     propsWithTs.put(key, newProps)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
index 8b48064..8856a8c 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
@@ -35,7 +35,8 @@ import org.apache.s2graph.core.utils.{DeferCache, Extensions, logger}
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer
 import org.apache.tinkerpop.gremlin.structure
 import org.apache.tinkerpop.gremlin.structure.Graph.{Features, Variables}
-import org.apache.tinkerpop.gremlin.structure.{Edge, Element, Graph, T, Transaction, Vertex}
+import org.apache.tinkerpop.gremlin.structure.util.ElementHelper
+import org.apache.tinkerpop.gremlin.structure.{Edge, Element, Graph, Property, T, Transaction, Vertex}
 import play.api.libs.json.{JsObject, Json}
 
 import scala.annotation.tailrec
@@ -533,37 +534,37 @@ object S2Graph {
 @Graph.OptIn(Graph.OptIn.SUITE_STRUCTURE_STANDARD)
 @Graph.OptOuts(value = Array(
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.EdgeTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.GraphConstructionTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.PropertyTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.VertexPropertyTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.FeatureSupportTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
   new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.VertexTest$BasicVertexTest", method="shouldHaveExceptionConsistencyWhenAssigningSameIdOnEdge", reason="S2Vertex.addEdge behave as upsert."),
-//  // passed: , failed: shouldHaveExceptionConsistencyWhenAssigningSameIdOnEdge
-//
+  // passed: , failed: shouldHaveExceptionConsistencyWhenAssigningSameIdOnEdge
+
   new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdgeTest", method="shouldNotEvaluateToEqualDifferentId", reason="reference equals is not supported."),
-//  // passed: all, failed: shouldNotEvaluateToEqualDifferentId
-//
+  // passed: all, failed: shouldNotEvaluateToEqualDifferentId
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexTest", method="*", reason="no"),
-//  // passed: all, failed: none
-//
+  // passed: all, failed: none
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.util.detached.DetachedGraphTest", method="*", reason="no"),
-//  // passed: all, failed: none,  all ignored
-//
+  // passed: all, failed: none,  all ignored
+
   new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPropertyTest", method="shouldNotBeEqualPropertiesAsThereIsDifferentKey", reason="reference equals is not supported."),
 //  // passed: , failed: shouldNotBeEqualPropertiesAsThereIsDifferentKey
-//
+
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexPropertyTest", method="*", reason="no"),
-//  // passed: all, failed: none
+  // passed: all, failed: none
 
   new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.GraphTest", method="*", reason="no"),
   // passed: , failed:
@@ -1614,22 +1615,19 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
     }
   }
 
-  def validType(t: Any): Boolean = t match {
-    case _: VertexId => true
-    case _: String => true
-    case _: java.lang.Integer => true
-    case _: java.lang.Long => true
-    case _: scala.Long => true
-    case _: scala.Int => true
-    case _ => false
-  }
-
   override def addVertex(kvs: AnyRef*): structure.Vertex = {
     if (!features().vertex().supportsUserSuppliedIds() && kvs.contains(T.id)) {
       throw Vertex.Exceptions.userSuppliedIdsNotSupported
     }
 
     val kvsMap = S2Property.kvsToProps(kvs)
+    kvsMap.get(T.id.name()) match {
+      case Some(idValue) if !S2Property.validType(idValue) =>
+        throw Vertex.Exceptions.userSuppliedIdsOfThisTypeNotSupported()
+      case _ =>
+    }
+
+    kvsMap.foreach { case (k, v) => S2Property.assertValidProp(k, v) }
 
     if (kvsMap.contains(T.label.name()) && kvsMap(T.label.name).toString.isEmpty)
       throw Element.Exceptions.labelCanNotBeEmpty
@@ -1638,7 +1636,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
       case None => // do nothing
         val id = Random.nextLong
         makeVertex(Long.box(id), kvsMap)
-      case Some(idValue) if validType(idValue) =>
+      case Some(idValue) if S2Property.validType(idValue) =>
         makeVertex(idValue, kvsMap)
       case _ =>
         throw Vertex.Exceptions.userSuppliedIdsOfThisTypeNotSupported

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/S2Property.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Property.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Property.scala
index bca1303..aca9826 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Property.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Property.scala
@@ -21,7 +21,7 @@ package org.apache.s2graph.core
 
 
 import org.apache.s2graph.core.mysqls.LabelMeta
-import org.apache.s2graph.core.types.{CanInnerValLike, InnerValLikeWithTs}
+import org.apache.s2graph.core.types.{CanInnerValLike, InnerValLikeWithTs, VertexId}
 import org.apache.tinkerpop.gremlin.structure.Graph.Features
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper
 import org.apache.tinkerpop.gremlin.structure._
@@ -29,6 +29,29 @@ import org.apache.tinkerpop.gremlin.structure._
 import scala.util.hashing.MurmurHash3
 
 object S2Property {
+
+  def validType(t: Any): Boolean = t match {
+    case _: VertexId => true
+    case _: java.lang.Integer => true
+    case _: java.lang.Long => true
+    case _: java.lang.Float => true
+    case _: java.lang.Double => true
+    case _: java.lang.Boolean => true
+    case _: java.lang.Short => true
+    case _: java.lang.Byte => true
+    case _: java.lang.String => true
+    case _: Int => true
+    case _: Long => true
+    case _: Float => true
+    case _: Double => true
+    case _: Boolean => true
+    case _: Short => true
+    case _: Byte => true
+    case _: String => true
+    case _: BigDecimal => true
+    case _ => false
+  }
+
   def kvsToProps(kvs: Seq[AnyRef]): Map[String, AnyRef] = {
     import scala.collection.JavaConverters._
 
@@ -42,7 +65,7 @@ object S2Property {
       ElementHelper.validateProperty(key, value)
 //      if (keySet.contains(key)) throw VertexProperty.Exceptions.multiPropertiesNotSupported
 
-      assertValidProp(key, value)
+//      assertValidProp(key, value)
 
       keySet.add(key)
       result = result + (key -> value)
@@ -56,6 +79,13 @@ object S2Property {
     if (!key.isInstanceOf[String]) throw Element.Exceptions.providedKeyValuesMustHaveALegalKeyOnEvenIndices()
 
     if (value == null) throw Property.Exceptions.propertyValueCanNotBeNull()
+    if (!validType(value)) {
+     value match {
+       case _: java.io.Serializable => throw Property.Exceptions.dataTypeOfPropertyValueNotSupported(value)
+       case _ =>
+     }
+    }
+
     if (value.isInstanceOf[Iterable[_]]) throw new java.lang.IllegalArgumentException("not supported data type")
     if (value.isInstanceOf[Array[_]]) throw new java.lang.IllegalArgumentException("not supported data type")
     if (value.isInstanceOf[java.util.List[_]]) throw new java.lang.IllegalArgumentException("not supported data type")

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
index 7d6433d..529ece4 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
@@ -196,6 +196,8 @@ case class S2Vertex(graph: S2Graph,
 
         val props = S2Property.kvsToProps(kvs)
 
+        props.foreach { case (k, v) => S2Property.assertValidProp(k, v) }
+
         //TODO: direction, operation, _timestamp need to be reserved property key.
 
         try {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/features/S2DataTypeFeatures.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/features/S2DataTypeFeatures.scala b/s2core/src/main/scala/org/apache/s2graph/core/features/S2DataTypeFeatures.scala
index 3db4930..a3ff088 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/features/S2DataTypeFeatures.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/features/S2DataTypeFeatures.scala
@@ -36,7 +36,7 @@ case class S2DataTypeFeatures() extends Features.DataTypeFeatures {
 
   override def supportsLongArrayValues(): Boolean = false
 
-  override def supportsSerializableValues(): Boolean = true
+  override def supportsSerializableValues(): Boolean = false
 
   override def supportsStringValues(): Boolean = true
 

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/450171de/s2core/src/main/scala/org/apache/s2graph/core/features/S2VertexPropertyFeatures.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/features/S2VertexPropertyFeatures.scala b/s2core/src/main/scala/org/apache/s2graph/core/features/S2VertexPropertyFeatures.scala
index fe74c85..b354561 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/features/S2VertexPropertyFeatures.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/features/S2VertexPropertyFeatures.scala
@@ -4,21 +4,21 @@ import org.apache.tinkerpop.gremlin.structure.Graph.Features
 
 class S2VertexPropertyFeatures extends S2PropertyFeatures with Features.VertexPropertyFeatures {
 
-  override def supportsStringIds(): Boolean = true
+  override def supportsStringIds(): Boolean = false
 
-  override def supportsUserSuppliedIds(): Boolean = true
-
-  override def supportsAddProperty(): Boolean = true
+  override def supportsCustomIds(): Boolean = true
 
-  override def willAllowId(id: scala.Any): Boolean = true
+  override def supportsUuidIds(): Boolean = false
 
-  override def supportsNumericIds(): Boolean = false
+  override def supportsAddProperty(): Boolean = true
 
   override def supportsRemoveProperty(): Boolean = true
 
-  override def supportsUuidIds(): Boolean = false
-
-  override def supportsCustomIds(): Boolean = true
+  override def supportsUserSuppliedIds(): Boolean = true
 
   override def supportsAnyIds(): Boolean = false
+
+  override def supportsNumericIds(): Boolean = false
+
+  override def willAllowId(id: scala.Any): Boolean = true
 }