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 <[email protected]> Authored: Fri Nov 3 12:13:03 2017 +0900 Committer: DO YUNG YOON <[email protected]> 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) {
