Skip to content

Commit 21c4ee8

Browse files
committed
fix(model-server): the new API at /v2/ wasn't initialized
1 parent 78713d8 commit 21c4ee8

File tree

4 files changed

+16
-15
lines changed

4 files changed

+16
-15
lines changed

model-server/src/main/kotlin/org/modelix/model/server/Main.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ import org.modelix.authorization.installAuthentication
4242
import org.modelix.model.server.handlers.HistoryHandler
4343
import org.modelix.model.server.handlers.DeprecatedLightModelServer
4444
import org.modelix.model.server.handlers.KeyValueLikeModelServer
45+
import org.modelix.model.server.handlers.ModelReplicationServer
46+
import org.modelix.model.server.handlers.RepositoriesManager
4547
import org.modelix.model.server.store.IStoreClient
4648
import org.modelix.model.server.store.IgniteStoreClient
4749
import org.modelix.model.server.store.InMemoryStoreClient
@@ -132,6 +134,8 @@ object Main {
132134

133135
val historyHandler = HistoryHandler(localModelClient)
134136
val jsonModelServer = DeprecatedLightModelServer(localModelClient)
137+
val repositoriesManager = RepositoriesManager(localModelClient)
138+
val modelReplicationServer = ModelReplicationServer(repositoriesManager)
135139
val ktorServer: NettyApplicationEngine = embeddedServer(Netty, port = port) {
136140
install(Routing)
137141
installAuthentication(unitTestMode = !KeycloakUtils.isEnabled())
@@ -152,6 +156,7 @@ object Main {
152156
modelServer.init(this)
153157
historyHandler.init(this)
154158
jsonModelServer.init(this)
159+
modelReplicationServer.init(this)
155160
routing {
156161
get("/") {
157162
call.respondHtml {

model-server/src/main/kotlin/org/modelix/model/server/handlers/ModelReplicationServer.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ private fun toLong(value: String?): Long {
5353
* client sends. This allows more validations and more responsibilities on the server side.
5454
*/
5555
@OptIn(ExperimentalSerializationApi::class)
56-
class ModelReplicationServer(val storeClient: IStoreClient) {
56+
class ModelReplicationServer(val repositoriesManager: RepositoriesManager) {
57+
constructor(modelClient: LocalModelClient) : this(RepositoriesManager(modelClient))
58+
constructor(storeClient: IStoreClient) : this(LocalModelClient(storeClient))
59+
5760
companion object {
5861
private val LOG = LoggerFactory.getLogger(ModelReplicationServer::class.java)
5962

@@ -62,13 +65,12 @@ class ModelReplicationServer(val storeClient: IStoreClient) {
6265
}
6366
}
6467

65-
private val modelClient: LocalModelClient = LocalModelClient(storeClient)
66-
private val repositoriesManager = RepositoriesManager(modelClient)
68+
private val modelClient: LocalModelClient get() = repositoriesManager.client
69+
private val storeClient: IStoreClient get() = modelClient.store
6770

6871
fun init(application: Application) {
6972
KeyValueLikeModelServer.initServerId(storeClient)
7073
application.apply {
71-
install(WebSockets)
7274
routing {
7375
route("v2") {
7476
installHandlers()
@@ -85,7 +87,7 @@ class ModelReplicationServer(val storeClient: IStoreClient) {
8587
call.respondText(KeyValueLikeModelServer.getServerId(storeClient))
8688
}
8789
get("user-id") {
88-
call.respondText(call.getUserName() ?: "")
90+
call.respondText(call.getUserName() ?: call.request.origin.remoteHost)
8991
}
9092
route("repositories") {
9193
get {

model-server/src/test/kotlin/org/modelix/model/server/ModelClientV2_Test.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,20 @@ import io.ktor.serialization.kotlinx.json.*
1919
import io.ktor.server.application.*
2020
import io.ktor.server.plugins.contentnegotiation.*
2121
import io.ktor.server.testing.*
22-
import kotlinx.coroutines.delay
23-
import kotlinx.coroutines.withTimeout
24-
import org.junit.Assert
22+
import io.ktor.server.websocket.*
2523
import org.junit.Test
2624
import org.modelix.authorization.installAuthentication
27-
import org.modelix.model.IKeyListener
2825
import org.modelix.model.api.IConceptReference
2926
import org.modelix.model.api.ITree
3027
import org.modelix.model.api.PBranch
31-
import org.modelix.model.api.PNodeAdapter
32-
import org.modelix.model.client.RestWebModelClient
3328
import org.modelix.model.client2.ModelClientV2
3429
import org.modelix.model.lazy.CLTree
3530
import org.modelix.model.lazy.CLVersion
3631
import org.modelix.model.lazy.RepositoryId
3732
import org.modelix.model.operations.OTBranch
38-
import org.modelix.model.server.handlers.KeyValueLikeModelServer
3933
import org.modelix.model.server.handlers.ModelReplicationServer
4034
import org.modelix.model.server.store.InMemoryStoreClient
41-
import java.util.*
4235
import kotlin.test.assertEquals
43-
import kotlin.test.fail
44-
import kotlin.time.Duration.Companion.seconds
4536

4637
class ModelClientV2_Test {
4738

@@ -51,6 +42,7 @@ class ModelClientV2_Test {
5142
install(ContentNegotiation) {
5243
json()
5344
}
45+
install(WebSockets)
5446
ModelReplicationServer(InMemoryStoreClient()).init(this)
5547
}
5648
block()

model-server/src/test/kotlin/org/modelix/model/server/ReplicatedRepositoryTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import io.ktor.serialization.kotlinx.json.*
1919
import io.ktor.server.application.*
2020
import io.ktor.server.plugins.contentnegotiation.*
2121
import io.ktor.server.testing.*
22+
import io.ktor.server.websocket.*
2223
import kotlinx.coroutines.delay
2324
import org.junit.Test
2425
import org.modelix.authorization.installAuthentication
@@ -47,6 +48,7 @@ class ReplicatedRepositoryTest {
4748
install(ContentNegotiation) {
4849
json()
4950
}
51+
install(WebSockets)
5052
ModelReplicationServer(InMemoryStoreClient()).init(this)
5153
}
5254
block()

0 commit comments

Comments
 (0)