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/11/19 02:28:45 UTC
[02/23] incubator-s2graph git commit: passed s2test.
passed s2test.
Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/f7170235
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/f7170235
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/f7170235
Branch: refs/heads/master
Commit: f71702357255ba191ee3670978be79cfe8c5b7b0
Parents: fac47d1
Author: DO YUNG YOON <st...@apache.org>
Authored: Fri Nov 3 12:13:03 2017 +0900
Committer: DO YUNG YOON <st...@apache.org>
Committed: Fri Nov 3 12:13:03 2017 +0900
----------------------------------------------------------------------
.../org/apache/s2graph/core/PostProcess.scala | 4 +-
.../org/apache/s2graph/core/QueryParam.scala | 6 +--
.../org/apache/s2graph/core/QueryResult.scala | 4 +-
.../scala/org/apache/s2graph/core/S2Edge.scala | 18 +++----
.../scala/org/apache/s2graph/core/S2Graph.scala | 56 ++++++++++----------
.../org/apache/s2graph/core/S2Vertex.scala | 6 +--
.../org/apache/s2graph/core/S2VertexLike.scala | 11 +++-
.../apache/s2graph/core/S2VertexProperty.scala | 2 +-
.../s2graph/core/index/IndexProvider.scala | 12 ++---
.../s2graph/core/rest/RequestParser.scala | 4 +-
.../apache/s2graph/core/storage/Storage.scala | 10 ++--
.../apache/s2graph/core/storage/StorageIO.scala | 4 +-
.../s2graph/core/storage/StorageReadable.scala | 8 +--
.../s2graph/core/storage/StorageSerDe.scala | 6 +--
.../hbase/AsynchbaseStorageReadable.scala | 4 +-
.../storage/hbase/AsynchbaseStorageSerDe.scala | 6 +--
.../vertex/tall/VertexDeserializable.scala | 6 +--
.../serde/vertex/tall/VertexSerializable.scala | 4 +-
.../vertex/wide/VertexDeserializable.scala | 6 +--
.../serde/vertex/wide/VertexSerializable.scala | 4 +-
.../s2graph/core/storage/StorageIOTest.scala | 8 +--
.../core/tinkerpop/S2GraphProvider.scala | 1 +
.../rest/play/controllers/EdgeController.scala | 6 +--
23 files changed, 103 insertions(+), 93 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala b/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
index b22eb65..3017749 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/PostProcess.scala
@@ -141,7 +141,7 @@ object PostProcess {
}
}
- def s2VertexToJson(s2Vertex: S2Vertex): Option[JsValue] = {
+ def s2VertexToJson(s2Vertex: S2VertexLike): Option[JsValue] = {
val props = for {
(k, v) <- s2Vertex.properties
jsVal <- anyValToJsValue(v)
@@ -160,7 +160,7 @@ object PostProcess {
}
}
- def verticesToJson(s2Vertices: Seq[S2Vertex]): JsValue =
+ def verticesToJson(s2Vertices: Seq[S2VertexLike]): JsValue =
Json.toJson(s2Vertices.flatMap(s2VertexToJson(_)))
def withOptionalFields(queryOption: QueryOption,
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala b/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
index 1100f6c..2e8d1f4 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/QueryParam.scala
@@ -40,7 +40,7 @@ object Query {
def apply(query: Query): Query = {
Query(query.vertices, query.steps, query.queryOption, query.jsonQuery)
}
- def toQuery(srcVertices: Seq[S2Vertex], queryParams: Seq[QueryParam]) = Query(srcVertices, Vector(Step(queryParams)))
+ def toQuery(srcVertices: Seq[S2VertexLike], queryParams: Seq[QueryParam]) = Query(srcVertices, Vector(Step(queryParams)))
}
@@ -97,7 +97,7 @@ case class QueryOption(removeCycle: Boolean = false,
}
-case class Query(vertices: Seq[S2Vertex] = Seq.empty[S2Vertex],
+case class Query(vertices: Seq[S2VertexLike] = Nil,
steps: IndexedSeq[Step] = Vector.empty[Step],
queryOption: QueryOption = QueryOption(),
jsonQuery: JsValue = JsNull) {
@@ -219,7 +219,7 @@ case class Step(queryParams: Seq[QueryParam],
}
}
-case class VertexParam(vertices: Seq[S2Vertex]) {
+case class VertexParam(vertices: Seq[S2VertexLike]) {
var filters: Option[Map[Byte, InnerValLike]] = None
def has(what: Option[Map[Byte, InnerValLike]]): VertexParam = {
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/QueryResult.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/QueryResult.scala b/s2core/src/main/scala/org/apache/s2graph/core/QueryResult.scala
index 3916f39..7506b40 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/QueryResult.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/QueryResult.scala
@@ -27,7 +27,7 @@ import scala.collection.mutable.{ArrayBuffer, ListBuffer}
import scala.collection.{Seq, mutable}
object QueryResult {
- def fromVertices(graph: S2Graph, vertices: Seq[S2Vertex], queryParams: Seq[QueryParam]): StepResult = {
+ def fromVertices(graph: S2Graph, vertices: Seq[S2VertexLike], queryParams: Seq[QueryParam]): StepResult = {
val edgeWithScores = vertices.flatMap { vertex =>
queryParams.map { queryParam =>
val label = queryParam.label
@@ -69,7 +69,7 @@ object QueryResult {
case class QueryRequest(query: Query,
stepIdx: Int,
- vertex: S2Vertex,
+ vertex: S2VertexLike,
queryParam: QueryParam,
prevStepScore: Double = 1.0,
labelWeight: Double = 1.0) {
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/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 51af831..641db74 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Edge.scala
@@ -64,8 +64,8 @@ object SnapshotEdge {
}
case class SnapshotEdge(graph: S2Graph,
- srcVertex: S2Vertex,
- tgtVertex: S2Vertex,
+ srcVertex: S2VertexLike,
+ tgtVertex: S2VertexLike,
label: Label,
dir: Int,
op: Byte,
@@ -168,8 +168,8 @@ object IndexEdge {
}
case class IndexEdge(graph: S2Graph,
- srcVertex: S2Vertex,
- tgtVertex: S2Vertex,
+ srcVertex: S2VertexLike,
+ tgtVertex: S2VertexLike,
label: Label,
dir: Int,
op: Byte,
@@ -302,8 +302,8 @@ case class IndexEdge(graph: S2Graph,
}
case class S2Edge(innerGraph: S2Graph,
- srcVertex: S2Vertex,
- var tgtVertex: S2Vertex,
+ srcVertex: S2VertexLike,
+ var tgtVertex: S2VertexLike,
innerLabel: Label,
dir: Int,
var op: Byte = GraphUtil.defaultOpByte,
@@ -429,7 +429,7 @@ case class S2Edge(innerGraph: S2Graph,
// def relatedEdges = List(this)
- private def getServiceColumn(vertex: S2Vertex, defaultServiceColumn: ServiceColumn) =
+ private def getServiceColumn(vertex: S2VertexLike, defaultServiceColumn: ServiceColumn) =
if (vertex.id.column == ServiceColumn.Default) defaultServiceColumn else vertex.id.column
def srcForVertex = {
@@ -566,8 +566,8 @@ case class S2Edge(innerGraph: S2Graph,
def checkProperty(key: String): Boolean = propsWithTs.containsKey(key)
- def copyEdge(srcVertex: S2Vertex = srcVertex,
- tgtVertex: S2Vertex = tgtVertex,
+ def copyEdge(srcVertex: S2VertexLike = srcVertex,
+ tgtVertex: S2VertexLike = tgtVertex,
innerLabel: Label = innerLabel,
dir: Int = dir,
op: Byte = op,
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/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 34db9e4..90190cf 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
@@ -190,7 +190,7 @@ object S2Graph {
}
}
- def alreadyVisitedVertices(edgeWithScoreLs: Seq[EdgeWithScore]): Map[(LabelWithDirection, S2Vertex), Boolean] = {
+ def alreadyVisitedVertices(edgeWithScoreLs: Seq[EdgeWithScore]): Map[(LabelWithDirection, S2VertexLike), Boolean] = {
val vertices = for {
edgeWithScore <- edgeWithScoreLs
edge = edgeWithScore.edge
@@ -272,7 +272,7 @@ object S2Graph {
queryRequests: Seq[QueryRequest],
queryResultLsFuture: Future[Seq[StepResult]],
queryParams: Seq[QueryParam],
- alreadyVisited: Map[(LabelWithDirection, S2Vertex), Boolean] = Map.empty,
+ alreadyVisited: Map[(LabelWithDirection, S2VertexLike), Boolean] = Map.empty,
buildLastStepInnerResult: Boolean = true,
parentEdges: Map[VertexId, Seq[EdgeWithScore]])
(implicit ec: scala.concurrent.ExecutionContext): Future[StepResult] = {
@@ -1059,10 +1059,10 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
val step = q.steps(stepIdx)
val alreadyVisited =
- if (stepIdx == 0) Map.empty[(LabelWithDirection, S2Vertex), Boolean]
+ if (stepIdx == 0) Map.empty[(LabelWithDirection, S2VertexLike), Boolean]
else alreadyVisitedVertices(stepInnerResult.edgeWithScores)
- val initial = (Map.empty[S2Vertex, Double], Map.empty[S2Vertex, ArrayBuffer[EdgeWithScore]])
+ val initial = (Map.empty[S2VertexLike, Double], Map.empty[S2VertexLike, ArrayBuffer[EdgeWithScore]])
val (sums, grouped) = edgeWithScoreLs.foldLeft(initial) { case ((sum, group), edgeWithScore) =>
val key = edgeWithScore.edge.tgtVertex
val newScore = sum.getOrElse(key, 0.0) + edgeWithScore.score
@@ -1144,7 +1144,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
} get
}
- def getVertices(vertices: Seq[S2Vertex]): Future[Seq[S2Vertex]] = {
+ def getVertices(vertices: Seq[S2VertexLike]): Future[Seq[S2VertexLike]] = {
val verticesWithIdx = vertices.zipWithIndex
val futures = verticesWithIdx.groupBy { case (v, idx) => v.service }.map { case (service, vertexGroup) =>
getStorage(service).fetchVertices(vertices).map(_.zip(vertexGroup.map(_._2)))
@@ -1156,7 +1156,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
}
/** mutate */
- def deleteAllAdjacentEdges(srcVertices: Seq[S2Vertex],
+ def deleteAllAdjacentEdges(srcVertices: Seq[S2VertexLike],
labels: Seq[Label],
dir: Int,
ts: Long): Future[Boolean] = {
@@ -1320,11 +1320,11 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
withWait: Boolean = false): Future[Seq[MutateResponse]] = {
val edgeBuffer = ArrayBuffer[(S2Edge, Int)]()
- val vertexBuffer = ArrayBuffer[(S2Vertex, Int)]()
+ val vertexBuffer = ArrayBuffer[(S2VertexLike, Int)]()
elements.zipWithIndex.foreach {
case (e: S2Edge, idx: Int) => edgeBuffer.append((e, idx))
- case (v: S2Vertex, idx: Int) => vertexBuffer.append((v, idx))
+ case (v: S2VertexLike, idx: Int) => vertexBuffer.append((v, idx))
case any@_ => logger.error(s"Unknown type: ${any}")
}
@@ -1467,8 +1467,8 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
}
}
- def mutateVertices(vertices: Seq[S2Vertex], withWait: Boolean = false): Future[Seq[MutateResponse]] = {
- def mutateVertex(storage: Storage)(vertex: S2Vertex, withWait: Boolean): Future[MutateResponse] = {
+ def mutateVertices(vertices: Seq[S2VertexLike], withWait: Boolean = false): Future[Seq[MutateResponse]] = {
+ def mutateVertex(storage: Storage)(vertex: S2VertexLike, withWait: Boolean): Future[MutateResponse] = {
if (vertex.op == GraphUtil.operations("delete")) {
storage.writeToStorage(vertex.hbaseZkAddr,
storage.vertexSerializer(vertex).toKeyValues.map(_.copy(operation = SKeyValue.Delete)), withWait)
@@ -1480,7 +1480,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
}
}
- def mutateVertices(storage: Storage)(vertices: Seq[S2Vertex],
+ def mutateVertices(storage: Storage)(vertices: Seq[S2VertexLike],
withWait: Boolean = false): Future[Seq[MutateResponse]] = {
val futures = vertices.map { vertex => mutateVertex(storage)(vertex, withWait) }
Future.sequence(futures)
@@ -1567,7 +1567,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
} get
- def toVertex(s: String): Option[S2Vertex] = {
+ def toVertex(s: String): Option[S2VertexLike] = {
toVertex(GraphUtil.split(s))
}
@@ -1588,7 +1588,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
throw e
} get
- def toVertex(parts: Array[String]): Option[S2Vertex] = Try {
+ def toVertex(parts: Array[String]): Option[S2VertexLike] = Try {
val (ts, operation, logType, srcId, serviceName, colName) = (parts(0), parts(1), parts(2), parts(3), parts(4), parts(5))
val props = if (parts.length >= 7) fromJsonToProperties(Json.parse(parts(6)).asOpt[JsObject].getOrElse(Json.obj())) else Map.empty[String, Any]
val vertex = toVertex(serviceName, colName, srcId, props, ts.toLong, operation)
@@ -1630,7 +1630,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
id: Any,
props: Map[String, Any] = Map.empty,
ts: Long = System.currentTimeMillis(),
- operation: String = "insert"): S2Vertex = {
+ operation: String = "insert"): S2VertexLike = {
val service = Service.findByName(serviceName).getOrElse(throw new java.lang.IllegalArgumentException(s"$serviceName is not found."))
val column = ServiceColumn.find(service.id.get, columnName).getOrElse(throw new java.lang.IllegalArgumentException(s"$columnName is not found."))
@@ -1702,8 +1702,8 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
* @param tsInnerValOpt
* @return
*/
- def newEdge(srcVertex: S2Vertex,
- tgtVertex: S2Vertex,
+ def newEdge(srcVertex: S2VertexLike,
+ tgtVertex: S2VertexLike,
innerLabel: Label,
dir: Int,
op: Byte = GraphUtil.defaultOpByte,
@@ -1751,8 +1751,8 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
* @param tsInnerValOpt
* @return
*/
- private[core] def newSnapshotEdge(srcVertex: S2Vertex,
- tgtVertex: S2Vertex,
+ private[core] def newSnapshotEdge(srcVertex: S2VertexLike,
+ tgtVertex: S2VertexLike,
label: Label,
dir: Int,
op: Byte,
@@ -1792,22 +1792,22 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
ts: Long = System.currentTimeMillis(),
props: S2Vertex.Props = S2Vertex.EmptyProps,
op: Byte = 0,
- belongLabelIds: Seq[Int] = Seq.empty): S2Vertex = {
+ belongLabelIds: Seq[Int] = Seq.empty): S2VertexLike = {
val vertex = new S2Vertex(this, id, ts, S2Vertex.EmptyProps, op, belongLabelIds)
S2Vertex.fillPropsWithTs(vertex, props)
vertex
}
- def getVertex(vertexId: VertexId): Option[S2Vertex] = {
+ def getVertex(vertexId: VertexId): Option[S2VertexLike] = {
val v = newVertex(vertexId)
Await.result(getVertices(Seq(v)).map { vertices => vertices.headOption }, WaitTimeout)
}
- def fetchEdges(vertex: S2Vertex, labelNameWithDirs: Seq[(String, String)]): util.Iterator[Edge] = {
+ def fetchEdges(vertex: S2VertexLike, labelNameWithDirs: Seq[(String, String)]): util.Iterator[Edge] = {
Await.result(fetchEdgesAsync(vertex, labelNameWithDirs), WaitTimeout)
}
- def fetchEdgesAsync(vertex: S2Vertex, labelNameWithDirs: Seq[(String, String)]): Future[util.Iterator[Edge]] = {
+ def fetchEdgesAsync(vertex: S2VertexLike, labelNameWithDirs: Seq[(String, String)]): Future[util.Iterator[Edge]] = {
val queryParams = labelNameWithDirs.map { case (l, direction) =>
QueryParam(labelName = l, direction = direction.toLowerCase)
}
@@ -1844,7 +1844,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
Await.result(defaultStorage.fetchVerticesAll(), WaitTimeout).iterator
} else {
val vertices = ids.collect {
- case s2Vertex: S2Vertex => s2Vertex
+ case s2Vertex: S2VertexLike => s2Vertex
case vId: VertexId => newVertex(vId)
case vertex: Vertex => newVertex(vertex.id().asInstanceOf[VertexId])
case other @ _ => newVertex(VertexId.fromString(other.toString))
@@ -1906,7 +1906,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
addVertex(Seq(T.label, label): _*)
}
- def makeVertex(idValue: AnyRef, kvsMap: Map[String, AnyRef]): S2Vertex = {
+ def makeVertex(idValue: AnyRef, kvsMap: Map[String, AnyRef]): S2VertexLike = {
idValue match {
case vId: VertexId =>
toVertex(vId.column.service.serviceName, vId.column.columnName, vId, kvsMap)
@@ -1958,7 +1958,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
ts: Long = System.currentTimeMillis(),
props: S2Vertex.Props = S2Vertex.EmptyProps,
op: Byte = 0,
- belongLabelIds: Seq[Int] = Seq.empty): S2Vertex = {
+ belongLabelIds: Seq[Int] = Seq.empty): S2VertexLike = {
val vertex = newVertex(id, ts, props, op, belongLabelIds)
val future = mutateVertices(Seq(vertex), withWait = true).map { rets =>
@@ -1970,7 +1970,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
vertex
}
- def addVertexInner(vertex: S2Vertex): S2Vertex = {
+ def addVertexInner(vertex: S2VertexLike): S2VertexLike = {
val future = mutateVertices(Seq(vertex), withWait = true).flatMap { rets =>
if (rets.forall(_.isSuccess)) {
indexProvider.mutateVerticesAsync(Seq(vertex))
@@ -1982,11 +1982,11 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
}
/* tp3 only */
- def addEdge(srcVertex: S2Vertex, labelName: String, tgtVertex: Vertex, kvs: AnyRef*): Edge = {
+ def addEdge(srcVertex: S2VertexLike, labelName: String, tgtVertex: Vertex, kvs: AnyRef*): Edge = {
val containsId = kvs.contains(T.id)
tgtVertex match {
- case otherV: S2Vertex =>
+ case otherV: S2VertexLike =>
if (!features().edge().supportsUserSuppliedIds() && containsId) {
throw Exceptions.userSuppliedIdsNotSupported()
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/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 62efa14..96e7afe 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Vertex.scala
@@ -85,7 +85,7 @@ object S2Vertex {
def isLabelId(propKey: Int): Boolean = propKey > Byte.MaxValue
- def fillPropsWithTs(vertex: S2Vertex, props: Props): Unit = {
+ def fillPropsWithTs(vertex: S2VertexLike, props: Props): Unit = {
props.forEach(new BiConsumer[String, S2VertexProperty[_]] {
override def accept(key: String, p: S2VertexProperty[_]): Unit = {
// vertex.property(Cardinality.single, key, p.value)
@@ -94,7 +94,7 @@ object S2Vertex {
})
}
- def fillPropsWithTs(vertex: S2Vertex, state: State): Unit = {
+ def fillPropsWithTs(vertex: S2VertexLike, state: State): Unit = {
state.foreach { case (k, v) => vertex.propertyInner(Cardinality.single, k.name, v.value) }
}
@@ -104,7 +104,7 @@ object S2Vertex {
}.toMap
}
- def stateToProps(vertex: S2Vertex, state: State): Props = {
+ def stateToProps(vertex: S2VertexLike, state: State): Props = {
state.foreach { case (k, v) =>
vertex.property(k.name, v.value)
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/S2VertexLike.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2VertexLike.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2VertexLike.scala
index c2bc40c..5a8f722 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2VertexLike.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2VertexLike.scala
@@ -4,6 +4,7 @@ import java.util.function.{BiConsumer, Consumer}
import org.apache.s2graph.core.S2Vertex.Props
import org.apache.s2graph.core.mysqls.{ColumnMeta, Label, Service, ServiceColumn}
+import org.apache.s2graph.core.types.VertexId
import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality
import org.apache.tinkerpop.gremlin.structure.{Direction, Edge, T, Vertex, VertexProperty}
import play.api.libs.json.Json
@@ -14,9 +15,17 @@ import scala.collection.JavaConverters._
trait S2VertexLike extends Vertex with GraphElement {
this: S2Vertex =>
+ val graph: S2Graph
+ val id: VertexId
+ val ts: Long
+ val props: Props
+ val op: Byte
+ val belongLabelIds: Seq[Int]
+
val innerId = id.innerId
val innerIdVal = innerId.value
+
lazy val properties = for {
(k, v) <- props.asScala
} yield v.columnMeta.name -> v.value
@@ -52,7 +61,7 @@ trait S2VertexLike extends Vertex with GraphElement {
Seq(ts, GraphUtil.fromOp(op), "v", id.innerId, serviceName, columnName).mkString("\t")
}
- def copyVertexWithState(props: Props): S2Vertex = {
+ def copyVertexWithState(props: Props): S2VertexLike = {
val newVertex = copy(props = S2Vertex.EmptyProps)
S2Vertex.fillPropsWithTs(newVertex, props)
newVertex
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/S2VertexProperty.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2VertexProperty.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2VertexProperty.scala
index d0b56a0..1fbc894 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2VertexProperty.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2VertexProperty.scala
@@ -37,7 +37,7 @@ case class S2VertexPropertyId(columnMeta: ColumnMeta, value: InnerValLike) {
}
}
-case class S2VertexProperty[V](element: S2Vertex,
+case class S2VertexProperty[V](element: S2VertexLike,
columnMeta: ColumnMeta,
key: String,
v: V) extends VertexProperty[V] {
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
index b52ffda..098d0b4 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala
@@ -29,7 +29,7 @@ import org.apache.lucene.queryparser.classic.{ParseException, QueryParser}
import org.apache.lucene.search.IndexSearcher
import org.apache.lucene.store.{BaseDirectory, RAMDirectory}
import org.apache.s2graph.core.io.Conversions
-import org.apache.s2graph.core.{EdgeId, S2Edge, S2Vertex}
+import org.apache.s2graph.core.{EdgeId, S2Edge, S2Vertex, S2VertexLike}
import org.apache.s2graph.core.mysqls._
import org.apache.s2graph.core.types.{InnerValLike, VertexId}
import org.apache.s2graph.core.utils.logger
@@ -127,8 +127,8 @@ trait IndexProvider {
def fetchVertexIds(hasContainers: java.util.List[HasContainer]): java.util.List[VertexId]
def fetchVertexIdsAsync(hasContainers: java.util.List[HasContainer]): Future[java.util.List[VertexId]]
- def mutateVertices(vertices: Seq[S2Vertex]): Seq[Boolean]
- def mutateVerticesAsync(vertices: Seq[S2Vertex]): Future[Seq[Boolean]]
+ def mutateVertices(vertices: Seq[S2VertexLike]): Seq[Boolean]
+ def mutateVerticesAsync(vertices: Seq[S2VertexLike]): Future[Seq[Boolean]]
def mutateEdges(edges: Seq[S2Edge]): Seq[Boolean]
def mutateEdgesAsync(edges: Seq[S2Edge]): Future[Seq[Boolean]]
@@ -154,7 +154,7 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
})
}
- private def toDocument(globalIndex: GlobalIndex, vertex: S2Vertex): Option[Document] = {
+ private def toDocument(globalIndex: GlobalIndex, vertex: S2VertexLike): Option[Document] = {
val props = vertex.props.asScala
val exist = props.exists(t => globalIndex.propNamesSet(t._1))
if (!exist) None
@@ -204,7 +204,7 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
}
}
- override def mutateVertices(vertices: Seq[S2Vertex]): Seq[Boolean] = {
+ override def mutateVertices(vertices: Seq[S2VertexLike]): Seq[Boolean] = {
val globalIndexOptions = GlobalIndex.findAll(GlobalIndex.VertexType)
globalIndexOptions.map { globalIndex =>
@@ -314,7 +314,7 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
override def fetchVertexIdsAsync(hasContainers: java.util.List[HasContainer]): Future[util.List[VertexId]] = Future.successful(fetchVertexIds(hasContainers))
- override def mutateVerticesAsync(vertices: Seq[S2Vertex]): Future[Seq[Boolean]] = Future.successful(mutateVertices(vertices))
+ override def mutateVerticesAsync(vertices: Seq[S2VertexLike]): Future[Seq[Boolean]] = Future.successful(mutateVertices(vertices))
override def mutateEdgesAsync(edges: Seq[S2Edge]): Future[Seq[Boolean]] = Future.successful(mutateEdges(edges))
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala b/s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala
index 4bc9376..55b6e12 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala
@@ -262,7 +262,7 @@ class RequestParser(graph: S2Graph) {
case _ => GroupBy.Empty
}.getOrElse(GroupBy.Empty)
- def toVertices(labelName: String, direction: String, ids: Seq[JsValue]): Seq[S2Vertex] = {
+ def toVertices(labelName: String, direction: String, ids: Seq[JsValue]): Seq[S2VertexLike] = {
val vertices = for {
label <- Label.findByName(labelName).toSeq
serviceColumn = if (direction == "out") label.srcColumn else label.tgtColumn
@@ -581,7 +581,7 @@ class RequestParser(graph: S2Graph) {
toJsValues(jsValue).map(toVertex(_, operation, serviceName, columnName))
}
- def toVertex(jsValue: JsValue, operation: String, serviceName: Option[String] = None, columnName: Option[String] = None): S2Vertex = {
+ def toVertex(jsValue: JsValue, operation: String, serviceName: Option[String] = None, columnName: Option[String] = None): S2VertexLike = {
val id = parse[JsValue](jsValue, "id")
val ts = parseOption[Long](jsValue, "timestamp").getOrElse(System.currentTimeMillis())
val sName = if (serviceName.isEmpty) parse[String](jsValue, "serviceName") else serviceName.get
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/Storage.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/Storage.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/Storage.scala
index e4eafbf..01dd128 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/Storage.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/Storage.scala
@@ -68,7 +68,7 @@ abstract class Storage(val graph: S2Graph,
def indexEdgeSerializer(indexEdge: IndexEdge): serde.Serializable[IndexEdge] =
serDe.indexEdgeSerializer(indexEdge)
- def vertexSerializer(vertex: S2Vertex): serde.Serializable[S2Vertex] =
+ def vertexSerializer(vertex: S2VertexLike): serde.Serializable[S2VertexLike] =
serDe.vertexSerializer(vertex)
def snapshotEdgeDeserializer(schemaVer: String): Deserializable[SnapshotEdge] =
@@ -77,7 +77,7 @@ abstract class Storage(val graph: S2Graph,
def indexEdgeDeserializer(schemaVer: String): IndexEdgeDeserializable =
serDe.indexEdgeDeserializer(schemaVer)
- def vertexDeserializer(schemaVer: String): Deserializable[S2Vertex] =
+ def vertexDeserializer(schemaVer: String): Deserializable[S2VertexLike] =
serDe.vertexDeserializer(schemaVer)
/** Mutation Builder */
@@ -102,7 +102,7 @@ abstract class Storage(val graph: S2Graph,
def buildDegreePuts(edge: S2Edge, degreeVal: Long): Seq[SKeyValue] =
io.buildDegreePuts(edge, degreeVal)
- def buildPutsAll(vertex: S2Vertex): Seq[SKeyValue] =
+ def buildPutsAll(vertex: S2VertexLike): Seq[SKeyValue] =
io.buildPutsAll(vertex)
/** Mutation **/
@@ -118,12 +118,12 @@ abstract class Storage(val graph: S2Graph,
prevStepEdges: Map[VertexId, Seq[EdgeWithScore]])(implicit ec: ExecutionContext): Future[Seq[StepResult]] =
fetcher.fetches(queryRequests, prevStepEdges)
- def fetchVertices(vertices: Seq[S2Vertex])(implicit ec: ExecutionContext): Future[Seq[S2Vertex]] =
+ def fetchVertices(vertices: Seq[S2VertexLike])(implicit ec: ExecutionContext): Future[Seq[S2VertexLike]] =
fetcher.fetchVertices(vertices)
def fetchEdgesAll()(implicit ec: ExecutionContext): Future[Seq[S2Edge]] = fetcher.fetchEdgesAll()
- def fetchVerticesAll()(implicit ec: ExecutionContext): Future[Seq[S2Vertex]] = fetcher.fetchVerticesAll()
+ def fetchVerticesAll()(implicit ec: ExecutionContext): Future[Seq[S2VertexLike]] = fetcher.fetchVerticesAll()
def fetchSnapshotEdgeInner(edge: S2Edge)(implicit ec: ExecutionContext): Future[(Option[S2Edge], Option[SKeyValue])] =
fetcher.fetchSnapshotEdgeInner(edge)
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageIO.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageIO.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageIO.scala
index 67033f0..4014b6d 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageIO.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageIO.scala
@@ -221,7 +221,7 @@ class StorageIO(val graph: S2Graph, val serDe: StorageSerDe) {
}
//TODO: ServiceColumn do not have durability property yet.
- def buildDeleteBelongsToId(vertex: S2Vertex): Seq[SKeyValue] = {
+ def buildDeleteBelongsToId(vertex: S2VertexLike): Seq[SKeyValue] = {
val kvs = serDe.vertexSerializer(vertex).toKeyValues
val kv = kvs.head
vertex.belongLabelIds.map { id =>
@@ -251,7 +251,7 @@ class StorageIO(val graph: S2Graph, val serDe: StorageSerDe) {
kvs
}
- def buildPutsAll(vertex: S2Vertex): Seq[SKeyValue] = {
+ def buildPutsAll(vertex: S2VertexLike): Seq[SKeyValue] = {
vertex.op match {
case d: Byte if d == GraphUtil.operations("delete") => serDe.vertexSerializer(vertex).toKeyValues.map(_.copy(operation = SKeyValue.Delete))
case _ => serDe.vertexSerializer(vertex).toKeyValues.map(_.copy(operation = SKeyValue.Put))
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageReadable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageReadable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageReadable.scala
index 052ca69..c3b38e8 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageReadable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageReadable.scala
@@ -41,11 +41,11 @@ trait StorageReadable {
def fetchEdgesAll()(implicit ec: ExecutionContext): Future[Seq[S2Edge]]
- def fetchVerticesAll()(implicit ec: ExecutionContext): Future[Seq[S2Vertex]]
+ def fetchVerticesAll()(implicit ec: ExecutionContext): Future[Seq[S2VertexLike]]
protected def fetchKeyValues(queryRequest: QueryRequest, edge: S2Edge)(implicit ec: ExecutionContext): Future[Seq[SKeyValue]]
- protected def fetchKeyValues(queryRequest: QueryRequest, vertex: S2Vertex)(implicit ec: ExecutionContext): Future[Seq[SKeyValue]]
+ protected def fetchKeyValues(queryRequest: QueryRequest, vertex: S2VertexLike)(implicit ec: ExecutionContext): Future[Seq[SKeyValue]]
def fetchSnapshotEdgeInner(edge: S2Edge)(implicit ec: ExecutionContext): Future[(Option[S2Edge], Option[SKeyValue])] = {
@@ -72,8 +72,8 @@ trait StorageReadable {
}
}
- def fetchVertices(vertices: Seq[S2Vertex])(implicit ec: ExecutionContext): Future[Seq[S2Vertex]] = {
- def fromResult(kvs: Seq[SKeyValue], version: String): Seq[S2Vertex] = {
+ def fetchVertices(vertices: Seq[S2VertexLike])(implicit ec: ExecutionContext): Future[Seq[S2VertexLike]] = {
+ def fromResult(kvs: Seq[SKeyValue], version: String): Seq[S2VertexLike] = {
if (kvs.isEmpty) Nil
else serDe.vertexDeserializer(version).fromKeyValues(kvs, None).toSeq
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageSerDe.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageSerDe.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageSerDe.scala
index 15b3576..32d640c 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageSerDe.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/StorageSerDe.scala
@@ -19,7 +19,7 @@
package org.apache.s2graph.core.storage
-import org.apache.s2graph.core.{IndexEdge, S2Graph, S2Vertex, SnapshotEdge}
+import org.apache.s2graph.core._
import org.apache.s2graph.core.storage.serde.Deserializable
import org.apache.s2graph.core.storage.serde.indexedge.tall.IndexEdgeDeserializable
@@ -57,7 +57,7 @@ trait StorageSerDe {
* @param vertex : vertex to serialize
* @return serializer implementation
*/
- def vertexSerializer(vertex: S2Vertex): serde.Serializable[S2Vertex]
+ def vertexSerializer(vertex: S2VertexLike): serde.Serializable[S2VertexLike]
/**
* create deserializer that can parse stored CanSKeyValue into snapshotEdge.
@@ -72,7 +72,7 @@ trait StorageSerDe {
def indexEdgeDeserializer(schemaVer: String): IndexEdgeDeserializable
- def vertexDeserializer(schemaVer: String): Deserializable[S2Vertex]
+ def vertexDeserializer(schemaVer: String): Deserializable[S2VertexLike]
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageReadable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageReadable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageReadable.scala
index 8ff0ee0..92130f5 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageReadable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageReadable.scala
@@ -168,7 +168,7 @@ class AsynchbaseStorageReadable(val graph: S2Graph,
* @param vertex
* @return
*/
- private def buildRequest(queryRequest: QueryRequest, vertex: S2Vertex) = {
+ private def buildRequest(queryRequest: QueryRequest, vertex: S2VertexLike) = {
val kvs = serDe.vertexSerializer(vertex).toKeyValues
val get = new GetRequest(vertex.hbaseTableName.getBytes, kvs.head.row, Serializable.vertexCf)
// get.setTimeout(this.singleGetTimeout.toShort)
@@ -183,7 +183,7 @@ class AsynchbaseStorageReadable(val graph: S2Graph,
fetchKeyValues(rpc)
}
- override def fetchKeyValues(queryRequest: QueryRequest, vertex: S2Vertex)(implicit ec: ExecutionContext) = {
+ override def fetchKeyValues(queryRequest: QueryRequest, vertex: S2VertexLike)(implicit ec: ExecutionContext) = {
val rpc = buildRequest(queryRequest, vertex)
fetchKeyValues(rpc)
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageSerDe.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageSerDe.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageSerDe.scala
index 1bdd74e..bb47e3b 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageSerDe.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/hbase/AsynchbaseStorageSerDe.scala
@@ -20,7 +20,7 @@
package org.apache.s2graph.core.storage.hbase
import org.apache.s2graph.core.storage.serde.Deserializable
-import org.apache.s2graph.core.{IndexEdge, S2Graph, S2Vertex, SnapshotEdge}
+import org.apache.s2graph.core._
import org.apache.s2graph.core.storage.{StorageIO, StorageSerDe, serde}
class AsynchbaseStorageSerDe(val graph: S2Graph) extends StorageSerDe {
@@ -63,7 +63,7 @@ class AsynchbaseStorageSerDe(val graph: S2Graph) extends StorageSerDe {
* @param vertex : vertex to serialize
* @return serializer implementation
*/
- override def vertexSerializer(vertex: S2Vertex) = new serde.vertex.wide.VertexSerializable(vertex)
+ override def vertexSerializer(vertex: S2VertexLike) = new serde.vertex.wide.VertexSerializable(vertex)
/**
* create deserializer that can parse stored CanSKeyValue into snapshotEdge.
@@ -83,5 +83,5 @@ class AsynchbaseStorageSerDe(val graph: S2Graph) extends StorageSerDe {
/** create deserializer that can parser stored CanSKeyValue into vertex. */
private val vertexDeserializer = new serde.vertex.wide.VertexDeserializable(graph)
- override def vertexDeserializer(schemaVer: String): Deserializable[S2Vertex] = vertexDeserializer
+ override def vertexDeserializer(schemaVer: String): Deserializable[S2VertexLike] = vertexDeserializer
}
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexDeserializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexDeserializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexDeserializable.scala
index 648c9df..019394e 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexDeserializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexDeserializable.scala
@@ -24,12 +24,12 @@ import org.apache.s2graph.core.storage.CanSKeyValue
import org.apache.s2graph.core.storage.serde.Deserializable
import org.apache.s2graph.core.storage.serde.StorageDeserializable._
import org.apache.s2graph.core.types.{HBaseType, InnerValLike, VertexId}
-import org.apache.s2graph.core.{S2Graph, S2Vertex}
+import org.apache.s2graph.core.{S2Graph, S2Vertex, S2VertexLike}
class VertexDeserializable(graph: S2Graph,
- bytesToInt: (Array[Byte], Int) => Int = bytesToInt) extends Deserializable[S2Vertex] {
+ bytesToInt: (Array[Byte], Int) => Int = bytesToInt) extends Deserializable[S2VertexLike] {
def fromKeyValues[T: CanSKeyValue](_kvs: Seq[T],
- cacheElementOpt: Option[S2Vertex]): Option[S2Vertex] = {
+ cacheElementOpt: Option[S2VertexLike]): Option[S2VertexLike] = {
try {
assert(_kvs.size == 1)
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexSerializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexSerializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexSerializable.scala
index 87f050d..6e82b87 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexSerializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/tall/VertexSerializable.scala
@@ -19,14 +19,14 @@
package org.apache.s2graph.core.storage.serde.vertex.tall
-import org.apache.s2graph.core.S2Vertex
+import org.apache.s2graph.core.{S2Vertex, S2VertexLike}
import org.apache.s2graph.core.storage.SKeyValue
import org.apache.s2graph.core.storage.serde.Serializable
import org.apache.s2graph.core.storage.serde.StorageSerializable._
import scala.collection.JavaConverters._
-case class VertexSerializable(vertex: S2Vertex, intToBytes: Int => Array[Byte] = intToBytes) extends Serializable[S2Vertex] {
+case class VertexSerializable(vertex: S2VertexLike, intToBytes: Int => Array[Byte] = intToBytes) extends Serializable[S2VertexLike] {
override val table = vertex.hbaseTableName.getBytes
override val ts = vertex.ts
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexDeserializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexDeserializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexDeserializable.scala
index bae7941..ddb90ac 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexDeserializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexDeserializable.scala
@@ -24,14 +24,14 @@ import org.apache.s2graph.core.storage.CanSKeyValue
import org.apache.s2graph.core.storage.serde.Deserializable
import org.apache.s2graph.core.storage.serde.StorageDeserializable._
import org.apache.s2graph.core.types.{HBaseType, InnerVal, InnerValLike, VertexId}
-import org.apache.s2graph.core.{S2Graph, S2Vertex}
+import org.apache.s2graph.core.{S2Graph, S2Vertex, S2VertexLike}
import scala.collection.mutable.ListBuffer
class VertexDeserializable(graph: S2Graph,
- bytesToInt: (Array[Byte], Int) => Int = bytesToInt) extends Deserializable[S2Vertex] {
+ bytesToInt: (Array[Byte], Int) => Int = bytesToInt) extends Deserializable[S2VertexLike] {
def fromKeyValues[T: CanSKeyValue](_kvs: Seq[T],
- cacheElementOpt: Option[S2Vertex]): Option[S2Vertex] = {
+ cacheElementOpt: Option[S2VertexLike]): Option[S2VertexLike] = {
try {
val kvs = _kvs.map { kv => implicitly[CanSKeyValue[T]].toSKeyValue(kv) }
val kv = kvs.head
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexSerializable.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexSerializable.scala b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexSerializable.scala
index 59db0ab..9efd4e6 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexSerializable.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/storage/serde/vertex/wide/VertexSerializable.scala
@@ -19,14 +19,14 @@
package org.apache.s2graph.core.storage.serde.vertex.wide
-import org.apache.s2graph.core.S2Vertex
+import org.apache.s2graph.core.{S2Vertex, S2VertexLike}
import org.apache.s2graph.core.storage.SKeyValue
import org.apache.s2graph.core.storage.serde.Serializable
import org.apache.s2graph.core.storage.serde.StorageSerializable._
import scala.collection.JavaConverters._
-case class VertexSerializable(vertex: S2Vertex, intToBytes: Int => Array[Byte] = intToBytes) extends Serializable[S2Vertex] {
+case class VertexSerializable(vertex: S2VertexLike, intToBytes: Int => Array[Byte] = intToBytes) extends Serializable[S2VertexLike] {
override val table = vertex.hbaseTableName.getBytes
override val ts = vertex.ts
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/test/scala/org/apache/s2graph/core/storage/StorageIOTest.scala
----------------------------------------------------------------------
diff --git a/s2core/src/test/scala/org/apache/s2graph/core/storage/StorageIOTest.scala b/s2core/src/test/scala/org/apache/s2graph/core/storage/StorageIOTest.scala
index a05be79..0cd975c 100644
--- a/s2core/src/test/scala/org/apache/s2graph/core/storage/StorageIOTest.scala
+++ b/s2core/src/test/scala/org/apache/s2graph/core/storage/StorageIOTest.scala
@@ -22,7 +22,7 @@ package org.apache.s2graph.core.storage
import org.apache.s2graph.core.mysqls._
import org.apache.s2graph.core.storage.hbase.AsynchbaseStorageSerDe
import org.apache.s2graph.core.storage.serde.{StorageDeserializable, StorageSerializable}
-import org.apache.s2graph.core.{S2Vertex, TestCommonWithModels}
+import org.apache.s2graph.core.{S2Vertex, S2VertexLike, TestCommonWithModels}
import org.scalatest.{FunSuite, Matchers}
class StorageIOTest extends FunSuite with Matchers with TestCommonWithModels {
@@ -30,9 +30,9 @@ class StorageIOTest extends FunSuite with Matchers with TestCommonWithModels {
initTests()
test("AsynchbaseStorageIO: VertexSerializer/Deserializer") {
- def check(vertex: S2Vertex,
- op: S2Vertex => StorageSerializable[S2Vertex],
- deserializer: StorageDeserializable[S2Vertex]): Boolean = {
+ def check(vertex: S2VertexLike,
+ op: S2VertexLike => StorageSerializable[S2VertexLike],
+ deserializer: StorageDeserializable[S2VertexLike]): Boolean = {
val sKeyValues = op(vertex).toKeyValues
val deserialized = deserializer.fromKeyValues(sKeyValues, None)
vertex == deserialized
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
----------------------------------------------------------------------
diff --git a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
index 52d182e..d8b2cfa 100644
--- a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
+++ b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
@@ -39,6 +39,7 @@ object S2GraphProvider {
val Implementation: Set[Class[_]] = Set(
classOf[S2Edge],
classOf[S2Vertex],
+ classOf[S2VertexLike],
classOf[S2Property[_]],
classOf[S2VertexProperty[_]],
classOf[S2Graph]
http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f7170235/s2rest_play/app/org/apache/s2graph/rest/play/controllers/EdgeController.scala
----------------------------------------------------------------------
diff --git a/s2rest_play/app/org/apache/s2graph/rest/play/controllers/EdgeController.scala b/s2rest_play/app/org/apache/s2graph/rest/play/controllers/EdgeController.scala
index 9a45bd5..101b331 100644
--- a/s2rest_play/app/org/apache/s2graph/rest/play/controllers/EdgeController.scala
+++ b/s2rest_play/app/org/apache/s2graph/rest/play/controllers/EdgeController.scala
@@ -52,7 +52,7 @@ object EdgeController extends Controller {
val kafkaTopic = toKafkaTopic(graphElem.isAsync)
graphElem match {
- case v: S2Vertex =>
+ case v: S2VertexLike =>
enqueue(kafkaTopic, graphElem, tsv)
case e: S2Edge =>
e.innerLabel.extraOptions.get("walLog") match {
@@ -74,7 +74,7 @@ object EdgeController extends Controller {
}
}
- private def toDeleteAllFailMessages(srcVertices: Seq[S2Vertex], labels: Seq[Label], dir: Int, ts: Long ) = {
+ private def toDeleteAllFailMessages(srcVertices: Seq[S2VertexLike], labels: Seq[Label], dir: Int, ts: Long ) = {
for {
vertex <- srcVertices
id = vertex.id.toString
@@ -268,7 +268,7 @@ object EdgeController extends Controller {
}
def deleteEach(labels: Seq[Label], direction: String, ids: Seq[JsValue],
- ts: Long, vertices: Seq[S2Vertex]) = {
+ ts: Long, vertices: Seq[S2VertexLike]) = {
val future = s2.deleteAllAdjacentEdges(vertices.toList, labels, GraphUtil.directions(direction), ts)
if (withWait) {