Skip to content

Commit ff4b503

Browse files
committed
refactor(model-datastructure): renamed methods in IBulkQuery
IBulkQuery is not public API, so this is not considered a breaking change.
1 parent 62112cf commit ff4b503

File tree

12 files changed

+93
-93
lines changed

12 files changed

+93
-93
lines changed

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/BulkQuery.kt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ class BulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
3939
}
4040

4141
fun <T : IKVValue> query(key: KVEntryReference<T>, callback: (T) -> Unit) {
42-
if (queue.size >= BATCH_SIZE && !processing) process()
42+
if (queue.size >= BATCH_SIZE && !processing) executeQuery()
4343
queue.add(Pair(key as KVEntryReference<IKVValue>, callback as (IKVValue?) -> Unit))
4444
}
4545

46-
override fun <T : IKVValue> get(hash: KVEntryReference<T>): IBulkQuery.Value<T?> {
46+
override fun <T : IKVValue> query(hash: KVEntryReference<T>): IBulkQuery.Value<T?> {
4747
val result = Value<T?>()
4848
query(hash) { value: T? -> result.success(value) }
4949
return result
@@ -53,7 +53,7 @@ class BulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
5353
return Value(value)
5454
}
5555

56-
override fun process() {
56+
override fun executeQuery() {
5757
if (processing) {
5858
throw RuntimeException("Already processing")
5959
}
@@ -83,22 +83,22 @@ class BulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
8383
}
8484
}
8585

86-
override fun <I, O> map(input_: Iterable<I>, f: (I) -> IBulkQuery.Value<O>): IBulkQuery.Value<List<O>> {
87-
val input = input_.toList()
88-
if (input.isEmpty()) {
86+
override fun <I, O> flatMap(input: Iterable<I>, f: (I) -> IBulkQuery.Value<O>): IBulkQuery.Value<List<O>> {
87+
val inputList = input.toList()
88+
if (inputList.isEmpty()) {
8989
return constant(emptyList())
9090
}
91-
val output = arrayOfNulls<Any>(input.size)
92-
val done = BooleanArray(input.size)
93-
var remaining = input.size
91+
val output = arrayOfNulls<Any>(inputList.size)
92+
val done = BooleanArray(inputList.size)
93+
var remaining = inputList.size
9494
val result = Value<List<O>>()
95-
for (i_ in input.indices) {
96-
f(input[i_]).onSuccess { value ->
97-
if (done[i_]) {
98-
return@onSuccess
95+
for (i in inputList.indices) {
96+
f(inputList[i]).onReceive { value ->
97+
if (done[i]) {
98+
return@onReceive
9999
}
100-
output[i_] = value
101-
done[i_] = true
100+
output[i] = value
101+
done[i] = true
102102
remaining--
103103
if (remaining == 0) {
104104
result.success(output.map { e: Any? -> e as O })
@@ -131,16 +131,16 @@ class BulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
131131
}
132132

133133
@Synchronized
134-
override fun onSuccess(handler: (T) -> Unit) {
134+
override fun onReceive(handler: (T) -> Unit) {
135135
if (done) {
136136
handler(value as T)
137137
} else {
138138
handlers!!.add(handler)
139139
}
140140
}
141141

142-
override fun execute(): T {
143-
process()
142+
override fun executeQuery(): T {
143+
this@BulkQuery.executeQuery()
144144
if (!done) {
145145
throw RuntimeException("No value received")
146146
}
@@ -149,13 +149,13 @@ class BulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
149149

150150
override fun <R> map(handler: (T) -> R): IBulkQuery.Value<R> {
151151
val result = Value<R>()
152-
onSuccess { v -> result.success(handler(v)) }
152+
onReceive { v -> result.success(handler(v)) }
153153
return result
154154
}
155155

156-
override fun <R> mapBulk(handler: (T) -> IBulkQuery.Value<R>): IBulkQuery.Value<R> {
156+
override fun <R> flatMap(handler: (T) -> IBulkQuery.Value<R>): IBulkQuery.Value<R> {
157157
val result = Value<R>()
158-
onSuccess { v -> handler(v).onSuccess { value -> result.success(value) } }
158+
onReceive { v -> handler(v).onReceive { value -> result.success(value) } }
159159
return result
160160
}
161161
}

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/CLNode.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ class CLNode(private val tree: CLTree, private val data: CPNode) {
8282
getDescendants(bulkQuery, false)
8383
.map { descendants -> (sequenceOf(this) + descendants).asIterable() }
8484
} else {
85-
getChildren(bulkQuery).mapBulk { children: Iterable<CLNode> ->
85+
getChildren(bulkQuery).flatMap { children: Iterable<CLNode> ->
8686
val d: IBulkQuery.Value<Iterable<CLNode>> = bulkQuery
87-
.map(children) { child: CLNode -> child.getDescendants(bulkQuery, true) }
87+
.flatMap(children) { child: CLNode -> child.getDescendants(bulkQuery, true) }
8888
.map { it.flatten() }
8989
d
9090
}

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/CLTree.kt

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class CLTree : ITree, IBulkTree {
9292
}
9393

9494
fun getSize(): Long {
95-
return (nodesMap ?: return 0L).calculateSize(store.newBulkQuery()).execute()
95+
return (nodesMap ?: return 0L).calculateSize(store.newBulkQuery()).executeQuery()
9696
}
9797

9898
fun prefetchAll() {
@@ -315,43 +315,43 @@ class CLTree : ITree, IBulkTree {
315315
}
316316

317317
override fun getAllChildren(parentId: Long): Iterable<Long> {
318-
val children = getChildren(resolveElement(parentId)!!, store.newBulkQuery()).execute()
318+
val children = getChildren(resolveElement(parentId)!!, store.newBulkQuery()).executeQuery()
319319
return children.map { it.id }
320320
}
321321

322322
override fun getDescendants(root: Long, includeSelf: Boolean): Iterable<CLNode> {
323323
val parent = resolveElement(root)
324-
return getDescendants(parent!!, store.newBulkQuery(), includeSelf).execute().map { CLNode(this, it) }
324+
return getDescendants(parent!!, store.newBulkQuery(), includeSelf).executeQuery().map { CLNode(this, it) }
325325
}
326326

327327
override fun getDescendants(rootIds: Iterable<Long>, includeSelf: Boolean): Iterable<CLNode> {
328328
val bulkQuery = store.newBulkQuery()
329329
val roots: IBulkQuery.Value<List<CPNode>> = resolveElements(rootIds.toList(), bulkQuery)
330-
val descendants = roots.mapBulk { bulkQuery.map(it) { getDescendants(it, bulkQuery, includeSelf) } }
331-
return descendants.execute().flatten().map { CLNode(this, it) }
330+
val descendants = roots.flatMap { bulkQuery.flatMap(it) { getDescendants(it, bulkQuery, includeSelf) } }
331+
return descendants.executeQuery().flatten().map { CLNode(this, it) }
332332
}
333333

334334
override fun getAncestors(nodeIds: Iterable<Long>, includeSelf: Boolean): Set<Long> {
335335
val bulkQuery = store.newBulkQuery()
336336
val nodes: IBulkQuery.Value<List<CPNode>> = resolveElements(nodeIds, bulkQuery)
337-
val ancestors = nodes.mapBulk { bulkQuery.map(it) { getAncestors(it, bulkQuery, includeSelf) } }
337+
val ancestors = nodes.flatMap { bulkQuery.flatMap(it) { getAncestors(it, bulkQuery, includeSelf) } }
338338
val result = HashSet<Long>()
339-
ancestors.execute().forEach { result.addAll(it.map { it.id }) }
339+
ancestors.executeQuery().forEach { result.addAll(it.map { it.id }) }
340340
return result
341341
}
342342

343343
override fun getChildren(parentId: Long, role: String?): Iterable<Long> {
344344
checkChildRoleId(parentId, role)
345345
val parent = resolveElement(parentId)
346-
val children = getChildren(parent!!, store.newBulkQuery()).execute()
346+
val children = getChildren(parent!!, store.newBulkQuery()).executeQuery()
347347
return children
348348
.filter { it.roleInParent == role }
349349
.map { it.id }
350350
}
351351

352352
override fun getChildRoles(sourceId: Long): Iterable<String?> {
353353
val parent = resolveElement(sourceId)
354-
val children: Iterable<CPNode> = getChildren(parent!!, store.newBulkQuery()).execute()
354+
val children: Iterable<CPNode> = getChildren(parent!!, store.newBulkQuery()).executeQuery()
355355
return children.map { it.roleInParent }.distinct()
356356
}
357357

@@ -443,7 +443,7 @@ class CLTree : ITree, IBulkTree {
443443
override fun visitChanges(oldVersion: ITree, visitor: ITreeChangeVisitor) {
444444
val bulkQuery = store.newBulkQuery()
445445
visitChanges(oldVersion, visitor, bulkQuery)
446-
(bulkQuery as? BulkQuery)?.process()
446+
(bulkQuery as? BulkQuery)?.executeQuery()
447447
}
448448

449449
fun visitChanges(oldVersion: ITree, visitor: ITreeChangeVisitor, bulkQuery: IBulkQuery) {
@@ -512,7 +512,7 @@ class CLTree : ITree, IBulkTree {
512512
}
513513
}
514514

515-
bulkQuery.map(listOf(oldVersion.getChildren(oldElement, bulkQuery), getChildren(newElement, bulkQuery))) { it }.onSuccess { childrenLists ->
515+
bulkQuery.flatMap(listOf(oldVersion.getChildren(oldElement, bulkQuery), getChildren(newElement, bulkQuery))) { it }.onReceive { childrenLists ->
516516
val (oldChildrenList, newChildrenList) = childrenLists
517517
val oldChildren: MutableMap<String?, MutableList<CPNode>> = HashMap()
518518
val newChildren: MutableMap<String?, MutableList<CPNode>> = HashMap()
@@ -567,15 +567,15 @@ class CLTree : ITree, IBulkTree {
567567
}
568568

569569
fun resolveElement(id: Long): CPNode? {
570-
return resolveElement(id, NonBulkQuery(store)).execute()
570+
return resolveElement(id, NonBulkQuery(store)).executeQuery()
571571
}
572572

573573
fun resolveElement(id: Long, bulkQuery: IBulkQuery): IBulkQuery.Value<CPNode?> {
574574
if (id == 0L) {
575575
return bulkQuery.constant(null)
576576
}
577577
val hash = nodesMap!!.get(id, bulkQuery)
578-
return hash.mapBulk {
578+
return hash.flatMap {
579579
if (it == null) throw NodeNotFoundException(id)
580580
createElement(it, bulkQuery)
581581
}
@@ -587,24 +587,24 @@ class CLTree : ITree, IBulkTree {
587587
val b: IBulkQuery.Value<List<KVEntryReference<CPNode>>> = a.map { hashes: List<KVEntryReference<CPNode>?> ->
588588
hashes.mapIndexed { index, s -> s ?: throw NodeNotFoundException(ids[index]) }
589589
}
590-
return b.mapBulk { hashes -> createElements(hashes, bulkQuery) }
590+
return b.flatMap { hashes -> createElements(hashes, bulkQuery) }
591591
}
592592

593593
fun createElement(hash: KVEntryReference<CPNode>?, query: IBulkQuery): IBulkQuery.Value<CPNode?> {
594594
return if (hash == null) {
595595
query.constant(null)
596596
} else {
597-
query[hash]
597+
query.query(hash)
598598
}
599599
}
600600

601601
fun createElement(hash: KVEntryReference<CPNode>?): CPNode? {
602-
return createElement(hash, NonBulkQuery(store)).execute()
602+
return createElement(hash, NonBulkQuery(store)).executeQuery()
603603
}
604604

605605
fun createElements(hashes: List<KVEntryReference<CPNode>>, bulkQuery: IBulkQuery): IBulkQuery.Value<List<CPNode>> {
606-
return bulkQuery.map(hashes) { hash: KVEntryReference<CPNode> ->
607-
bulkQuery[hash].map { n -> n!! }
606+
return bulkQuery.flatMap(hashes) { hash: KVEntryReference<CPNode> ->
607+
bulkQuery.query(hash).map { n -> n!! }
608608
}
609609
}
610610

@@ -635,9 +635,9 @@ class CLTree : ITree, IBulkTree {
635635
getDescendants(node, bulkQuery, false)
636636
.map { descendants -> (sequenceOf(node) + descendants).asIterable() }
637637
} else {
638-
getChildren(node, bulkQuery).mapBulk { children: Iterable<CPNode> ->
638+
getChildren(node, bulkQuery).flatMap { children: Iterable<CPNode> ->
639639
val d: IBulkQuery.Value<Iterable<CPNode>> = bulkQuery
640-
.map(children) { child: CPNode -> getDescendants(child, bulkQuery, true) }
640+
.flatMap(children) { child: CPNode -> getDescendants(child, bulkQuery, true) }
641641
.map { it.flatten() }
642642
d
643643
}

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/CLVersion.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ private fun computeDelta(keyValueStore: IKeyValueStore, versionHash: String, bas
349349
override fun visitChangesOnly(): Boolean = false
350350
override fun entryAdded(key: Long, value: KVEntryReference<CPNode>) {
351351
changedNodeIds += key
352-
if (value != null) bulkQuery.get(value)
352+
if (value != null) bulkQuery.query(value)
353353
}
354354

355355
override fun entryRemoved(key: Long, value: KVEntryReference<CPNode>) {
@@ -362,14 +362,14 @@ private fun computeDelta(keyValueStore: IKeyValueStore, versionHash: String, bas
362362
newValue: KVEntryReference<CPNode>,
363363
) {
364364
changedNodeIds += key
365-
if (newValue != null) bulkQuery.get(newValue)
365+
if (newValue != null) bulkQuery.query(newValue)
366366
}
367367
},
368368
bulkQuery,
369369
)
370370
v1 = v2
371371
}
372-
(bulkQuery as? BulkQuery)?.process()
372+
(bulkQuery as? BulkQuery)?.executeQuery()
373373
}
374374
val oldEntries: Map<String, String?> = trackAccessedEntries(keyValueStore) { store ->
375375
if (baseVersionHash == null) return@trackAccessedEntries
@@ -386,12 +386,12 @@ private fun computeDelta(keyValueStore: IKeyValueStore, versionHash: String, bas
386386

387387
val nodesMap = oldTree.nodesMap!!
388388
changedNodeIds.forEach { changedNodeId ->
389-
nodesMap.get(changedNodeId, 0, bulkQuery).onSuccess { nodeRef: KVEntryReference<CPNode>? ->
390-
if (nodeRef != null) bulkQuery.get(nodeRef)
389+
nodesMap.get(changedNodeId, 0, bulkQuery).onReceive { nodeRef: KVEntryReference<CPNode>? ->
390+
if (nodeRef != null) bulkQuery.query(nodeRef)
391391
}
392392
}
393393

394-
(bulkQuery as? BulkQuery)?.process()
394+
(bulkQuery as? BulkQuery)?.executeQuery()
395395
}
396396
return oldAndNewEntries - oldEntries.keys
397397
}

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/IBulkQuery.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ package org.modelix.model.lazy
1818
import org.modelix.model.persistent.IKVValue
1919

2020
interface IBulkQuery {
21-
fun process()
22-
fun <I, O> map(input_: Iterable<I>, f: (I) -> Value<O>): Value<List<O>>
21+
fun executeQuery()
22+
fun <I, O> flatMap(input: Iterable<I>, f: (I) -> Value<O>): Value<List<O>>
2323
fun <T> constant(value: T): Value<T>
24-
operator fun <T : IKVValue> get(hash: KVEntryReference<T>): Value<T?>
24+
fun <T : IKVValue> query(hash: KVEntryReference<T>): Value<T?>
2525
interface Value<out T> {
26-
fun execute(): T
27-
fun <R> mapBulk(handler: (T) -> Value<R>): Value<R>
26+
fun executeQuery(): T
27+
fun <R> flatMap(handler: (T) -> Value<R>): Value<R>
2828
fun <R> map(handler: (T) -> R): Value<R>
29-
fun onSuccess(handler: (T) -> Unit)
29+
fun onReceive(handler: (T) -> Unit)
3030
}
3131
}

model-datastructure/src/commonMain/kotlin/org/modelix/model/lazy/NonBulkQuery.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,37 @@ package org.modelix.model.lazy
1818
import org.modelix.model.persistent.IKVValue
1919

2020
class NonBulkQuery(private val store: IDeserializingKeyValueStore) : IBulkQuery {
21-
override fun <I, O> map(input_: Iterable<I>, f: (I) -> IBulkQuery.Value<O>): IBulkQuery.Value<List<O>> {
22-
val list = input_.asSequence().map(f).map { it.execute() }.toList()
21+
override fun <I, O> flatMap(input: Iterable<I>, f: (I) -> IBulkQuery.Value<O>): IBulkQuery.Value<List<O>> {
22+
val list = input.asSequence().map(f).map { it.executeQuery() }.toList()
2323
return Value(list)
2424
}
2525

2626
override fun <T> constant(value: T): IBulkQuery.Value<T> {
2727
return Value(value)
2828
}
2929

30-
override fun <T : IKVValue> get(hash: KVEntryReference<T>): IBulkQuery.Value<T?> {
30+
override fun <T : IKVValue> query(hash: KVEntryReference<T>): IBulkQuery.Value<T?> {
3131
return constant(hash.getValue(store))
3232
}
3333

34-
override fun process() {
34+
override fun executeQuery() {
3535
// all requests are processed immediately
3636
}
3737

3838
class Value<T>(private val value: T) : IBulkQuery.Value<T> {
39-
override fun execute(): T {
39+
override fun executeQuery(): T {
4040
return value
4141
}
4242

43-
override fun <R> mapBulk(handler: (T) -> IBulkQuery.Value<R>): IBulkQuery.Value<R> {
43+
override fun <R> flatMap(handler: (T) -> IBulkQuery.Value<R>): IBulkQuery.Value<R> {
4444
return handler(value)
4545
}
4646

4747
override fun <R> map(handler: (T) -> R): IBulkQuery.Value<R> {
4848
return Value(handler(value))
4949
}
5050

51-
override fun onSuccess(handler: (T) -> Unit) {
51+
override fun onReceive(handler: (T) -> Unit) {
5252
handler(value)
5353
}
5454
}

0 commit comments

Comments
 (0)