aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java b/src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java
new file mode 100644
index 0000000..d419944
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java
@@ -0,0 +1,44 @@
+package at.gv.egiz.moazs.backend;
+
+import at.gv.egiz.moazs.scheme.Marshaller;
+import at.gv.egiz.moazs.scheme.MsgResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.CompletableFuture;
+
+import static java.util.concurrent.CompletableFuture.completedFuture;
+
+@Component
+public class LogResponseSink {
+
+ private static final Logger log = LoggerFactory.getLogger(LogResponseSink.class);
+ private static final String LOG_LEVEL_WARN_MESSAGE = "Will not log response because INFO level is disabled.";
+
+ private final Marshaller msgMarshaller;
+
+ public LogResponseSink(Marshaller msgMarshaller) {
+ this.msgMarshaller = msgMarshaller;
+ }
+
+ /**
+ * Log response to class logger at level=INFO.
+ *
+ * @param msgResponse
+ * @return
+ */
+ public CompletableFuture<Void> log(MsgResponse msgResponse) {
+
+ if(log.isInfoEnabled()) {
+ var builder = new StringBuilder("Received the following Message: \n");
+ builder.append(msgMarshaller.marshallXml(msgResponse.getResponseAsJAXBElement()));
+ log.info(builder.toString());
+ } else {
+ log.warn(LOG_LEVEL_WARN_MESSAGE);
+ }
+
+ return completedFuture(null);
+
+ }
+}