diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/ConditionalOnIntegrationEnabled.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/ConditionalOnIntegrationEnabled.kt new file mode 100644 index 0000000..6f50425 --- /dev/null +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/ConditionalOnIntegrationEnabled.kt @@ -0,0 +1,15 @@ +package uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty +import org.springframework.core.annotation.AliasFor + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +@MustBeDocumented +@ConditionalOnProperty("api.integration.enabled") +annotation class ConditionalOnIntegrationEnabled( + @get:AliasFor( + annotation = ConditionalOnProperty::class, + attribute = "havingValue", + ) val value: String = "true", +) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/IntegrationConfiguration.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/IntegrationConfiguration.kt index 9f80966..bb5f5a9 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/IntegrationConfiguration.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/IntegrationConfiguration.kt @@ -2,7 +2,6 @@ package uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.beans.factory.annotation.Qualifier -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.application.EmployerCreationMessageService @@ -13,7 +12,7 @@ import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.domain.Integr import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.infrastructure.IntegrationMessageListener @Configuration -@ConditionalOnProperty("api.integration.enabled", havingValue = "true") +@ConditionalOnIntegrationEnabled class IntegrationConfiguration { @Bean @Qualifier("integrationServiceMap") diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/WebClientConfiguration.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/WebClientConfiguration.kt index 4fe54f0..4d0af64 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/WebClientConfiguration.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/config/WebClientConfiguration.kt @@ -31,6 +31,7 @@ class WebClientConfiguration( fun exampleApiWebClient(authorizedClientManager: OAuth2AuthorizedClientManager, builder: WebClient.Builder): WebClient = builder.authorisedWebClient(authorizedClientManager, registrationId = "example-api", url = exampleApiBaseUri, timeout) + @ConditionalOnIntegrationEnabled @Bean("jobsBoardWebClient") fun jobsBoardApiWebClient(authorizedClientManager: OAuth2AuthorizedClientManager, builder: WebClient.Builder): WebClient = builder.authorisedWebClient(authorizedClientManager, registrationId = "hmpps-jobs-board-api", url = jobsboardApiBaseUri, timeout) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRegistrar.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRegistrar.kt index 2b6e7db..adcb403 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRegistrar.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRegistrar.kt @@ -1,8 +1,10 @@ package uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.application import org.springframework.stereotype.Service +import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config.ConditionalOnIntegrationEnabled import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.domain.Employer +@ConditionalOnIntegrationEnabled @Service class EmployerRegistrar { fun registerCreation(employer: Employer) { diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRetriever.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRetriever.kt index 9b0f7dd..fe5da4b 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRetriever.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerRetriever.kt @@ -1,8 +1,10 @@ package uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.application import org.springframework.stereotype.Service +import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config.ConditionalOnIntegrationEnabled import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.domain.Employer +@ConditionalOnIntegrationEnabled @Service class EmployerRetriever( private val employerService: EmployerService, diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerService.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerService.kt index fedb244..14095a3 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerService.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/employers/application/EmployerService.kt @@ -1,9 +1,11 @@ package uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.application import org.springframework.stereotype.Service +import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config.ConditionalOnIntegrationEnabled import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.domain.Employer import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.domain.JobsBoardApiClient +@ConditionalOnIntegrationEnabled @Service class EmployerService( private val jobsBoardApiClient: JobsBoardApiClient, diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/application/IntegrationMessageServiceFacade.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/application/IntegrationMessageServiceFacade.kt index 8fe02bb..ddbe491 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/application/IntegrationMessageServiceFacade.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/application/IntegrationMessageServiceFacade.kt @@ -4,10 +4,12 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Qualifier import org.springframework.stereotype.Service +import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config.ConditionalOnIntegrationEnabled import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.domain.IntegrationEvent import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.domain.IntegrationMessageService import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.infrastructure.MessageAttributes +@ConditionalOnIntegrationEnabled @Service @Qualifier("integrationMessageService") class IntegrationMessageServiceFacade( diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/infrastructure/JobsBoardApiWebClient.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/infrastructure/JobsBoardApiWebClient.kt index f3420b1..c0b466b 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/infrastructure/JobsBoardApiWebClient.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/jobsboardintegrationapi/shared/infrastructure/JobsBoardApiWebClient.kt @@ -8,10 +8,12 @@ import org.springframework.stereotype.Service import org.springframework.web.reactive.function.client.WebClient import org.springframework.web.reactive.function.client.WebClientResponseException import reactor.core.publisher.Mono +import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.config.ConditionalOnIntegrationEnabled import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.employers.domain.Employer import uk.gov.justice.digital.hmpps.jobsboardintegrationapi.shared.domain.JobsBoardApiClient import java.time.Instant +@ConditionalOnIntegrationEnabled @Service class JobsBoardApiWebClient( @Qualifier("jobsBoardWebClient") private val jobsBoardWebClient: WebClient,