From ffe716b64b8ec7fe00a9f0ca331369e02e13c1a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20D=C3=BCmont?= Date: Wed, 26 Nov 2025 10:08:35 +0100 Subject: [PATCH] Initial --- .../connectivity/DestinationService.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java index 840869d5e..e21fd1ceb 100644 --- a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java +++ b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java @@ -919,6 +919,8 @@ public static final class Builder @Nullable private TimeLimiterConfiguration timeLimiterConfiguration = null; @Nullable + private CircuitBreakerConfiguration circuitBreakerConfiguration = null; + @Nullable private String providerTenantId; /** @@ -938,6 +940,23 @@ public Builder withTimeLimiterConfiguration( @Nonnull final TimeLimiterConfigura return this; } + /** + * Create instance applying the given circuit breaker when retrieving destinations. + * + * @param circuitBreakerConfiguration + * The circuit-breaker configuration to be applied for the request. Use + * {@code TimeLimiterConfiguration.disabled()} to diable the circuit-breaker. + * @return The builder itself. + * @since 5.25.0 + */ + @Nonnull + public Builder withCircuitBreakerConfiguration( + @Nonnull final CircuitBreakerConfiguration circuitBreakerConfiguration ) + { + this.circuitBreakerConfiguration = circuitBreakerConfiguration; + return this; + } + @Nonnull Builder withProviderTenant( @Nonnull final Tenant providerTenant ) { @@ -956,10 +975,12 @@ public DestinationService build() { final TimeLimiterConfiguration timeLimiter = timeLimiterConfiguration != null ? timeLimiterConfiguration : DEFAULT_TIME_LIMITER; + final CircuitBreakerConfiguration circuitBreaker = + circuitBreakerConfiguration != null ? circuitBreakerConfiguration : DEFAULT_SINGLE_DEST_CIRCUIT_BREAKER; return new DestinationService( new DestinationServiceAdapter(null, null, providerTenantId), - createResilienceConfiguration("singleDestResilience", timeLimiter, DEFAULT_SINGLE_DEST_CIRCUIT_BREAKER), - createResilienceConfiguration("allDestResilience", timeLimiter, DEFAULT_ALL_DEST_CIRCUIT_BREAKER)); + createResilienceConfiguration("singleDestResilience", timeLimiter, circuitBreaker), + createResilienceConfiguration("allDestResilience", timeLimiter, circuitBreaker)); } } }