Skip to content

Commit 1574a43

Browse files
committed
fix(model-datastructure): some operations were not handled in OperationsCompressor
Which results in exceptions at runtime.
1 parent 08cfbfb commit 1574a43

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@ package org.modelix.model.lazy
1515

1616
import org.modelix.model.operations.AddNewChildOp
1717
import org.modelix.model.operations.AddNewChildSubtreeOp
18+
import org.modelix.model.operations.AddNewChildrenOp
19+
import org.modelix.model.operations.BulkUpdateOp
1820
import org.modelix.model.operations.DeleteNodeOp
1921
import org.modelix.model.operations.IOperation
2022
import org.modelix.model.operations.MoveNodeOp
2123
import org.modelix.model.operations.NoOp
2224
import org.modelix.model.operations.RevertToOp
25+
import org.modelix.model.operations.SetConceptOp
2326
import org.modelix.model.operations.SetPropertyOp
2427
import org.modelix.model.operations.SetReferenceOp
2528
import org.modelix.model.operations.UndoOp
@@ -42,7 +45,7 @@ class OperationsCompressor(val resultTree: CLTree) {
4245

4346
for (op in ops) {
4447
when (op) {
45-
is UndoOp, is RevertToOp, is AddNewChildSubtreeOp, is DeleteNodeOp, is MoveNodeOp -> return ops
48+
is UndoOp, is RevertToOp, is AddNewChildSubtreeOp, is DeleteNodeOp, is MoveNodeOp, is BulkUpdateOp, is AddNewChildrenOp -> return ops
4649
is NoOp -> {}
4750
is AddNewChildOp -> {
4851
if (!createdNodes.contains(op.position.nodeId)) {
@@ -53,10 +56,12 @@ class OperationsCompressor(val resultTree: CLTree) {
5356
is SetPropertyOp -> {
5457
if (!createdNodes.contains(op.nodeId)) compressedOps += op
5558
}
59+
is SetConceptOp -> {
60+
if (!createdNodes.contains(op.nodeId)) compressedOps += op
61+
}
5662
is SetReferenceOp -> {
5763
if (!createdNodes.contains(op.sourceId)) compressedOps += op
5864
}
59-
else -> throw RuntimeException("Unknown operation type: $op")
6065
}
6166
}
6267

model-datastructure/src/commonMain/kotlin/org/modelix/model/operations/AbstractOperation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import org.modelix.model.api.ITree
1919
import org.modelix.model.lazy.KVEntryReference
2020
import org.modelix.model.persistent.IKVValue
2121

22-
abstract class AbstractOperation : IOperation {
22+
sealed class AbstractOperation : IOperation {
2323

2424
abstract inner class Applied {
2525
override fun toString(): String {

model-datastructure/src/commonMain/kotlin/org/modelix/model/operations/IOperation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import org.modelix.model.lazy.IDeserializingKeyValueStore
2121
import org.modelix.model.lazy.KVEntryReference
2222
import org.modelix.model.persistent.IKVValue
2323

24-
interface IOperation {
24+
sealed interface IOperation {
2525
fun apply(transaction: IWriteTransaction, store: IDeserializingKeyValueStore): IAppliedOperation
2626
fun captureIntend(tree: ITree, store: IDeserializingKeyValueStore): IOperationIntend
2727
fun getReferencedEntries(): List<KVEntryReference<IKVValue>>

0 commit comments

Comments
 (0)