diff --git a/src/main/java/dev/vality/disputes/schedule/client/RemoteClient.java b/src/main/java/dev/vality/disputes/schedule/client/RemoteClient.java index a858cec..52b3eb9 100644 --- a/src/main/java/dev/vality/disputes/schedule/client/RemoteClient.java +++ b/src/main/java/dev/vality/disputes/schedule/client/RemoteClient.java @@ -9,6 +9,7 @@ import dev.vality.disputes.schedule.converter.DisputeParamsConverter; import dev.vality.disputes.schedule.model.ProviderData; import dev.vality.disputes.schedule.service.ProviderIfaceBuilder; +import dev.vality.disputes.schedule.service.ProviderRouting; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -22,6 +23,7 @@ @SuppressWarnings({"ParameterName", "LineLength"}) public class RemoteClient { + private final ProviderRouting providerRouting; private final ProviderIfaceBuilder providerIfaceBuilder; private final DisputeParamsConverter disputeParamsConverter; private final DisputeContextConverter disputeContextConverter; @@ -30,8 +32,9 @@ public class RemoteClient { public DisputeCreatedResult createDispute(Dispute dispute, List attachments, ProviderData providerData) { log.debug("Trying to build disputeParams {}", dispute.getId()); var disputeParams = disputeParamsConverter.convert(dispute, attachments, providerData.getOptions()); + providerRouting.initRouteUrl(providerData); log.debug("Trying to call ProviderIfaceBuilder {}", dispute.getId()); - var remoteClient = providerIfaceBuilder.buildTHSpawnClient(providerData); + var remoteClient = providerIfaceBuilder.buildTHSpawnClient(providerData.getRouteUrl()); log.debug("Trying to routed remote provider's createDispute() call {}", dispute.getId()); var result = remoteClient.createDispute(disputeParams); log.info("Routed remote provider's createDispute() has been called {} {}", dispute.getId(), result); @@ -42,8 +45,9 @@ public DisputeCreatedResult createDispute(Dispute dispute, List atta public DisputeStatusResult checkDisputeStatus(Dispute dispute, ProviderDispute providerDispute, ProviderData providerData) { log.debug("Trying to build disputeContext {}", dispute.getId()); var disputeContext = disputeContextConverter.convert(dispute, providerDispute, providerData.getOptions()); + providerRouting.initRouteUrl(providerData); log.debug("Trying to call ProviderIfaceBuilder {}", dispute.getId()); - var remoteClient = providerIfaceBuilder.buildTHSpawnClient(providerData); + var remoteClient = providerIfaceBuilder.buildTHSpawnClient(providerData.getRouteUrl()); log.debug("Trying to routed remote provider's checkDisputeStatus() call {}", dispute.getId()); var result = remoteClient.checkDisputeStatus(disputeContext); log.info("Routed remote provider's checkDisputeStatus() has been called {} {}", dispute.getId(), result); diff --git a/src/main/java/dev/vality/disputes/schedule/service/ExternalGatewayChecker.java b/src/main/java/dev/vality/disputes/schedule/service/ExternalGatewayChecker.java index ad640b2..ee0c8d0 100644 --- a/src/main/java/dev/vality/disputes/schedule/service/ExternalGatewayChecker.java +++ b/src/main/java/dev/vality/disputes/schedule/service/ExternalGatewayChecker.java @@ -45,9 +45,9 @@ private Boolean isProvidersDisputesApiNotFound(ProviderData providerData) { } private String getRouteUrl(ProviderData providerData) { - var routeUrl = providerRouting.getRouteUrl(providerData); - log.debug("Check adapter connection, routeUrl={}", routeUrl); - return routeUrl; + providerRouting.initRouteUrl(providerData); + log.debug("Check adapter connection, routeUrl={}", providerData.getRouteUrl()); + return providerData.getRouteUrl(); } private HttpClientResponseHandler isNotFoundResponse() { diff --git a/src/main/java/dev/vality/disputes/schedule/service/ProviderIfaceBuilder.java b/src/main/java/dev/vality/disputes/schedule/service/ProviderIfaceBuilder.java index c101e5f..2b59b84 100644 --- a/src/main/java/dev/vality/disputes/schedule/service/ProviderIfaceBuilder.java +++ b/src/main/java/dev/vality/disputes/schedule/service/ProviderIfaceBuilder.java @@ -2,7 +2,6 @@ import dev.vality.disputes.config.properties.AdaptersConnectionProperties; import dev.vality.disputes.provider.ProviderDisputesServiceSrv; -import dev.vality.disputes.schedule.model.ProviderData; import dev.vality.woody.thrift.impl.http.THSpawnClientBuilder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,14 +17,11 @@ @SuppressWarnings({"AbbreviationAsWordInName", "LineLength"}) public class ProviderIfaceBuilder { - private final ProviderRouting providerRouting; private final AdaptersConnectionProperties adaptersConnectionProperties; - @Cacheable(value = "adapters", key = "#providerData.defaultProviderUrl", cacheManager = "adaptersCacheManager") - public ProviderDisputesServiceSrv.Iface buildTHSpawnClient(ProviderData providerData) { - var routeUrl = providerRouting.getRouteUrl(providerData); + @Cacheable(value = "adapters", key = "#root.args[0]", cacheManager = "adaptersCacheManager") + public ProviderDisputesServiceSrv.Iface buildTHSpawnClient(String routeUrl) { log.info("Creating new client for url: {}", routeUrl); - providerData.setRouteUrl(routeUrl); return new THSpawnClientBuilder() .withNetworkTimeout((int) TimeUnit.SECONDS.toMillis(adaptersConnectionProperties.getTimeoutSec())) .withAddress(URI.create(routeUrl)) diff --git a/src/main/java/dev/vality/disputes/schedule/service/ProviderRouting.java b/src/main/java/dev/vality/disputes/schedule/service/ProviderRouting.java index 6627094..82a5288 100644 --- a/src/main/java/dev/vality/disputes/schedule/service/ProviderRouting.java +++ b/src/main/java/dev/vality/disputes/schedule/service/ProviderRouting.java @@ -18,12 +18,12 @@ public class ProviderRouting { private static final String DISPUTES_URL_POSTFIX_DEFAULT = "disputes"; private static final String OPTION_DISPUTES_URL_FIELD_NAME = "disputes_url"; - public String getRouteUrl(ProviderData providerData) { + public void initRouteUrl(ProviderData providerData) { var url = providerData.getOptions().get(OPTION_DISPUTES_URL_FIELD_NAME); if (ObjectUtils.isEmpty(url)) { url = createDefaultRouteUrl(providerData.getDefaultProviderUrl()); } - return url; + providerData.setRouteUrl(url); } private String createDefaultRouteUrl(String defaultProviderUrl) {