From 46cdd8e4fafaaa7c5d0cedeea0109add4a724453 Mon Sep 17 00:00:00 2001 From: Vladimir Sitnikov Date: Sat, 22 May 2021 14:55:08 +0300 Subject: [PATCH 1/2] Use -bin Gradle distribution --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 78527c0..7af52a8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ #Thu Sep 12 16:31:13 CDT 2019 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists From 7e18ae21d881c922bd11076e8ab91830334d3978 Mon Sep 17 00:00:00 2001 From: Vladimir Sitnikov Date: Sat, 22 May 2021 15:11:06 +0300 Subject: [PATCH 2/2] Add annotatedWith(KClass) functions --- .../binder/KotlinAnnotatedBindingBuilder.kt | 7 +++++++ .../binder/KotlinAnnotatedElementBuilder.kt | 6 ++++++ .../misfitlabs/kotlinguice4/KotlinBinderSpec.kt | 13 +++++++++++++ .../kotlinguice4/KotlinPrivateBinderSpec.kt | 15 +++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedBindingBuilder.kt b/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedBindingBuilder.kt index 8c788b3..6bb26d2 100644 --- a/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedBindingBuilder.kt +++ b/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedBindingBuilder.kt @@ -18,6 +18,7 @@ package dev.misfitlabs.kotlinguice4.binder import com.google.inject.binder.AnnotatedBindingBuilder +import kotlin.reflect.KClass /** * An extension of [AnnotatedBindingBuilder] that enhances the binding DSL to allow binding using @@ -40,6 +41,12 @@ abstract class KotlinAnnotatedBindingBuilder(private val self: AnnotatedBindi return this } + /** Binds with the annotation specified by the class. */ + fun annotatedWith(annotationClass: KClass): KotlinLinkedBindingBuilder { + delegate.annotatedWith(annotationClass.java) + return this + } + /** Binds with the specified annotation. */ override fun annotatedWith(annotation: Annotation): KotlinLinkedBindingBuilder { delegate.annotatedWith(annotation) diff --git a/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedElementBuilder.kt b/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedElementBuilder.kt index f85bf2b..8e60f81 100644 --- a/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedElementBuilder.kt +++ b/kotlin-guice/src/main/kotlin/dev/misfitlabs/kotlinguice4/binder/KotlinAnnotatedElementBuilder.kt @@ -18,6 +18,7 @@ package dev.misfitlabs.kotlinguice4.binder import com.google.inject.binder.AnnotatedElementBuilder +import kotlin.reflect.KClass /** * An extension of [AnnotatedElementBuilder] that enhances the binding DSL to allow binding using @@ -34,4 +35,9 @@ class KotlinAnnotatedElementBuilder(val delegate: AnnotatedElementBuilder) : inline fun annotatedWith() { delegate.annotatedWith(TAnn::class.java) } + + /** Binds with the annotation specified by the class. */ + fun annotatedWith(annotation: KClass) { + delegate.annotatedWith(annotation.java) + } } diff --git a/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinBinderSpec.kt b/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinBinderSpec.kt index e0fa112..c121934 100644 --- a/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinBinderSpec.kt +++ b/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinBinderSpec.kt @@ -119,6 +119,19 @@ object KotlinBinderSpec : Spek({ a.get() shouldEqual "Impl of A" } + it("binds with an annotation using a type argument") { + val injector = Guice.createInjector(object : KotlinModule() { + override fun configure() { + kotlinBinder.bind().to() + kotlinBinder.bind().annotatedWith(Annotated::class).to() + } + }) + + val a = injector.getInstance(Key.get(A::class.java, Annotated::class.java)) + + a.get() shouldEqual "Impl of A" + } + it("binds to a provider using a type parameter") { val injector = Guice.createInjector(object : KotlinModule() { override fun configure() { diff --git a/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinPrivateBinderSpec.kt b/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinPrivateBinderSpec.kt index cb142a7..33c4c08 100644 --- a/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinPrivateBinderSpec.kt +++ b/kotlin-guice/src/test/kotlin/dev/misfitlabs/kotlinguice4/KotlinPrivateBinderSpec.kt @@ -227,6 +227,21 @@ object KotlinPrivateBinderSpec : Spek({ a.get() shouldEqual "Impl of A" } + it("binds with an annotation using a class") { + val injector = Guice.createInjector(object : KotlinPrivateModule() { + override fun configure() { + kotlinBinder.bind().to() + kotlinBinder.bind().annotatedWith(Annotated::class).to() + + kotlinBinder.expose().annotatedWith(Annotated::class) + } + }) + + val a = injector.getInstance(annotatedKey()) + + a.get() shouldEqual "Impl of A" + } + it("binds to a provider using a type parameter") { val injector = Guice.createInjector(object : KotlinPrivateModule() { override fun configure() {