Skip to content

Commit

Permalink
Merge pull request #963 from catenax-ng/chore/414-update-reload-client
Browse files Browse the repository at this point in the history
Chore/414 update reload client
  • Loading branch information
ds-mwesener authored Jan 31, 2024
2 parents 817e23b + 6e44306 commit 20dd10c
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 59 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Implemented asset publisher component functionality
- Updated postgres to version 15.4
- Migrated from okhttpclient (feign implementation) to resttemplate.
- Refactored rest templates

### Removed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import org.eclipse.tractusx.traceability.common.properties.FeignDefaultProperties;
import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
Expand All @@ -55,21 +54,15 @@
@Slf4j
public class RestTemplateConfiguration {

public static final String EDC_REST_TEMPLATE = "edcRestTemplate";
public static final String REST_TEMPLATE = "restTemplate";
public static final String SUBMODEL_TEMPLATE = "submodelTemplate";
public static final String EDC_NOTIFICATION_TEMPLATE = "edcNotificationTemplate";

private static final String EDC_API_KEY_HEADER_NAME = "X-Api-Key";

private static final String IRS_API_KEY_HEADER_NAME = "X-API-KEY";

private final OAuth2AuthorizedClientService oAuth2AuthorizedClientService;
private final ClientRegistrationRepository clientRegistrationRepository;


/* RestTemplate used by trace x for the edc contracts used within the edc provider.*/
@Bean
@Qualifier(EDC_REST_TEMPLATE)
public RestTemplate edcRestTemplate(@Autowired EdcProperties edcProperties) {
return new RestTemplateBuilder()
.rootUri(edcProperties.getProviderEdcUrl())
Expand All @@ -79,14 +72,15 @@ public RestTemplate edcRestTemplate(@Autowired EdcProperties edcProperties) {
.build();
}

/* RestTemplate used by trace x for the notification transfer to the edc controlplane including edc api key*/
@Bean
@Qualifier(EDC_NOTIFICATION_TEMPLATE)
public RestTemplate edcNotificationTemplate(@Autowired EdcProperties edcProperties) {
return new RestTemplateBuilder()
.defaultHeader(EDC_API_KEY_HEADER_NAME, edcProperties.getApiAuthKey())
.build();
}

/* RestTemplate used by trace x for the irs api with the admin api key*/
@Bean
public RestTemplate irsAdminTemplate(@Autowired TraceabilityProperties traceabilityProperties) {
return new RestTemplateBuilder()
Expand All @@ -96,6 +90,7 @@ public RestTemplate irsAdminTemplate(@Autowired TraceabilityProperties traceabil
.build();
}

/* RestTemplate used by trace x for the irs api with the regular api key*/
@Bean
public RestTemplate irsRegularTemplate(@Autowired TraceabilityProperties traceabilityProperties) {
return new RestTemplateBuilder()
Expand All @@ -106,25 +101,17 @@ public RestTemplate irsRegularTemplate(@Autowired TraceabilityProperties traceab
.build();
}

/* RestTemplate used by trace x for the submodel server*/
@Bean
@Qualifier(REST_TEMPLATE)
public RestTemplate edcTemplate() {
return new RestTemplateBuilder()
.build();
}


@Bean
@Qualifier(SUBMODEL_TEMPLATE)
public RestTemplate submodelRestTemplate(@Autowired TraceabilityProperties traceabilityProperties, @Autowired FeignDefaultProperties feignDefaultProperties) {

return new RestTemplateBuilder()
.rootUri(traceabilityProperties.getSubmodelBase())
.setConnectTimeout(Duration.ofMillis(feignDefaultProperties.getConnectionTimeoutMillis()))
.setReadTimeout(Duration.ofMillis(feignDefaultProperties.getReadTimeoutMillis()))
.build();
}

/* RestTemplate used by the digital twin registry client library*/
@Bean
public RestTemplate digitalTwinRegistryRestTemplate(
final RestTemplateBuilder restTemplateBuilder,
Expand All @@ -135,6 +122,7 @@ public RestTemplate digitalTwinRegistryRestTemplate(
clientRegistrationId).build();
}

/* RestTemplate used by the edc client library*/
@Bean
public RestTemplate edcClientRestTemplate() {
return new RestTemplateBuilder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,41 +23,38 @@

import lombok.extern.slf4j.Slf4j;
import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.BadRequestException;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.DefaultUriBuilderFactory;

import static java.lang.String.format;
import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_NOTIFICATION_TEMPLATE;

// TODO - either refactor this class to use feignClient with a common httpClient or remove it once IRS-Lib is done
@Slf4j
@Component
public class HttpCallService {


private final RestTemplate edcNotificationTemplate;

public HttpCallService(@Qualifier(EDC_NOTIFICATION_TEMPLATE) RestTemplate edcNotificationTemplate) {
public HttpCallService(RestTemplate edcNotificationTemplate) {
this.edcNotificationTemplate = edcNotificationTemplate;
}


public void sendRequest(EdcNotificationRequest request) {
edcNotificationTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(request.getUrl()));
HttpEntity<String> entity = new HttpEntity<>(request.getBody(), request.getHeaders());
try {
var response = edcNotificationTemplate.exchange("", HttpMethod.POST, entity, new ParameterizedTypeReference<>() {
var response = edcNotificationTemplate.exchange(request.getUrl(), HttpMethod.POST, entity, new ParameterizedTypeReference<>() {
});
var body = response.getBody();
if (!response.getStatusCode().is2xxSuccessful() || body == null) {
throw new BadRequestException(format("Control plane responded with: %s %s", response.getStatusCode(), body != null ? body.toString() : ""));
log.info("Control plane responded with response: {}", response);
log.info("Control plane responded with status: {}", response.getStatusCode());
if (!response.getStatusCode().is2xxSuccessful()) {
throw new BadRequestException(format("Control plane responded with: %s", response.getStatusCode()));
}
} catch (Exception e) {
log.warn(e.getMessage());
throw e;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@
import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties;
import org.eclipse.tractusx.traceability.qualitynotification.application.contract.model.NotificationMethod;
import org.eclipse.tractusx.traceability.qualitynotification.application.contract.model.NotificationType;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.*;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.CreateEdcAssetException;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.EdcAsset;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.EdcAssetProperties;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.EdcContext;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.EdcCreateDataAssetRequest;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.asset.model.EdcDataAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
Expand All @@ -38,7 +42,6 @@

import java.util.UUID;

import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE;
import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_EDC;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml;
Expand All @@ -55,13 +58,13 @@ public class EdcNotificationAssetService {
private static final String TRACE_FOSS_QUALITY_NOTIFICATION_ALERT_URL_TEMPLATE = "/api/qualityalerts/%s";

private final TraceabilityProperties traceabilityProperties;
private final RestTemplate restTemplate;
private final RestTemplate edcRestTemplate;
private final EdcProperties edcProperties;

@Autowired
public EdcNotificationAssetService(TraceabilityProperties traceabilityProperties, @Qualifier(EDC_REST_TEMPLATE) RestTemplate edcRestTemplate, EdcProperties edcProperties) {
public EdcNotificationAssetService(TraceabilityProperties traceabilityProperties, RestTemplate edcRestTemplate, EdcProperties edcProperties) {
this.traceabilityProperties = traceabilityProperties;
this.restTemplate = edcRestTemplate;
this.edcRestTemplate = edcRestTemplate;
this.edcProperties = edcProperties;
}

Expand Down Expand Up @@ -111,7 +114,7 @@ public String createNotificationAsset(NotificationMethod notificationMethod, Not
final ResponseEntity<String> createEdcDataAssetResponse;

try {
createEdcDataAssetResponse = restTemplate.postForEntity(
createEdcDataAssetResponse = edcRestTemplate.postForEntity(
edcProperties.getAssetsPath(),
createDataAssetRequest,
String.class
Expand Down Expand Up @@ -146,7 +149,7 @@ public void deleteNotificationAsset(String notificationAssetId) {
.toUriString();

try {
restTemplate.delete(deleteUri);
edcRestTemplate.delete(deleteUri);
} catch (RestClientException e) {
log.error("Failed to delete EDC notification asset {}. Reason: ", notificationAssetId, e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,12 @@
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.contract.model.EdcContractDefinitionCriteria;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.contract.model.EdcCreateContractDefinitionRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE;
import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_EDC;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml;
Expand All @@ -51,13 +49,13 @@ public class EdcContractDefinitionService {
private static final String ASSET_SELECTOR_TYPE = "CriterionDto";
private static final String CONTRACT_DEFINITION_TYPE = "ContractDefinition";

private final RestTemplate restTemplate;
private final RestTemplate edcRestTemplate;
private final EdcProperties edcProperties;
private final ObjectMapper objectMapper;

@Autowired
public EdcContractDefinitionService(@Qualifier(EDC_REST_TEMPLATE) RestTemplate edcRestTemplate, EdcProperties edcProperties, ObjectMapper objectMapper) {
this.restTemplate = edcRestTemplate;
public EdcContractDefinitionService(RestTemplate edcRestTemplate, EdcProperties edcProperties, ObjectMapper objectMapper) {
this.edcRestTemplate = edcRestTemplate;
this.edcProperties = edcProperties;
this.objectMapper = objectMapper;
}
Expand Down Expand Up @@ -85,7 +83,7 @@ public String createContractDefinition(String notificationAssetId, String access
final ResponseEntity<String> createContractDefinitionResponse;
log.info("EdcCreateContractDefinitionRequest {}", objectMapper.writeValueAsString(createContractDefinitionRequest));
try {
createContractDefinitionResponse = restTemplate.postForEntity(edcProperties.getContractDefinitionsPath(), createContractDefinitionRequest, String.class);
createContractDefinitionResponse = edcRestTemplate.postForEntity(edcProperties.getContractDefinitionsPath(), createContractDefinitionRequest, String.class);
} catch (RestClientException e) {
log.error("Failed to create edc contract definition for {} notification asset and {} policy definition id. Reason: ", notificationAssetId, accessPolicyId, e);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.policy.model.EdcPolicyPermissionConstraint;
import org.eclipse.tractusx.traceability.qualitynotification.domain.contract.policy.model.EdcPolicyPermissionConstraintExpression;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
Expand All @@ -46,7 +45,6 @@
import java.util.List;
import java.util.UUID;

import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE;
import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_ODRL;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize;
import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml;
Expand All @@ -62,15 +60,14 @@ public class EdcPolicyDefinitionService {
private static final String CONSTRAINT = "Constraint";
private static final String OPERATOR_PREFIX = "odrl:";
private final ObjectMapper objectMapper;
private final RestTemplate restTemplate;
private final RestTemplate edcRestTemplate;
private final EdcProperties edcProperties;

private final TraceabilityProperties traceabilityProperties;

@Autowired
public EdcPolicyDefinitionService(ObjectMapper objectMapper, @Qualifier(EDC_REST_TEMPLATE) RestTemplate edcRestTemplate, EdcProperties edcProperties, TraceabilityProperties traceabilityProperties) {
public EdcPolicyDefinitionService(ObjectMapper objectMapper, RestTemplate edcRestTemplate, EdcProperties edcProperties, TraceabilityProperties traceabilityProperties) {
this.objectMapper = objectMapper;
this.restTemplate = edcRestTemplate;
this.edcRestTemplate = edcRestTemplate;
this.edcProperties = edcProperties;
this.traceabilityProperties = traceabilityProperties;
}
Expand Down Expand Up @@ -110,7 +107,7 @@ public String createAccessPolicy() throws JsonProcessingException {
log.info("EdcCreatePolicyDefinitionRequest {}", objectMapper.writeValueAsString(edcCreatePolicyDefinitionRequest));
final ResponseEntity<String> createPolicyDefinitionResponse;
try {
createPolicyDefinitionResponse = restTemplate.postForEntity(edcProperties.getPolicyDefinitionsPath(), edcCreatePolicyDefinitionRequest, String.class);
createPolicyDefinitionResponse = edcRestTemplate.postForEntity(edcProperties.getPolicyDefinitionsPath(), edcCreatePolicyDefinitionRequest, String.class);
} catch (RestClientException e) {
log.error("Failed to create EDC notification asset policy. Reason: ", e);

Expand Down Expand Up @@ -143,7 +140,7 @@ public void deleteAccessPolicy(String accessPolicyId) {
.toUriString();

try {
restTemplate.delete(deleteUri);
edcRestTemplate.delete(deleteUri);
} catch (RestClientException e) {
log.error("Failed to delete EDC notification asset policy {}. Reason: ", cleanAccessPolicyId, e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,28 @@
********************************************************************************/
package org.eclipse.tractusx.traceability.submodel.infrastructure.repository;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.client.RestTemplate;

import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.SUBMODEL_TEMPLATE;

@Component
public class SubmodelClient {

private final RestTemplate submodelTemplate;
private final RestTemplate submodelRestTemplate;


public SubmodelClient(@Qualifier(SUBMODEL_TEMPLATE) RestTemplate submodelTemplate) {
this.submodelTemplate = submodelTemplate;
public SubmodelClient(RestTemplate submodelRestTemplate) {
this.submodelRestTemplate = submodelRestTemplate;
}

public void createSubmodel(String submodelId, @RequestBody String payload) {
submodelTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.POST, new HttpEntity<>(payload), Void.class);
submodelRestTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.POST, new HttpEntity<>(payload), Void.class);
}


public String getSubmodel(String submodelId) {
return submodelTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.GET, null, String.class).getBody();
return submodelRestTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.GET, null, String.class).getBody();
}
}

0 comments on commit 20dd10c

Please sign in to comment.