aboutsummaryrefslogtreecommitdiff
path: root/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java
diff options
context:
space:
mode:
Diffstat (limited to 'modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java')
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java42
1 files changed, 38 insertions, 4 deletions
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java
index d1de827b..de18aff5 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/BmiSoapTransactionHeaderInterceptor.java
@@ -1,5 +1,7 @@
package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.xml.namespace.QName;
@@ -13,6 +15,9 @@ import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.apache.commons.lang3.StringUtils;
+import org.apache.cxf.message.Message;
+
+import com.google.common.collect.Lists;
import at.gv.egiz.eaaf.core.impl.utils.TransactionIdUtils;
import lombok.extern.slf4j.Slf4j;
@@ -25,15 +30,31 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
public class BmiSoapTransactionHeaderInterceptor implements SOAPHandler<SOAPMessageContext> {
+
private static final String AUTH_NS = "http://schemas.xmlsoap.org/ws/2002/04/secext";
private static final String AUTH_PREFIX = "wss";
private static final String AUTH_ELEMENT = "Security";
-
-
+
private static final String TRANS_ID_NS = "http://egov.gv.at/pvp1.xsd";
private static final String TRANS_IDPREFIX = "pvp";
private static final String TRANS_ID_ELEMENT = "Client-Request-Id";
+ 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";
+
+ private String clientName;
+
+ /**
+ * BM.I specific header interceptor.
+ *
+ * @param clientType Name of the SOAP client
+ */
+ public BmiSoapTransactionHeaderInterceptor(String clientType) {
+ this.clientName = clientType;
+
+ }
+
@Override
public boolean handleMessage(SOAPMessageContext context) {
if (((Boolean) context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue()) {
@@ -43,8 +64,15 @@ public class BmiSoapTransactionHeaderInterceptor implements SOAPHandler<SOAPMess
} else {
log.debug("No unique transactionId. Sending message without Id ...");
- }
- }
+ }
+
+ } else {
+ final Map<String, List<?>> headers = (Map<String, List<?>>) context.get(Message.PROTOCOL_HEADERS);
+ log.info("response for SOAP client: {} with {}:{} and {}:{}", clientName,
+ HEADER_TXID, extractHeaderValue(headers, HEADER_TXID),
+ HEADER_PVP_TXID, extractHeaderValue(headers, HEADER_PVP_TXID));
+
+ }
return true;
@@ -95,4 +123,10 @@ public class BmiSoapTransactionHeaderInterceptor implements SOAPHandler<SOAPMess
}
}
+ private String extractHeaderValue(Map<String, List<?>> headers, String headerName) {
+ List<?> value = headers.getOrDefault(headerName, Lists.newArrayList(HEADER_MSG_NOT_SET));
+ return value.isEmpty() ? HEADER_MSG_NOT_SET : value.get(0).toString();
+
+ }
+
} \ No newline at end of file