1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00
This commit is contained in:
Cedric Beust 2016-04-28 05:22:40 -08:00
parent e6a2ad98f7
commit 40d9e9ffdd
3 changed files with 127 additions and 76 deletions

View file

@ -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()
} // }
} // }
} //}

View file

@ -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
} }

View 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"
}
})
}
}