mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 00:17:11 -07:00
Jersey work.
This commit is contained in:
parent
85db1c767e
commit
8b9f2d9655
7 changed files with 196 additions and 67 deletions
54
.idea/libraries/kobalt__Compile_.xml
generated
54
.idea/libraries/kobalt__Compile_.xml
generated
|
@ -1,25 +1,57 @@
|
|||
<component name="libraryTable">
|
||||
<library name="kobalt (Compile)">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.2/jersey-entity-filtering-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/media/jersey-media-moxy/2.22.2/jersey-media-moxy-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/inject/extensions/guice-assistedinject/4.0/guice-assistedinject-4.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/retrofit2/retrofit/2.0.0/retrofit-2.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/hk2-api/2.4.0-b34/hk2-api-2.4.0-b34.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b34/aopalliance-repackaged-2.4.0-b34.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/osgi/org.osgi.core/4.3.1/org.osgi.core-4.3.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-security/8.1.19.v20160209/jetty-security-8.1.19.v20160209.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/core/jersey-server/2.22.2/jersey-server-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/hk2-utils/2.4.0-b34/hk2-utils-2.4.0-b34.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/containers/jersey-container-jetty-http/2.22.2/jersey-container-jetty-http-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/osgi-resource-locator/1.0.1/osgi-resource-locator-1.0.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-servlet/8.1.19.v20160209/jetty-servlet-8.1.19.v20160209.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/okhttp3/okhttp/3.2.0/okhttp-3.2.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/maven-model/3.3.9/maven-model-3.3.9.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/github/spullara/mustache/java/compiler/0.9.1/compiler-0.9.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/osgi/org.osgi.core/4.3.1/org.osgi.core-4.3.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.0.0/kotlin-compiler-embeddable-1.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/retrofit2/converter-gson/2.0.0/converter-gson-2.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.22.2/jersey-container-servlet-core-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/inject/guice/4.0/guice-4.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/biz/aQute/bnd/bndlib/2.4.0/bndlib-2.4.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-continuation/9.1.1.v20140108/jetty-continuation-9.1.1.v20140108.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-server/9.1.1.v20140108/jetty-server-9.1.1.v20140108.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-io/9.1.1.v20140108/jetty-io-9.1.1.v20140108.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/media/jersey-media-jaxb/2.22.2/jersey-media-jaxb-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/core/jersey-common/2.22.2/jersey-common-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/github/spullara/mustache/java/compiler/0.9.1/compiler-0.9.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/core/jersey-client/2.22.2/jersey-client-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/retrofit2/retrofit/2.0.0/retrofit-2.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/external/javax.inject/2.4.0-b34/javax.inject-2.4.0-b34.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/persistence/org.eclipse.persistence.core/2.6.0/org.eclipse.persistence.core-2.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-http/9.1.1.v20140108/jetty-http-9.1.1.v20140108.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/jetty/jetty-util/9.1.1.v20140108/jetty-util-9.1.1.v20140108.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.2/jersey-guava-2.22.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.0.0/kotlin-compiler-embeddable-1.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/retrofit2/converter-gson/2.0.0/converter-gson-2.0.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/persistence/org.eclipse.persistence.moxy/2.6.0/org.eclipse.persistence.moxy-2.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/persistence/org.eclipse.persistence.asm/2.6.0/org.eclipse.persistence.asm-2.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/glassfish/hk2/hk2-locator/2.4.0-b34/hk2-locator-2.4.0-b34.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
|
4
.idea/libraries/kobalt__Test_.xml
generated
4
.idea/libraries/kobalt__Test_.xml
generated
|
@ -1,7 +1,9 @@
|
|||
<component name="libraryTable">
|
||||
<library name="kobalt (Test)">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/java/testng/kobaltBuild/libs/testng-6.9.11-SNAPSHOT.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/testng/testng/6.9.10/testng-6.9.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
|
8
.idea/libraries/kobalt_plugin_api__Compile_.xml
generated
8
.idea/libraries/kobalt_plugin_api__Compile_.xml
generated
|
@ -5,26 +5,26 @@
|
|||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/inject/extensions/guice-assistedinject/4.0/guice-assistedinject-4.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/sisu/sisu-inject-plexus/2.2.3/sisu-inject-plexus-2.2.3.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/aether/aether-impl/1.1.0/aether-impl-1.1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/aether/aether-util/1.13.1/aether-util-1.13.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/aether/aether-transport-http/1.1.0/aether-transport-http-1.1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/slf4j/slf4j-nop/1.6.0/slf4j-nop-1.6.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/aether/aether-connector-wagon/1.13.1/aether-connector-wagon-1.13.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/squareup/okhttp3/okhttp/3.2.0/okhttp-3.2.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/eclipse/aether/aether-spi/1.1.0/aether-spi-1.1.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/maven-model/3.3.9/maven-model-3.3.9.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/maven-model-builder/3.3.9/maven-model-builder-3.3.9.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/aether/aether-api/1.13.1/aether-api-1.13.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/io/reactivex/rxjava/1.0.16/rxjava-1.0.16.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/maven-aether-provider/3.3.9/maven-aether-provider-3.3.9.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/sisu/sisu-inject-bean/2.2.3/sisu-inject-bean-2.2.3.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/guava/guava/19.0-rc2/guava-19.0-rc2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/codehaus/plexus/plexus-component-annotations/1.6/plexus-component-annotations-1.6.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/guava/guava/19.0-rc2/guava-19.0-rc2.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/google/inject/guice/4.0/guice-4.0.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/sonatype/sisu/sisu-guice/3.0.3/sisu-guice-3.0.3.jar!/" />
|
||||
|
|
|
@ -1,14 +1,18 @@
|
|||
import com.beust.kobalt.*
|
||||
|
||||
import com.beust.kobalt.TaskResult
|
||||
import com.beust.kobalt.api.License
|
||||
import com.beust.kobalt.api.Project
|
||||
import com.beust.kobalt.api.Scm
|
||||
import com.beust.kobalt.api.annotation.Task
|
||||
import com.beust.kobalt.homeDir
|
||||
import com.beust.kobalt.plugin.application.application
|
||||
import com.beust.kobalt.plugin.java.javaCompiler
|
||||
import com.beust.kobalt.plugin.kotlin.kotlinCompiler
|
||||
import com.beust.kobalt.plugin.packaging.assemble
|
||||
import com.beust.kobalt.plugin.publish.bintray
|
||||
import com.beust.kobalt.plugin.publish.github
|
||||
import com.beust.kobalt.project
|
||||
import com.beust.kobalt.test
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
|
@ -22,6 +26,8 @@ object Versions {
|
|||
val aether = "1.1.0"
|
||||
val sonatypeAether = "1.13.1"
|
||||
val maven = "3.3.9"
|
||||
val jersey = "2.22.2"
|
||||
val jetty = "8.1.19.v20160209" // "9.3.9.M1"
|
||||
}
|
||||
|
||||
val wrapper = project {
|
||||
|
@ -57,7 +63,7 @@ val kobaltPluginApi = project {
|
|||
directory = "modules/kobalt-plugin-api"
|
||||
description = "A build system in Kotlin"
|
||||
url = "http://beust.com/kobalt"
|
||||
licenses = arrayListOf(License("Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0"))
|
||||
licenses = listOf(License("Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0"))
|
||||
scm = Scm(url = "http://github.com/cbeust/kobalt",
|
||||
connection = "https://github.com/cbeust/kobalt.git",
|
||||
developerConnection = "git@github.com:cbeust/kobalt.git")
|
||||
|
@ -135,7 +141,14 @@ val kobaltApp = project(kobaltPluginApi, wrapper) {
|
|||
"com.squareup.retrofit2:retrofit:${Versions.retrofit}",
|
||||
"com.squareup.retrofit2:converter-gson:${Versions.retrofit}",
|
||||
"org.codehaus.plexus:plexus-utils:3.0.22",
|
||||
"biz.aQute.bnd:bndlib:2.4.0"
|
||||
"biz.aQute.bnd:bndlib:2.4.0",
|
||||
"org.eclipse.jetty:jetty-server:${Versions.jetty}",
|
||||
"org.eclipse.jetty:jetty-servlet:${Versions.jetty}",
|
||||
"org.glassfish.jersey.core:jersey-server:${Versions.jersey}",
|
||||
"org.glassfish.jersey.containers:jersey-container-servlet-core:${Versions.jersey}",
|
||||
"org.glassfish.jersey.containers:jersey-container-jetty-http:${Versions.jersey}",
|
||||
"org.glassfish.jersey.media:jersey-media-moxy:${Versions.jersey}"
|
||||
// "org.eclipse.jetty.aggregate:jetty-all::uber:9.3.9.M1"
|
||||
)
|
||||
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ enum class SourceSet(val outputDir: String) {
|
|||
|
||||
companion object {
|
||||
fun of(isTest: Boolean) = if (isTest) TEST else MAIN
|
||||
private fun unknown(sourceSet: SourceSet) = throw KobaltException("Unknown source set: $sourceSet")
|
||||
private fun unknown(sourceSet: SourceSet) : Nothing = throw KobaltException("Unknown source set: $sourceSet")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,24 +9,83 @@ import com.beust.kobalt.internal.KobaltSettings
|
|||
import com.beust.kobalt.misc.KFiles
|
||||
import com.beust.kobalt.misc.log
|
||||
import com.beust.kobalt.misc.warn
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonParser
|
||||
import com.google.inject.Guice
|
||||
import okhttp3.OkHttpClient
|
||||
import retrofit2.Call
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Query
|
||||
import java.io.*
|
||||
import java.net.ConnectException
|
||||
import java.net.Socket
|
||||
import java.nio.file.Paths
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
import javax.inject.Inject
|
||||
|
||||
fun main(argv: Array<String>) {
|
||||
Kobalt.INJECTOR = Guice.createInjector(MainModule(Args(), KobaltSettings.readSettingsXml()))
|
||||
val port = ServerProcess().launch()
|
||||
println("SERVER RUNNING ON PORT $port")
|
||||
KobaltClient().run()
|
||||
}
|
||||
|
||||
interface Api {
|
||||
@POST("/getDependencies")
|
||||
fun getDependencies(@Query("buildFile") buildFile: String) : Call<List<DependencyData.GetDependenciesData>>
|
||||
}
|
||||
|
||||
class KobaltClient : Runnable {
|
||||
var outgoing: PrintWriter? = null
|
||||
|
||||
private val service = Retrofit.Builder()
|
||||
.client(OkHttpClient.Builder().build())
|
||||
.baseUrl("http://localhost:1252")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
.create(Api::class.java)
|
||||
|
||||
override fun run() {
|
||||
val buildFile = Paths.get(SystemProperties.homeDir, "kotlin/klaxon/kobalt/src/Build.kt").toString()
|
||||
val dependencies = service.getDependencies(buildFile)
|
||||
val results = dependencies.execute()
|
||||
println("Dependencies: $results")
|
||||
// .toString())
|
||||
// var done = false
|
||||
// var attempts = 1
|
||||
// while (attempts < 10 && ! done) {
|
||||
// try {
|
||||
// val socket = Socket("localhost", portNumber)
|
||||
// outgoing = PrintWriter(socket.outputStream, true)
|
||||
// val testBuildfile = Paths.get(SystemProperties.homeDir, "kotlin/klaxon/kobalt/src/Build.kt")
|
||||
// .toFile().absolutePath
|
||||
// val c : String = """{ "name": "getDependencies", "buildFile": "$testBuildfile"}"""
|
||||
// outgoing!!.println(c)
|
||||
// val ins = BufferedReader(InputStreamReader(socket.inputStream))
|
||||
// var line = ins.readLine()
|
||||
// while (! done && line != null) {
|
||||
// log(1, "Received from server:\n" + line)
|
||||
// val jo = JsonParser().parse(line) as JsonObject
|
||||
// if (jo.has("name") && "quit" == jo.get("name").asString.toLowerCase()) {
|
||||
// log(1, "Quitting")
|
||||
//// outgoing!!.println("{ \"name\": \"Quit\" }")
|
||||
// done = true
|
||||
// } else {
|
||||
// val data = jo.get("data").asString
|
||||
// val dd = Gson().fromJson(data, DependencyData.GetDependenciesData::class.java)
|
||||
// println("Read GetDependencyData, project count: ${dd.projects.size}")
|
||||
// line = ins.readLine()
|
||||
// }
|
||||
// }
|
||||
// } catch(ex: ConnectException) {
|
||||
// log(1, "Server not up, sleeping a bit")
|
||||
// Thread.sleep(2000)
|
||||
// attempts++
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class ServerProcess {
|
||||
val SERVER_FILE = KFiles.joinDir(homeDir(KFiles.KOBALT_DOT_DIR, "kobaltServer.properties"))
|
||||
val KEY_PORT = "port"
|
||||
|
@ -123,43 +182,3 @@ class ServerProcess {
|
|||
}
|
||||
}
|
||||
|
||||
class KobaltClient @Inject constructor() : Runnable {
|
||||
var outgoing: PrintWriter? = null
|
||||
|
||||
override fun run() {
|
||||
val portNumber = 1234
|
||||
|
||||
var done = false
|
||||
var attempts = 1
|
||||
while (attempts < 10 && ! done) {
|
||||
try {
|
||||
val socket = Socket("localhost", portNumber)
|
||||
outgoing = PrintWriter(socket.outputStream, true)
|
||||
val testBuildfile = Paths.get(SystemProperties.homeDir, "kotlin/klaxon/kobalt/src/Build.kt")
|
||||
.toFile().absolutePath
|
||||
val c : String = """{ "name": "getDependencies", "buildFile": "$testBuildfile"}"""
|
||||
outgoing!!.println(c)
|
||||
val ins = BufferedReader(InputStreamReader(socket.inputStream))
|
||||
var line = ins.readLine()
|
||||
while (! done && line != null) {
|
||||
log(1, "Received from server:\n" + line)
|
||||
val jo = JsonParser().parse(line) as JsonObject
|
||||
if (jo.has("name") && "quit" == jo.get("name").asString.toLowerCase()) {
|
||||
log(1, "Quitting")
|
||||
// outgoing!!.println("{ \"name\": \"Quit\" }")
|
||||
done = true
|
||||
} else {
|
||||
val data = jo.get("data").asString
|
||||
val dd = Gson().fromJson(data, DependencyData.GetDependenciesData::class.java)
|
||||
println("Read GetDependencyData, project count: ${dd.projects.size}")
|
||||
line = ins.readLine()
|
||||
}
|
||||
}
|
||||
} catch(ex: ConnectException) {
|
||||
log(1, "Server not up, sleeping a bit")
|
||||
Thread.sleep(2000)
|
||||
attempts++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
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.beust.kobalt.homeDir
|
||||
|
@ -11,12 +12,21 @@ import com.beust.kobalt.misc.log
|
|||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonParser
|
||||
import org.glassfish.jersey.jetty.JettyHttpContainerFactory
|
||||
import org.glassfish.jersey.server.ResourceConfig
|
||||
import org.glassfish.jersey.server.ServerProperties
|
||||
import java.io.*
|
||||
import java.lang.management.ManagementFactory
|
||||
import java.net.ServerSocket
|
||||
import java.net.SocketException
|
||||
import java.util.*
|
||||
import java.util.concurrent.Callable
|
||||
import javax.ws.rs.GET
|
||||
import javax.ws.rs.Path
|
||||
import javax.ws.rs.Produces
|
||||
import javax.ws.rs.QueryParam
|
||||
import javax.ws.rs.core.MediaType
|
||||
import javax.ws.rs.core.UriBuilder
|
||||
|
||||
/**
|
||||
* Launch a Kobalt server. If @param{force} is specified, a new server will be launched even if one was detected
|
||||
|
@ -31,6 +41,16 @@ class KobaltServer(val force: Boolean, val port: Int = 1234,
|
|||
// var outgoing: PrintWriter? = null
|
||||
val pending = arrayListOf<CommandData>()
|
||||
|
||||
companion object {
|
||||
lateinit var initCallback: (String) -> List<Project>
|
||||
lateinit var cleanUpCallback: () -> Unit
|
||||
}
|
||||
|
||||
init {
|
||||
KobaltServer.initCallback = initCallback
|
||||
KobaltServer.cleanUpCallback = cleanUpCallback
|
||||
}
|
||||
|
||||
private val COMMAND_CLASSES = listOf(GetDependenciesCommand::class.java, PingCommand::class.java)
|
||||
private val COMMANDS = COMMAND_CLASSES.map {
|
||||
Kobalt.INJECTOR.getInstance(it).let { Pair(it.name, it) }
|
||||
|
@ -39,8 +59,9 @@ class KobaltServer(val force: Boolean, val port: Int = 1234,
|
|||
override fun call() : Int {
|
||||
val availablePort = ProcessUtil.findAvailablePort(port)
|
||||
try {
|
||||
if (createServerFile(availablePort, force)) {
|
||||
privateRun(availablePort)
|
||||
if (createServerFile(port, force)) {
|
||||
// oldRun(port)
|
||||
privateRun(port)
|
||||
}
|
||||
} catch(ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
|
@ -97,8 +118,50 @@ class KobaltServer(val force: Boolean, val port: Int = 1234,
|
|||
}
|
||||
}
|
||||
|
||||
@Path("/v0")
|
||||
class MyResource : ResourceConfig() {
|
||||
init {
|
||||
property(ServerProperties.TRACING, "ALL")
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("getDependencies")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
fun getDependencies(@QueryParam("buildFile") buildFile: String) : String {
|
||||
try {
|
||||
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||
val args = Kobalt.INJECTOR.getInstance(Args::class.java)
|
||||
|
||||
val projects = initCallback(buildFile)
|
||||
val dd = dependencyData.dependenciesDataFor(buildFile, args)
|
||||
val data = CommandData("getDependencies", Gson().toJson(dd), dd.errorMessage)
|
||||
|
||||
return Gson().toJson(data)
|
||||
} catch(ex: Exception) {
|
||||
return "Error: " + ex.message
|
||||
} finally {
|
||||
cleanUpCallback()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun privateRun(port: Int) {
|
||||
log(1, "Listening to port $port")
|
||||
|
||||
val baseUri = UriBuilder.fromUri("http://localhost/").port(port).build()
|
||||
val config = ResourceConfig(MyResource::class.java)
|
||||
with (JettyHttpContainerFactory.createServer(baseUri, config)) {
|
||||
try {
|
||||
start()
|
||||
join()
|
||||
} finally {
|
||||
destroy()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun oldRun(port: Int) {
|
||||
log(1, "Listening to port $port")
|
||||
var quit = false
|
||||
serverInfo = ServerInfo(port)
|
||||
while (!quit) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue