diff --git a/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/ContractVerificationClientImplementation.java b/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/ContractVerificationClientImplementation.java index 6278b849..32e94c14 100644 --- a/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/ContractVerificationClientImplementation.java +++ b/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/ContractVerificationClientImplementation.java @@ -38,10 +38,12 @@ private record VerifyRequest( private final RestClient restClient; - public ContractVerificationClientImplementation(@NonNull final HieroConfig hieroConfig) { + public ContractVerificationClientImplementation( + @NonNull final HieroConfig hieroConfig, final RestClient.Builder restClientBuilder) { this.hieroConfig = Objects.requireNonNull(hieroConfig, "hieroConfig must not be null"); objectMapper = new ObjectMapper(); - restClient = RestClient.create(); + restClient = + Objects.requireNonNull(restClientBuilder, "restClientBuilder must not be null").build(); } @NonNull diff --git a/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/HieroAutoConfiguration.java b/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/HieroAutoConfiguration.java index e000cfb5..710387f8 100644 --- a/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/HieroAutoConfiguration.java +++ b/hiero-enterprise-spring/src/main/java/org/hiero/spring/implementation/HieroAutoConfiguration.java @@ -38,6 +38,7 @@ import org.hiero.base.verification.ContractVerificationClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -54,6 +55,11 @@ public class HieroAutoConfiguration { private static final Logger log = LoggerFactory.getLogger(HieroAutoConfiguration.class); + private RestClient.Builder restClientBuilder( + final ObjectProvider restClientBuilderProvider) { + return restClientBuilderProvider.getIfAvailable(RestClient::builder); + } + @Bean @ApplicationScope HieroConfig hieroConfig(final HieroProperties properties) { @@ -116,7 +122,9 @@ TopicClient topicClient( name = "mirrorNodeSupported", havingValue = "true", matchIfMissing = true) - MirrorNodeClient mirrorNodeClient(final HieroContext hieroContext) { + MirrorNodeClient mirrorNodeClient( + final HieroContext hieroContext, + final ObjectProvider restClientBuilderProvider) { final String mirrorNodeEndpoint; final List mirrorNetwork = hieroContext.getClient().getMirrorNetwork(); if (mirrorNetwork.isEmpty()) { @@ -148,7 +156,8 @@ MirrorNodeClient mirrorNodeClient(final HieroContext hieroContext) { throw new IllegalArgumentException( "Error parsing mirrorNodeEndpoint '" + mirrorNodeEndpoint + "'", e); } - RestClient.Builder builder = RestClient.builder().baseUrl(baseUri); + RestClient.Builder builder = + restClientBuilder(restClientBuilderProvider).clone().baseUrl(baseUri); return new MirrorNodeClientImpl(builder); } @@ -223,7 +232,10 @@ TopicRepository topicRepository(final MirrorNodeClient mirrorNodeClient) { } @Bean - ContractVerificationClient contractVerificationClient(final HieroConfig hieroConfig) { - return new ContractVerificationClientImplementation(hieroConfig); + ContractVerificationClient contractVerificationClient( + final HieroConfig hieroConfig, + final ObjectProvider restClientBuilderProvider) { + return new ContractVerificationClientImplementation( + hieroConfig, restClientBuilder(restClientBuilderProvider)); } }