add kotlinx coroutines to coffee app for ij verification
diff --git a/examples/dagger/BUILD b/examples/dagger/BUILD index 50a0ef0..38ea9bf 100644 --- a/examples/dagger/BUILD +++ b/examples/dagger/BUILD
@@ -39,7 +39,10 @@ kt_jvm_library( name = "coffee_lib", srcs = glob(["src/**"]), - deps = [":dagger_lib"], + deps = [ + ":dagger_lib", + "//third_party:kotlinx_coroutines" + ], ) java_binary(
diff --git a/examples/dagger/src/coffee/CoffeeApp.kt b/examples/dagger/src/coffee/CoffeeApp.kt index ad5ae65..5af91b6 100644 --- a/examples/dagger/src/coffee/CoffeeApp.kt +++ b/examples/dagger/src/coffee/CoffeeApp.kt
@@ -16,6 +16,7 @@ package coffee import dagger.Component +import kotlinx.coroutines.experimental.runBlocking import javax.inject.Singleton class CoffeeApp { @@ -29,7 +30,9 @@ @JvmStatic fun main(args: Array<String>) { val coffeeShop = DaggerCoffeeApp_CoffeeShop.builder().build() - coffeeShop.maker().brew() + runBlocking { + coffeeShop.maker().brew() + } } } }
diff --git a/examples/dagger/src/coffee/CoffeeMaker.kt b/examples/dagger/src/coffee/CoffeeMaker.kt index beb1bd8..6ef95a4 100644 --- a/examples/dagger/src/coffee/CoffeeMaker.kt +++ b/examples/dagger/src/coffee/CoffeeMaker.kt
@@ -16,19 +16,23 @@ package coffee import dagger.Lazy - +import kotlinx.coroutines.experimental.DefaultDispatcher +import kotlinx.coroutines.experimental.withContext import javax.inject.Inject class CoffeeMaker @Inject internal constructor( - // Create a possibly costly heater only when we use it. - private val heater: Lazy<Heater>, - private val pump: Pump + // Create a possibly costly heater only when we use it. + private val heater: Lazy<Heater>, + private val pump: Pump ) { - fun brew() { - heater.get().on() - pump.pump() - println(" [_]P coffee! [_]P ") - heater.get().off() + suspend fun brew() { + // this function is async to verify intellij support for coroutines. + withContext(DefaultDispatcher) { + heater.get().on() + pump.pump() + println(" [_]P coffee! [_]P ") + heater.get().off() + } } }
diff --git a/third_party/BUILD b/third_party/BUILD index 2150165..0746542 100644 --- a/third_party/BUILD +++ b/third_party/BUILD
@@ -12,9 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. package(default_visibility = ["//visibility:public"]) +load("//kotlin:kotlin.bzl", "kt_jvm_import") java_binary( name = "bazel_deps", main_class = "com.github.johnynek.bazel_deps.ParseProject", runtime_deps = ["@bazel_deps//jar"], +) + +kt_jvm_import( + name = "kotlinx_coroutines", + jars = [ + "@io_bazel_rules_kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core//jar", + ], ) \ No newline at end of file
diff --git a/third_party/dependencies.yaml b/third_party/dependencies.yaml index ca64699..8132b15 100644 --- a/third_party/dependencies.yaml +++ b/third_party/dependencies.yaml
@@ -5,6 +5,7 @@ - id: "mavencentral" type: "default" url: https://repo.maven.apache.org/maven2/ + resolverType: coursier transitivity: runtime_deps versionConflictPolicy: highest namePrefix: "io_bazel_rules_kotlin_" @@ -44,6 +45,11 @@ modules: ["", "compiler", "producers"] lang: "java" version: "2.9" + org.jetbrains.kotlinx: + kotlinx-coroutines: + modules: ["core"] + lang: "java" + version : "0.23.1" replacements: org.jetbrains.kotlin:
diff --git a/third_party/jvm/org/jetbrains/kotlin/BUILD b/third_party/jvm/org/jetbrains/kotlin/BUILD index ec836d2..8bf2e22 100644 --- a/third_party/jvm/org/jetbrains/kotlin/BUILD +++ b/third_party/jvm/org/jetbrains/kotlin/BUILD
@@ -34,3 +34,15 @@ ) + +java_library( + name = "kotlin_stdlib_common", + exports = [ + "//external:jar/io_bazel_rules_kotlin_org/jetbrains/kotlin/kotlin_stdlib_common" + ], + visibility = [ + "//visibility:public" + ] +) + +
diff --git a/third_party/jvm/org/jetbrains/kotlinx/BUILD b/third_party/jvm/org/jetbrains/kotlinx/BUILD new file mode 100644 index 0000000..8f4846c --- /dev/null +++ b/third_party/jvm/org/jetbrains/kotlinx/BUILD
@@ -0,0 +1,44 @@ +licenses(["notice"]) +java_library( + name = "atomicfu_common", + exports = [ + "//external:jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/atomicfu_common" + ], + visibility = [ + "//visibility:public" + ] +) + + + +java_library( + name = "kotlinx_coroutines_core", + exports = [ + "//external:jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/kotlinx_coroutines_core" + ], + runtime_deps = [ + "//third_party/jvm/org/jetbrains/kotlin:kotlin_stdlib", + ":kotlinx_coroutines_core_common" + ], + visibility = [ + "//visibility:public" + ] +) + + + +java_library( + name = "kotlinx_coroutines_core_common", + exports = [ + "//external:jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/kotlinx_coroutines_core_common" + ], + runtime_deps = [ + "//third_party/jvm/org/jetbrains/kotlin:kotlin_stdlib_common", + ":atomicfu_common" + ], + visibility = [ + "//visibility:public" + ] +) + +
diff --git a/third_party/jvm/workspace.bzl b/third_party/jvm/workspace.bzl index bf5d21a..fdcc1b6 100644 --- a/third_party/jvm/workspace.bzl +++ b/third_party/jvm/workspace.bzl
@@ -43,6 +43,10 @@ {"artifact": "org.checkerframework:checker-compat-qual:2.0.0", "lang": "java", "sha1": "fc89b03860d11d6213d0154a62bcd1c2f69b9efa", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_checkerframework_checker_compat_qual", "actual": "@io_bazel_rules_kotlin_org_checkerframework_checker_compat_qual//jar", "bind": "jar/io_bazel_rules_kotlin_org/checkerframework/checker_compat_qual"}, {"artifact": "org.codehaus.mojo:animal-sniffer-annotations:1.14", "lang": "java", "sha1": "775b7e22fb10026eed3f86e8dc556dfafe35f2d5", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_codehaus_mojo_animal_sniffer_annotations", "actual": "@io_bazel_rules_kotlin_org_codehaus_mojo_animal_sniffer_annotations//jar", "bind": "jar/io_bazel_rules_kotlin_org/codehaus/mojo/animal_sniffer_annotations"}, {"artifact": "org.hamcrest:hamcrest-core:1.3", "lang": "java", "sha1": "42a25dc3219429f0e5d060061f71acb49bf010a0", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_hamcrest_hamcrest_core", "actual": "@io_bazel_rules_kotlin_org_hamcrest_hamcrest_core//jar", "bind": "jar/io_bazel_rules_kotlin_org/hamcrest/hamcrest_core"}, + {"artifact": "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.41", "lang": "java", "sha1": "bf0bdac1048fd1c5c54362978dd7e06bd2230e78", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_jetbrains_kotlin_kotlin_stdlib_common", "actual": "@io_bazel_rules_kotlin_org_jetbrains_kotlin_kotlin_stdlib_common//jar", "bind": "jar/io_bazel_rules_kotlin_org/jetbrains/kotlin/kotlin_stdlib_common"}, + {"artifact": "org.jetbrains.kotlinx:atomicfu-common:0.10.1", "lang": "java", "sha1": "4eb87291dff597f2f5bac4876fae02ef23466a39", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_jetbrains_kotlinx_atomicfu_common", "actual": "@io_bazel_rules_kotlin_org_jetbrains_kotlinx_atomicfu_common//jar", "bind": "jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/atomicfu_common"}, + {"artifact": "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:0.23.1", "lang": "java", "sha1": "ee988a3e0a918579315ce6654f415b47fec39d36", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core_common", "actual": "@io_bazel_rules_kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core_common//jar", "bind": "jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/kotlinx_coroutines_core_common"}, + {"artifact": "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.1", "lang": "java", "sha1": "fb67b623766f0b2d56697f0b8ed14450f285b8ed", "repository": "https://repo.maven.apache.org/maven2/", "name": "io_bazel_rules_kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core", "actual": "@io_bazel_rules_kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core//jar", "bind": "jar/io_bazel_rules_kotlin_org/jetbrains/kotlinx/kotlinx_coroutines_core"}, ] def maven_dependencies(callback = declare_maven):