Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion editor-common-mps/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ kotlin {
dependencies {
compileOnly(kotlin("stdlib"))
compileOnly(coreLibs.kotlin.coroutines.core)
compileOnly(coreLibs.kotlin.coroutines.swing)
compileOnly(coreLibs.kotlin.serialization.json)

api(coreLibs.ktor.server.core, excludeMPSLibraries)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
package org.modelix.mps.editor.common

import io.ktor.server.application.Application
import io.ktor.server.engine.ApplicationEngine
import io.ktor.server.application.serverConfig
import io.ktor.server.engine.EmbeddedServer
import io.ktor.server.engine.EngineConnectorBuilder
import io.ktor.server.engine.applicationEngineEnvironment
import io.ktor.server.engine.applicationEnvironment
import io.ktor.server.netty.Netty
import io.ktor.server.netty.NettyApplicationEngine
import io.ktor.util.logging.KtorSimpleLogger
import kotlinx.coroutines.GlobalScope

fun embeddedServer(port: Int, classLoader: ClassLoader? = null, module: Application.() -> Unit): ApplicationEngine {
fun embeddedServer(port: Int, classLoader: ClassLoader? = null, module: Application.() -> Unit): EmbeddedServer<NettyApplicationEngine, NettyApplicationEngine.Configuration> {
val portParam = port
val classLoaderParam = classLoader
val moduleParam = module
val environment = applicationEngineEnvironment {
val environment = applicationEnvironment {
if (classLoaderParam != null) this.classLoader = classLoaderParam
this.parentCoroutineContext = GlobalScope.coroutineContext
this.log = KtorSimpleLogger("ktor.application")
this.watchPaths = emptyList()
}
val applicationProperties = serverConfig(environment) {
this.module(moduleParam)
this.connectors += EngineConnectorBuilder().also { it.port = portParam }
this.parentCoroutineContext = GlobalScope.coroutineContext
this.watchPaths = emptyList()
}
return io.ktor.server.engine.embeddedServer(factory = Netty, environment = environment, configure = {})
return io.ktor.server.engine.embeddedServer(Netty, applicationProperties, configure = {
this.connectors += EngineConnectorBuilder().also { it.port = portParam }
})
}
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }

[versions]
modelixCore = "11.1.3"
modelixCore = "11.2.1"
modelixBuildtools="1.7.4"
kotlin = "2.1.0"

Expand Down
1 change: 0 additions & 1 deletion kernelf-editor/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ kotlin {
}
val jvmMain by getting {
dependencies {
implementation(coreLibs.kotlin.coroutines.swing)
}
}
val jvmTest by getting {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.modelix.editor.ssr.demo.kernelf

import io.ktor.server.application.Application
import io.ktor.server.application.call
import io.ktor.server.application.install
import io.ktor.server.response.respondText
import io.ktor.server.routing.get
Expand All @@ -23,7 +22,7 @@ import org.modelix.model.lazy.CLTree
import org.modelix.model.lazy.ObjectStoreCache
import org.modelix.model.persistent.MapBasedStore
import org.modelix.model.withIncrementalComputationSupport
import java.time.Duration
import kotlin.time.Duration.Companion.seconds

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

Expand All @@ -49,8 +48,8 @@ fun Application.module() {
KernelfLanguages.registerAll()

install(WebSockets) {
pingPeriod = Duration.ofSeconds(15)
timeout = Duration.ofSeconds(15)
pingPeriod = 15.seconds
timeout = 15.seconds
maxFrameSize = Long.MAX_VALUE
masking = false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.ProjectActivity
import io.ktor.server.application.Application
import io.ktor.server.application.call
import io.ktor.server.application.install
import io.ktor.server.engine.ApplicationEngine
import io.ktor.server.engine.EmbeddedServer
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
import io.ktor.server.response.respond
Expand Down Expand Up @@ -43,8 +42,8 @@ import svg.plugin.RenderSession
import svg.plugin.optBoolean
import java.net.URLDecoder
import java.nio.charset.StandardCharsets
import java.time.Duration
import java.util.Collections
import kotlin.time.Duration.Companion.seconds

private val LOG = io.github.oshai.kotlinlogging.KotlinLogging.logger { }

Expand All @@ -67,7 +66,7 @@ class ImageEditorForMPS : Disposable {
fun getInstance() = ApplicationManager.getApplication().getService(ImageEditorForMPS::class.java)
}

private var ktorServer: ApplicationEngine? = null
private var ktorServer: EmbeddedServer<*, *>? = null
private val projects: MutableSet<Project> = Collections.synchronizedSet(HashSet())
private val commandLister = object : org.jetbrains.mps.openapi.repository.CommandListener {
override fun commandFinished() {
Expand Down Expand Up @@ -116,8 +115,8 @@ class ImageEditorForMPS : Disposable {

private fun Application.initKtorServer() {
install(WebSockets) {
pingPeriod = Duration.ofSeconds(15)
timeout = Duration.ofSeconds(15)
pingPeriod = 15.seconds
timeout = 15.seconds
maxFrameSize = Long.MAX_VALUE
masking = false
}
Expand Down
7 changes: 4 additions & 3 deletions projectional-editor-ssr-mps-languages/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import org.modelix.excludeMPSLibraries
import org.modelix.mpsHomeDir
import org.modelix.mpsPluginsDir

Expand All @@ -11,9 +12,9 @@ kotlin {
}

dependencies {
testImplementation(project(":projectional-editor-ssr-mps"))
testImplementation(project(":projectional-editor"))
testImplementation(libs.modelix.mps.model.adapters)
testImplementation(project(":projectional-editor-ssr-mps"), excludeMPSLibraries)
testImplementation(project(":projectional-editor"), excludeMPSLibraries)
testImplementation(libs.modelix.mps.model.adapters, excludeMPSLibraries)
}

intellij {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.ProjectActivity
import io.ktor.server.application.Application
import io.ktor.server.application.call
import io.ktor.server.application.install
import io.ktor.server.engine.ApplicationEngine
import io.ktor.server.engine.EmbeddedServer
import io.ktor.server.html.respondHtml
import io.ktor.server.http.content.staticResources
import io.ktor.server.routing.get
Expand Down Expand Up @@ -84,8 +83,8 @@ import org.modelix.scopes.IScope
import org.modelix.scopes.IScopeProvider
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
import java.time.Duration
import java.util.Collections
import kotlin.time.Duration.Companion.seconds

@Service(Service.Level.PROJECT)
class ModelixSSRServerForMPSProject(private val project: Project) : Disposable {
Expand All @@ -103,7 +102,7 @@ class ModelixSSRServerForMPSProject(private val project: Project) : Disposable {
class ModelixSSRServerForMPS : Disposable {

private var ssrServer: ModelixSSRServer? = null
private var ktorServer: ApplicationEngine? = null
private var ktorServer: EmbeddedServer<*, *>? = null
private val projects: MutableSet<Project> = Collections.synchronizedSet(HashSet())
private var mpsIntegration: EditorIntegrationForMPS? = null

Expand Down Expand Up @@ -147,8 +146,8 @@ class ModelixSSRServerForMPS : Disposable {

private fun Application.initKtorServer(ssrServer: ModelixSSRServer) {
install(WebSockets) {
pingPeriod = Duration.ofSeconds(15)
timeout = Duration.ofSeconds(15)
pingPeriod = 15.seconds
timeout = 15.seconds
maxFrameSize = Long.MAX_VALUE
masking = false
}
Expand Down
1 change: 0 additions & 1 deletion projectional-editor/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ kotlin {
}
val jvmMain by getting {
dependencies {
implementation(coreLibs.kotlin.coroutines.swing)
}
}
val jvmTest by getting {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.Application
import io.ktor.server.application.ApplicationCall
import io.ktor.server.application.call
import io.ktor.server.application.install
import io.ktor.server.engine.ApplicationEngine
import io.ktor.server.engine.EmbeddedServer
import io.ktor.server.response.respond
import io.ktor.server.response.respondBytes
import io.ktor.server.response.respondText
Expand All @@ -43,10 +42,10 @@ import org.modelix.react.ssr.server.ReactSSRServer
import java.awt.image.BufferedImage
import java.io.ByteArrayOutputStream
import java.lang.reflect.Modifier
import java.time.Duration
import java.util.Collections
import javax.imageio.ImageIO
import javax.swing.Icon
import kotlin.time.Duration.Companion.seconds

@Service(Service.Level.PROJECT)
class ReactSSRServerForMPSProject(private val project: Project) : Disposable {
Expand All @@ -68,7 +67,7 @@ class ReactSSRServerForMPS : Disposable {
}

private var ssrServer: ReactSSRServer? = null
private var ktorServer: ApplicationEngine? = null
private var ktorServer: EmbeddedServer<*, *>? = null
private var rendererFactory: MPSRendererFactory? = null
private val projects: MutableSet<Project> = Collections.synchronizedSet(HashSet())
private val changeTranslator = MPSChangeTranslator()
Expand Down Expand Up @@ -132,8 +131,8 @@ class ReactSSRServerForMPS : Disposable {

private fun Application.initKtorServer(ssrServer: ReactSSRServer) {
install(WebSockets) {
pingPeriod = Duration.ofSeconds(15)
timeout = Duration.ofSeconds(15)
pingPeriod = 15.seconds
timeout = 15.seconds
maxFrameSize = Long.MAX_VALUE
masking = false
}
Expand Down
Loading