http logger changes
This commit is contained in:
parent
07ef69ac2d
commit
5c422fb847
|
@ -1,16 +1,11 @@
|
|||
package org.opencdmp.service.deposit;
|
||||
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.opencdmp.commonmodels.models.dmp.DmpModel;
|
||||
import org.opencdmp.depositbase.repository.DepositClient;
|
||||
import org.opencdmp.depositbase.repository.DepositConfiguration;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import gr.cite.tools.logging.MapLogEntry;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
|
@ -26,21 +21,21 @@ public class DepositClientImpl implements DepositClient {
|
|||
|
||||
@Override
|
||||
public String deposit(DmpModel dmpDepositModel, String repositoryAccessToken) throws Exception {
|
||||
return depositClient.post().uri("", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
return this.depositClient.post().uri("", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String authenticate(String code) {
|
||||
return depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
return this.depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DepositConfiguration getConfiguration() {
|
||||
return depositClient.get().uri("/configuration").exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(new ParameterizedTypeReference<DepositConfiguration>() {})).block();
|
||||
return this.depositClient.get().uri("/configuration").exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(new ParameterizedTypeReference<DepositConfiguration>() {})).block();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLogo() {
|
||||
return depositClient.get().uri("/logo").exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
return this.depositClient.get().uri("/logo").exchangeToMono(mono -> mono.statusCode().isError() ? mono.createException().flatMap(Mono::error) : mono.bodyToMono(String.class)).block();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,9 @@ import org.springframework.context.MessageSource;
|
|||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
|
@ -150,7 +152,12 @@ public class DepositServiceImpl implements DepositService {
|
|||
if (source != null) {
|
||||
TokenExchangeModel tokenExchangeModel = new TokenExchangeModel("deposit:" + repositoryIdByTenant, source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope());
|
||||
TokenExchangeFilterFunction apiKeyExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel);
|
||||
WebClient webClient = WebClient.builder().baseUrl(source.getUrl() + "/api/deposit").filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(apiKeyExchangeFilterFunction)).build();
|
||||
WebClient webClient = WebClient.builder().baseUrl(source.getUrl() + "/api/deposit")
|
||||
.filters(exchangeFilterFunctions -> {
|
||||
exchangeFilterFunctions.add(apiKeyExchangeFilterFunction);
|
||||
exchangeFilterFunctions.add(logRequest());
|
||||
exchangeFilterFunctions.add(logResponse());
|
||||
}).build();
|
||||
DepositClientImpl repository = new DepositClientImpl(webClient);
|
||||
this.clients.put(repositoryIdByTenant, repository);
|
||||
return repository;
|
||||
|
@ -376,4 +383,26 @@ public class DepositServiceImpl implements DepositService {
|
|||
return depositClient.authenticate(model.getCode());
|
||||
}
|
||||
|
||||
private static ExchangeFilterFunction logRequest() {
|
||||
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
|
||||
logger.debug("Request: {} {}", clientRequest.method(), clientRequest.url());
|
||||
return Mono.just(clientRequest);
|
||||
});
|
||||
}
|
||||
|
||||
private static ExchangeFilterFunction logResponse() {
|
||||
return ExchangeFilterFunction.ofResponseProcessor(response -> {
|
||||
if (response.statusCode().isError()) {
|
||||
return response.mutate().build().bodyToMono(String.class)
|
||||
.flatMap(body -> {
|
||||
logger.error("Request: {} {}", response.request().getMethod(), response.request().getURI());
|
||||
logger.error("Response: {} {}", response.statusCode(), body);
|
||||
return Mono.just(response);
|
||||
});
|
||||
}
|
||||
return Mono.just(response);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ import org.opencdmp.commons.enums.ExternalFetcherSourceType;
|
|||
import org.opencdmp.commons.types.externalfetcher.StaticOptionEntity;
|
||||
import org.opencdmp.convention.ConventionService;
|
||||
import org.opencdmp.data.ReferenceEntity;
|
||||
import org.opencdmp.model.reference.Reference;
|
||||
import org.opencdmp.model.reference.Field;
|
||||
import org.opencdmp.model.reference.Reference;
|
||||
import org.opencdmp.service.externalfetcher.config.entities.*;
|
||||
import org.opencdmp.service.externalfetcher.criteria.ExternalReferenceCriteria;
|
||||
import org.opencdmp.service.externalfetcher.models.ExternalDataResult;
|
||||
|
@ -28,7 +28,9 @@ import org.springframework.http.ResponseEntity;
|
|||
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
|
||||
import org.springframework.http.codec.json.Jackson2JsonDecoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.netty.http.client.HttpClient;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -51,10 +53,13 @@ public class ExternalFetcherServiceImpl implements ExternalFetcherService {
|
|||
|
||||
private WebClient getWebClient() {
|
||||
if (this.webClient == null) {
|
||||
this.webClient = WebClient.builder().codecs(clientCodecConfigurer -> {
|
||||
clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON));
|
||||
clientCodecConfigurer.defaultCodecs().maxInMemorySize(2 * ((int) Math.pow(1024, 3))); //GK: Why here???
|
||||
}
|
||||
this.webClient = WebClient.builder().filters(exchangeFilterFunctions -> {
|
||||
exchangeFilterFunctions.add(logRequest());
|
||||
exchangeFilterFunctions.add(logResponse());
|
||||
}).codecs(clientCodecConfigurer -> {
|
||||
clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON));
|
||||
clientCodecConfigurer.defaultCodecs().maxInMemorySize(2 * ((int) Math.pow(1024, 3))); //GK: Why here???
|
||||
}
|
||||
).clientConnector(new ReactorClientHttpConnector(HttpClient.create().followRedirect(true))).build();
|
||||
}
|
||||
return this.webClient;
|
||||
|
@ -151,8 +156,9 @@ public class ExternalFetcherServiceImpl implements ExternalFetcherService {
|
|||
Map<String, Object> response = this.getWebClient().method(method).uri(authenticationConfiguration.getAuthUrl())
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.bodyValue(this.parseBodyString(authenticationConfiguration.getAuthRequestBody()))
|
||||
.exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference<Map<String, Object>>() {
|
||||
})).block();
|
||||
.exchangeToMono(mono -> mono.statusCode().isError() ?
|
||||
mono.createException().flatMap(Mono::error) : mono.bodyToMono(new ParameterizedTypeReference<Map<String, Object>>() {}))
|
||||
.block();
|
||||
if (response == null) throw new MyApplicationException("Authentication " + authenticationConfiguration.getAuthUrl() + " failed");
|
||||
|
||||
return authenticationConfiguration.getType() + " " + response.getOrDefault(authenticationConfiguration.getAuthTokenPath(), null);
|
||||
|
@ -374,4 +380,26 @@ public class ExternalFetcherServiceImpl implements ExternalFetcherService {
|
|||
return finalBodyString;
|
||||
}
|
||||
|
||||
private static ExchangeFilterFunction logRequest() {
|
||||
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
|
||||
logger.debug("Request: {} {}", clientRequest.method(), clientRequest.url());
|
||||
return Mono.just(clientRequest);
|
||||
});
|
||||
}
|
||||
|
||||
private static ExchangeFilterFunction logResponse() {
|
||||
return ExchangeFilterFunction.ofResponseProcessor(response -> {
|
||||
if (response.statusCode().isError()) {
|
||||
return response.mutate().build().bodyToMono(String.class)
|
||||
.flatMap(body -> {
|
||||
logger.error("Request: {} {}", response.request().getMethod(), response.request().getURI());
|
||||
logger.error("Response: {} {}", response.statusCode(), body);
|
||||
return Mono.just(response);
|
||||
});
|
||||
}
|
||||
return Mono.just(response);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -108,6 +108,7 @@ public class FileTransformerServiceImpl implements FileTransformerService {
|
|||
FileTransformerRepository repository = new FileTransformerRepository(WebClient.builder().baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> {
|
||||
exchangeFilterFunctions.add(tokenExchangeFilterFunction);
|
||||
exchangeFilterFunctions.add(logRequest());
|
||||
exchangeFilterFunctions.add(logResponse());
|
||||
}).build());
|
||||
this.clients.put(repositoryIdByTenant, repository);
|
||||
return repository;
|
||||
|
@ -259,12 +260,27 @@ public class FileTransformerServiceImpl implements FileTransformerService {
|
|||
return result;
|
||||
}
|
||||
|
||||
// This method returns filter function which will log request data
|
||||
|
||||
|
||||
private static ExchangeFilterFunction logRequest() {
|
||||
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
|
||||
logger.info("Request: {} {}", clientRequest.method(), clientRequest.url());
|
||||
clientRequest.headers().forEach((name, values) -> values.forEach(value -> logger.info("{}={}", name, value)));
|
||||
logger.debug("Request: {} {}", clientRequest.method(), clientRequest.url());
|
||||
return Mono.just(clientRequest);
|
||||
});
|
||||
}
|
||||
|
||||
private static ExchangeFilterFunction logResponse() {
|
||||
return ExchangeFilterFunction.ofResponseProcessor(response -> {
|
||||
if (response.statusCode().isError()) {
|
||||
return response.mutate().build().bodyToMono(String.class)
|
||||
.flatMap(body -> {
|
||||
logger.error("Request: {} {}", response.request().getMethod(), response.request().getURI());
|
||||
logger.error("Response: {} {}", response.statusCode(), body);
|
||||
return Mono.just(response);
|
||||
});
|
||||
}
|
||||
return Mono.just(response);
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue