mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 00:17:11 -07:00
Servers.
This commit is contained in:
parent
e6a2ad98f7
commit
40d9e9ffdd
3 changed files with 127 additions and 76 deletions
|
@ -1,74 +1,74 @@
|
||||||
package com.beust.kobalt.app.remote
|
//package com.beust.kobalt.app.remote
|
||||||
|
//
|
||||||
import com.beust.kobalt.Args
|
//import com.beust.kobalt.Args
|
||||||
import com.beust.kobalt.api.Kobalt
|
//import com.beust.kobalt.api.Kobalt
|
||||||
import com.beust.kobalt.api.Project
|
//import com.beust.kobalt.api.Project
|
||||||
import com.google.gson.Gson
|
//import com.google.gson.Gson
|
||||||
import org.glassfish.jersey.jetty.JettyHttpContainerFactory
|
//import org.glassfish.jersey.jetty.JettyHttpContainerFactory
|
||||||
import org.glassfish.jersey.server.ResourceConfig
|
//import org.glassfish.jersey.server.ResourceConfig
|
||||||
import org.glassfish.jersey.server.ServerProperties
|
//import org.glassfish.jersey.server.ServerProperties
|
||||||
import javax.ws.rs.GET
|
//import javax.ws.rs.GET
|
||||||
import javax.ws.rs.Path
|
//import javax.ws.rs.Path
|
||||||
import javax.ws.rs.Produces
|
//import javax.ws.rs.Produces
|
||||||
import javax.ws.rs.QueryParam
|
//import javax.ws.rs.QueryParam
|
||||||
import javax.ws.rs.core.MediaType
|
//import javax.ws.rs.core.MediaType
|
||||||
import javax.ws.rs.core.UriBuilder
|
//import javax.ws.rs.core.UriBuilder
|
||||||
|
//
|
||||||
class JerseyServer(val initCallback: (String) -> List<Project>, val cleanUpCallback: () -> Unit)
|
//class JerseyServer(val initCallback: (String) -> List<Project>, val cleanUpCallback: () -> Unit)
|
||||||
: KobaltServer .IServer {
|
// : KobaltServer .IServer {
|
||||||
|
//
|
||||||
companion object {
|
// companion object {
|
||||||
lateinit var initCallback: (String) -> List<Project>
|
// lateinit var initCallback: (String) -> List<Project>
|
||||||
lateinit var cleanUpCallback: () -> Unit
|
// lateinit var cleanUpCallback: () -> Unit
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
init {
|
// init {
|
||||||
JerseyServer.initCallback = initCallback
|
// JerseyServer.initCallback = initCallback
|
||||||
JerseyServer.cleanUpCallback = cleanUpCallback
|
// JerseyServer.cleanUpCallback = cleanUpCallback
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
override fun run(port: Int) {
|
// override fun run(port: Int) {
|
||||||
val baseUri = UriBuilder.fromUri("http://localhost/").port(port).build()
|
// val baseUri = UriBuilder.fromUri("http://localhost/").port(port).build()
|
||||||
val config = ResourceConfig(KobaltResource::class.java)
|
// val config = ResourceConfig(KobaltResource::class.java)
|
||||||
with (JettyHttpContainerFactory.createServer(baseUri, config)) {
|
// with (JettyHttpContainerFactory.createServer(baseUri, config)) {
|
||||||
try {
|
// try {
|
||||||
start()
|
// start()
|
||||||
join()
|
// join()
|
||||||
} finally {
|
// } finally {
|
||||||
destroy()
|
// destroy()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
@Path("/v0")
|
//@Path("/v0")
|
||||||
class KobaltResource : ResourceConfig() {
|
//class KobaltResource : ResourceConfig() {
|
||||||
init {
|
// init {
|
||||||
property(ServerProperties.TRACING, "ALL")
|
// property(ServerProperties.TRACING, "ALL")
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@GET
|
// @GET
|
||||||
@Path("ping")
|
// @Path("ping")
|
||||||
@Produces(MediaType.TEXT_PLAIN)
|
// @Produces(MediaType.TEXT_PLAIN)
|
||||||
fun getDependencies() = "pong"
|
// fun getDependencies() = "pong"
|
||||||
|
//
|
||||||
@GET
|
// @GET
|
||||||
@Path("getDependencies")
|
// @Path("getDependencies")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
// @Produces(MediaType.APPLICATION_JSON)
|
||||||
fun getDependencies(@QueryParam("buildFile") buildFile: String) : String {
|
// fun getDependencies(@QueryParam("buildFile") buildFile: String) : String {
|
||||||
try {
|
// try {
|
||||||
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
// val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||||
val args = Kobalt.INJECTOR.getInstance(Args::class.java)
|
// val args = Kobalt.INJECTOR.getInstance(Args::class.java)
|
||||||
|
//
|
||||||
val projects = JerseyServer.initCallback(buildFile)
|
// val projects = JerseyServer.initCallback(buildFile)
|
||||||
val dd = dependencyData.dependenciesDataFor(buildFile, args)
|
// val dd = dependencyData.dependenciesDataFor(buildFile, args)
|
||||||
val result = Gson().toJson(dd)
|
// val result = Gson().toJson(dd)
|
||||||
return result
|
// return result
|
||||||
} catch(ex: Exception) {
|
// } catch(ex: Exception) {
|
||||||
return "Error: " + ex.message
|
// return "Error: " + ex.message
|
||||||
} finally {
|
// } finally {
|
||||||
JerseyServer.cleanUpCallback()
|
// JerseyServer.cleanUpCallback()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
|
@ -30,14 +30,16 @@ class KobaltServer(val force: Boolean, val givenPort: Int? = null,
|
||||||
val port = givenPort ?: ProcessUtil.findAvailablePort(1234)
|
val port = givenPort ?: ProcessUtil.findAvailablePort(1234)
|
||||||
try {
|
try {
|
||||||
if (createServerFile(port, force)) {
|
if (createServerFile(port, force)) {
|
||||||
|
log(1, "KobaltServer listening on port $port")
|
||||||
// OldServer(initCallback, cleanUpCallback).run(port)
|
// OldServer(initCallback, cleanUpCallback).run(port)
|
||||||
JerseyServer(initCallback, cleanUpCallback).run(port)
|
// JerseyServer(initCallback, cleanUpCallback).run(port)
|
||||||
|
SparkServer(initCallback, cleanUpCallback).run(port)
|
||||||
// WasabiServer(initCallback, cleanUpCallback).run(port)
|
// WasabiServer(initCallback, cleanUpCallback).run(port)
|
||||||
}
|
}
|
||||||
} catch(ex: Exception) {
|
} catch(ex: Exception) {
|
||||||
ex.printStackTrace()
|
ex.printStackTrace()
|
||||||
} finally {
|
} finally {
|
||||||
deleteServerFile()
|
// deleteServerFile()
|
||||||
}
|
}
|
||||||
return port
|
return port
|
||||||
}
|
}
|
||||||
|
|
49
src/main/kotlin/com/beust/kobalt/app/remote/SparkServer.kt
Normal file
49
src/main/kotlin/com/beust/kobalt/app/remote/SparkServer.kt
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
package com.beust.kobalt.app.remote
|
||||||
|
|
||||||
|
import com.beust.kobalt.Args
|
||||||
|
import com.beust.kobalt.api.Kobalt
|
||||||
|
import com.beust.kobalt.api.Project
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import spark.Route
|
||||||
|
import spark.Spark
|
||||||
|
|
||||||
|
class SparkServer(val initCallback: (String) -> List<Project>, val cleanUpCallback: () -> Unit)
|
||||||
|
: KobaltServer .IServer {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
lateinit var initCallback: (String) -> List<Project>
|
||||||
|
lateinit var cleanUpCallback: () -> Unit
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
SparkServer.initCallback = initCallback
|
||||||
|
SparkServer.cleanUpCallback = cleanUpCallback
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun run(port: Int) {
|
||||||
|
Spark.port(port)
|
||||||
|
Spark.get("/hello", Route { req, res -> "Hello world" })
|
||||||
|
Spark.get("/v0/getDependencies", { request, response ->
|
||||||
|
val buildFile = request.queryParams("buildFile")
|
||||||
|
if (buildFile != null) {
|
||||||
|
val projects = initCallback(buildFile)
|
||||||
|
val result = try {
|
||||||
|
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||||
|
val args = Kobalt.INJECTOR.getInstance(Args::class.java)
|
||||||
|
|
||||||
|
val dd = dependencyData.dependenciesDataFor(buildFile, args)
|
||||||
|
Gson().toJson(dd)
|
||||||
|
} catch(ex: Exception) {
|
||||||
|
"Error: " + ex.message
|
||||||
|
} finally {
|
||||||
|
cleanUpCallback()
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
|
} else {
|
||||||
|
"error"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue