aboutsummaryrefslogtreecommitdiff
path: root/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
diff options
context:
space:
mode:
authorThomas <>2023-03-23 17:25:56 +0100
committerThomas <>2023-06-05 16:55:41 +0200
commit369f5e1eae4da0545145c1b17d6850647287f367 (patch)
treef3b839c5fdf99d330db73562ae2aaac41de022f6 /modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
parentbebb8669ab6737fe852b0c1bf4b98d4a22573537 (diff)
downloadNational_eIDAS_Gateway-369f5e1eae4da0545145c1b17d6850647287f367.tar.gz
National_eIDAS_Gateway-369f5e1eae4da0545145c1b17d6850647287f367.tar.bz2
National_eIDAS_Gateway-369f5e1eae4da0545145c1b17d6850647287f367.zip
feat(matching): log BM.I specific response headers 'txId' and 'pvp-txId'
Diffstat (limited to 'modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java')
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java46
1 files changed, 31 insertions, 15 deletions
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
index 10aa020d..bbb245f1 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java
@@ -24,8 +24,12 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.http.client.HttpClient;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
@@ -126,6 +130,10 @@ public class ErnpRestClient implements IErnpClient {
// ERnP person type that indicates mark a person as ZMR entry
private static final String ERNP_RESPONSE_OPERATION_ZMR_FORWARD = "PersonUebernehmen";
+ private static final String HEADER_TXID = "txid";
+ private static final String HEADER_PVP_TXID = "pvp-txid";
+ private static final String HEADER_MSG_NOT_SET = "NOT-set";
+
@Autowired
IConfiguration basicConfig;
@Autowired
@@ -886,25 +894,33 @@ public class ErnpRestClient implements IErnpClient {
final RestTemplate springClient = new RestTemplate(requestFactory);
springClient.setErrorHandler(buildErrorHandler());
springClient.getMessageConverters().add(0, buildCustomJacksonObjectMapper());
- // springClient.getInterceptors().add(buildTransactionIdInterceptor());
+ springClient.setInterceptors(Collections.singletonList(buildTransactionIdInterceptor()));
return springClient;
}
- // private ClientHttpRequestInterceptor buildTransactionIdInterceptor() {
- // return new ClientHttpRequestInterceptor() {
- //
- // @Override
- // public ClientHttpResponse intercept(HttpRequest request, byte[] body,
- // ClientHttpRequestExecution execution)
- // throws IOException {
- // request.getHeaders().add("dfafsafafsaf",
- // TransactionIdUtils.getTransactionId());
- // return execution.execute(request, body);
- //
- // }
- // };
- // }
+ private ClientHttpRequestInterceptor buildTransactionIdInterceptor() {
+ return new ClientHttpRequestInterceptor() {
+
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body,
+ ClientHttpRequestExecution execution) throws IOException {
+ ClientHttpResponse response = execution.execute(request, body);
+
+ log.info("response for SOAP client: {} with {}:{} and {}:{}", FRIENDLYNAME_HTTP_CLIENT,
+ HEADER_TXID, extractHeaderValue(response.getHeaders(), HEADER_TXID),
+ HEADER_PVP_TXID, extractHeaderValue(response.getHeaders(), HEADER_PVP_TXID));
+ return response;
+
+ }
+
+ private String extractHeaderValue(HttpHeaders headers, String headerName) {
+ List<String> value = headers.get(headerName);
+ return value == null || value.isEmpty() ? HEADER_MSG_NOT_SET : value.get(0);
+
+ }
+ };
+ }
private HttpMessageConverter<?> buildCustomJacksonObjectMapper() {
final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();