From 581d5d3b531c2f1487c01a34b2301e3296508216 Mon Sep 17 00:00:00 2001 From: Jake Son Date: Sun, 12 Nov 2023 18:42:03 +0900 Subject: [PATCH] feat: add introspectors to spring auto configuration --- .../autoconfigure/KotlinJdslAutoConfiguration.kt | 14 +++++++++++--- .../autoconfigure/KotlinJdslAutoConfiguration.kt | 14 +++++++++++--- .../autoconfigure/KotlinJdslAutoConfiguration.kt | 15 +++++++++++---- .../autoconfigure/KotlinJdslAutoConfiguration.kt | 15 +++++++++++---- 4 files changed, 44 insertions(+), 14 deletions(-) diff --git a/support/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/javax/autoconfigure/KotlinJdslAutoConfiguration.kt b/support/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/javax/autoconfigure/KotlinJdslAutoConfiguration.kt index 860dc230d..034f5ecb0 100644 --- a/support/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/javax/autoconfigure/KotlinJdslAutoConfiguration.kt +++ b/support/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/javax/autoconfigure/KotlinJdslAutoConfiguration.kt @@ -3,6 +3,7 @@ package com.linecorp.kotlinjdsl.support.spring.batch.javax.autoconfigure import com.linecorp.kotlinjdsl.render.RenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderModule +import com.linecorp.kotlinjdsl.render.jpql.introspector.JpqlIntrospector import com.linecorp.kotlinjdsl.render.jpql.serializer.JpqlSerializer import com.linecorp.kotlinjdsl.support.spring.batch.javax.item.database.orm.KotlinJdslQueryProviderFactory import org.springframework.boot.autoconfigure.AutoConfiguration @@ -15,14 +16,21 @@ import org.springframework.context.annotation.Bean open class KotlinJdslAutoConfiguration { @Bean @ConditionalOnMissingBean - open fun jpqlRenderContext(serializers: List>): JpqlRenderContext { - val userDefinedSerializers = object : JpqlRenderModule { + open fun jpqlRenderContext( + serializers: List>, + introspectors: List, + ): JpqlRenderContext { + val userDefinedModule = object : JpqlRenderModule { override fun setupModule(context: JpqlRenderModule.SetupContext) { context.addAllSerializer(serializers.reversed()) + + introspectors.reversed().forEach { + context.prependIntrospector(it) + } } } - return JpqlRenderContext().registerModules(userDefinedSerializers) + return JpqlRenderContext().registerModules(userDefinedModule) } @Bean diff --git a/support/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/autoconfigure/KotlinJdslAutoConfiguration.kt b/support/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/autoconfigure/KotlinJdslAutoConfiguration.kt index 7bf20121d..f4ffbf250 100644 --- a/support/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/autoconfigure/KotlinJdslAutoConfiguration.kt +++ b/support/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/batch/autoconfigure/KotlinJdslAutoConfiguration.kt @@ -3,6 +3,7 @@ package com.linecorp.kotlinjdsl.support.spring.batch.autoconfigure import com.linecorp.kotlinjdsl.render.RenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderModule +import com.linecorp.kotlinjdsl.render.jpql.introspector.JpqlIntrospector import com.linecorp.kotlinjdsl.render.jpql.serializer.JpqlSerializer import com.linecorp.kotlinjdsl.support.spring.batch.item.database.orm.KotlinJdslQueryProviderFactory import org.springframework.boot.autoconfigure.AutoConfiguration @@ -15,14 +16,21 @@ import org.springframework.context.annotation.Bean open class KotlinJdslAutoConfiguration { @Bean @ConditionalOnMissingBean - open fun jpqlRenderContext(serializers: List>): JpqlRenderContext { - val userDefinedSerializers = object : JpqlRenderModule { + open fun jpqlRenderContext( + serializers: List>, + introspectors: List, + ): JpqlRenderContext { + val userDefinedModule = object : JpqlRenderModule { override fun setupModule(context: JpqlRenderModule.SetupContext) { context.addAllSerializer(serializers.reversed()) + + introspectors.reversed().forEach { + context.prependIntrospector(it) + } } } - return JpqlRenderContext().registerModules(userDefinedSerializers) + return JpqlRenderContext().registerModules(userDefinedModule) } @Bean diff --git a/support/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/javax/autoconfigure/KotlinJdslAutoConfiguration.kt b/support/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/javax/autoconfigure/KotlinJdslAutoConfiguration.kt index 3840e882d..f3be9466e 100644 --- a/support/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/javax/autoconfigure/KotlinJdslAutoConfiguration.kt +++ b/support/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/javax/autoconfigure/KotlinJdslAutoConfiguration.kt @@ -4,6 +4,7 @@ import com.linecorp.kotlinjdsl.SinceJdsl import com.linecorp.kotlinjdsl.render.RenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderModule +import com.linecorp.kotlinjdsl.render.jpql.introspector.JpqlIntrospector import com.linecorp.kotlinjdsl.render.jpql.serializer.JpqlSerializer import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutorImpl @@ -20,15 +21,21 @@ open class KotlinJdslAutoConfiguration { @Bean @ConditionalOnMissingBean @SinceJdsl("3.0.0") - open fun jpqlRenderContext(serializers: List>): JpqlRenderContext { - val userDefinedSerializers = object : JpqlRenderModule { + open fun jpqlRenderContext( + serializers: List>, + introspectors: List, + ): JpqlRenderContext { + val userDefinedModule = object : JpqlRenderModule { override fun setupModule(context: JpqlRenderModule.SetupContext) { context.addAllSerializer(serializers.reversed()) + + introspectors.reversed().forEach { + context.prependIntrospector(it) + } } } - return JpqlRenderContext() - .registerModules(userDefinedSerializers) + return JpqlRenderContext().registerModules(userDefinedModule) } @Bean diff --git a/support/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/autoconfigure/KotlinJdslAutoConfiguration.kt b/support/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/autoconfigure/KotlinJdslAutoConfiguration.kt index f5454b4cb..35f04720a 100644 --- a/support/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/autoconfigure/KotlinJdslAutoConfiguration.kt +++ b/support/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/support/spring/data/jpa/autoconfigure/KotlinJdslAutoConfiguration.kt @@ -4,6 +4,7 @@ import com.linecorp.kotlinjdsl.SinceJdsl import com.linecorp.kotlinjdsl.render.RenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderModule +import com.linecorp.kotlinjdsl.render.jpql.introspector.JpqlIntrospector import com.linecorp.kotlinjdsl.render.jpql.serializer.JpqlSerializer import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutorImpl @@ -20,15 +21,21 @@ open class KotlinJdslAutoConfiguration { @Bean @ConditionalOnMissingBean @SinceJdsl("3.0.0") - open fun jpqlRenderContext(serializers: List>): JpqlRenderContext { - val userDefinedSerializers = object : JpqlRenderModule { + open fun jpqlRenderContext( + serializers: List>, + introspectors: List, + ): JpqlRenderContext { + val userDefinedModule = object : JpqlRenderModule { override fun setupModule(context: JpqlRenderModule.SetupContext) { context.addAllSerializer(serializers.reversed()) + + introspectors.reversed().forEach { + context.prependIntrospector(it) + } } } - return JpqlRenderContext() - .registerModules(userDefinedSerializers) + return JpqlRenderContext().registerModules(userDefinedModule) } @Bean