Skip to content

Commit 09e750c

Browse files
authored
fix: Support CP condition for context configuration on JRE 8 (#36)
fix - Support conditional on class on jre 8
1 parent 19ba2c0 commit 09e750c

File tree

3 files changed

+47
-52
lines changed

3 files changed

+47
-52
lines changed

kotlin-asyncapi-spring-web/src/main/kotlin/org/openfolder/kotlinasyncapi/springweb/AsyncApiAutoConfiguration.kt

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package org.openfolder.kotlinasyncapi.springweb
22

3+
import org.openfolder.kotlinasyncapi.model.AsyncApi
34
import org.openfolder.kotlinasyncapi.springweb.context.DefaultInfoProvider
5+
import org.openfolder.kotlinasyncapi.springweb.context.DefaultResourceProvider
6+
import org.openfolder.kotlinasyncapi.springweb.context.ResourceProvider
47
import org.openfolder.kotlinasyncapi.springweb.controller.AsyncApiController
58
import org.openfolder.kotlinasyncapi.springweb.service.AsyncApiExtension
69
import org.openfolder.kotlinasyncapi.springweb.service.AsyncApiSerializer
710
import org.openfolder.kotlinasyncapi.springweb.service.AsyncApiService
811
import org.openfolder.kotlinasyncapi.springweb.service.DefaultAsyncApiSerializer
912
import org.openfolder.kotlinasyncapi.springweb.service.DefaultAsyncApiService
1013
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
14+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass
1115
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
16+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
1217
import org.springframework.boot.context.properties.ConfigurationProperties
1318
import org.springframework.context.ApplicationContext
1419
import org.springframework.context.annotation.Bean
1520
import org.springframework.context.annotation.Configuration
1621
import org.springframework.context.annotation.Import
22+
import kotlin.script.experimental.host.toScriptSource
23+
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
1724

1825
@Configuration
1926
@ConditionalOnBean(AsyncApiMarkerConfiguration.Marker::class)
@@ -57,3 +64,43 @@ internal open class AsyncApiAutoConfiguration {
5764
open fun asyncApiController(service: AsyncApiService, serializer: AsyncApiSerializer): AsyncApiController =
5865
AsyncApiController(service, serializer)
5966
}
67+
68+
@Configuration
69+
@ConditionalOnProperty(name = ["asyncapi.script.enabled"], havingValue = "true", matchIfMissing = true)
70+
@Import(AsyncApiEmbeddedScriptAutoConfiguration::class)
71+
internal open class AsyncApiScriptAutoConfiguration {
72+
73+
@Bean
74+
open fun resourceProvider(context: ApplicationContext) =
75+
DefaultResourceProvider(context)
76+
77+
@Bean
78+
open fun asyncApiResourceExtension(resourceProvider: ResourceProvider, asyncApiProperties: AsyncApiProperties) =
79+
resourceProvider.resource(asyncApiProperties.script.resourcePath, AsyncApi::class)?.let {
80+
AsyncApiExtension.from(resource = it)
81+
}
82+
}
83+
84+
@Configuration
85+
@ConditionalOnClass(BasicJvmScriptingHost::class)
86+
internal open class AsyncApiEmbeddedScriptAutoConfiguration {
87+
88+
@Bean
89+
open fun asyncApiScriptExtension(resourceProvider: ResourceProvider, asyncApiProperties: AsyncApiProperties) =
90+
resourceProvider.resource(asyncApiProperties.script.sourcePath)?.let {
91+
AsyncApiExtension.from(
92+
script = it.inputStream.bufferedReader().use { it.readText() }.toScriptSource()
93+
)
94+
}
95+
}
96+
97+
@Configuration
98+
internal open class AsyncApiMarkerConfiguration {
99+
100+
@Bean
101+
open fun asyncApiMarkerBean(): Marker {
102+
return Marker()
103+
}
104+
105+
class Marker
106+
}

kotlin-asyncapi-spring-web/src/main/kotlin/org/openfolder/kotlinasyncapi/springweb/AsyncApiMarkerConfiguration.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

kotlin-asyncapi-spring-web/src/main/kotlin/org/openfolder/kotlinasyncapi/springweb/AsyncApiScriptAutoConfiguration.kt

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)