in s2core/src/main/scala/org/apache/s2graph/core/S2GraphLike.scala [290:320]
def addVertex(kvs: AnyRef*): structure.Vertex = {
if (!features().vertex().supportsUserSuppliedIds() && kvs.contains(T.id)) {
throw Vertex.Exceptions.userSuppliedIdsNotSupported
}
val kvsMap = S2Property.kvsToProps(kvs)
kvsMap.get(T.id.name()) match {
case Some(idValue) if !S2Property.validType(idValue) =>
throw Vertex.Exceptions.userSuppliedIdsOfThisTypeNotSupported()
case _ =>
}
kvsMap.foreach { case (k, v) => S2Property.assertValidProp(k, v) }
if (kvsMap.contains(T.label.name()) && kvsMap(T.label.name).toString.isEmpty)
throw Element.Exceptions.labelCanNotBeEmpty
val vertex = kvsMap.get(T.id.name()) match {
case None => // do nothing
val id = localLongId.getAndIncrement()
elementBuilder.makeVertex(Long.box(id), kvsMap)
case Some(idValue) if S2Property.validType(idValue) =>
elementBuilder.makeVertex(idValue, kvsMap)
case _ =>
throw Vertex.Exceptions.userSuppliedIdsOfThisTypeNotSupported
}
addVertex(vertex.id, vertex.ts, vertex.props, vertex.op, vertex.belongLabelIds)
vertex
}