Skip to content

Commit

Permalink
feat: Support customizing baseUrl in CoApiProperties and override. (
Browse files Browse the repository at this point in the history
  • Loading branch information
Ahoo-Wang committed Jun 28, 2024
1 parent 23a039d commit 64cb07d
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ data class CoApiProperties(
const val COAPI_BASE_PACKAGES = "$COAPI_PREFIX.base-packages"
}

override fun getBaseUri(coApiName: String): String {
return clients[coApiName]?.baseUrl.orEmpty()
}

override fun getFilter(coApiName: String): ClientProperties.FilterDefinition {
return clients[coApiName]?.reactive?.filter ?: ClientProperties.FilterDefinition()
}
Expand All @@ -42,6 +46,7 @@ data class CoApiProperties(
}

data class ClientDefinition(
var baseUrl: String = "",
var reactive: ReactiveClientDefinition = ReactiveClientDefinition(),
var sync: SyncClientDefinition = SyncClientDefinition()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,24 @@ class CoApiPropertiesTest {
assertThat(properties.enabled, equalTo(true))
}

@Test
fun getBaseUrl() {
val properties = CoApiProperties()
assertThat(properties.getBaseUri(""), equalTo(""))
}

@Test
fun setBaseUrl() {
val properties = CoApiProperties(
clients = mapOf(
"test" to ClientDefinition(
baseUrl = "test"
)
)
)
assertThat(properties.getBaseUri("test"), equalTo("test"))
}

@Test
fun getBasePackages() {
val properties = CoApiProperties()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ data class CoApiDefinition(
}

private fun CoApi.resolveBaseUrl(environment: Environment): String {
if (baseUrl.isNotBlank()) {
return environment.resolvePlaceholders(baseUrl)
}
if (serviceId.isNotBlank()) {
return LB_SCHEME_PREFIX + serviceId
return LB_SCHEME_PREFIX + environment.resolvePlaceholders(serviceId)
}
return environment.resolvePlaceholders(baseUrl)
return ""
}

private fun Class<*>.resolveClientName(coApi: CoApi): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import org.springframework.web.reactive.function.client.ExchangeFilterFunction

interface ClientProperties {

fun getBaseUri(coApiName: String): String
fun getFilter(coApiName: String): FilterDefinition
fun getInterceptor(coApiName: String): InterceptorDefinition

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@ abstract class AbstractWebClientFactoryBean(private val definition: CoApiDefinit
override fun getObject(): WebClient {
val clientBuilder = appContext
.getBean(WebClient.Builder::class.java)

clientBuilder.baseUrl(definition.baseUrl)
val clientProperties = appContext.getBean(ClientProperties::class.java)
val baseUrl = clientProperties.getBaseUri(definition.name).ifBlank {
definition.baseUrl
}
clientBuilder.baseUrl(baseUrl)

val filterDefinition = clientProperties.getFilter(definition.name)
clientBuilder.filters {
filterDefinition.initFilters(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@ abstract class AbstractRestClientFactoryBean(private val definition: CoApiDefini
override fun getObject(): RestClient {
val clientBuilder = appContext
.getBean(RestClient.Builder::class.java)
clientBuilder.baseUrl(definition.baseUrl)
val clientProperties = appContext.getBean(ClientProperties::class.java)
val baseUrl = clientProperties.getBaseUri(definition.name).ifBlank {
definition.baseUrl
}
clientBuilder.baseUrl(baseUrl)

val interceptorDefinition = clientProperties.getInterceptor(definition.name)
clientBuilder.requestInterceptors {
interceptorDefinition.initInterceptors(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,10 @@ data class MockClientProperties(
val filter: Map<String, ClientProperties.FilterDefinition> = emptyMap(),
val interceptor: Map<String, ClientProperties.InterceptorDefinition> = emptyMap(),
) : ClientProperties {
override fun getBaseUri(coApiName: String): String {
return ""
}

override fun getFilter(coApiName: String): ClientProperties.FilterDefinition {
return filter[coApiName] ?: ClientProperties.FilterDefinition()
}
Expand Down

0 comments on commit 64cb07d

Please sign in to comment.