aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-12 15:40:05 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-12 15:40:05 +0200
commit25d68c8900c2cc791f03ea3db173955ca237fd55 (patch)
treef4d28b97845d10a709590dce480195b322ba019b /src/main/java/at/gv/egiz/moazs/backend/LogResponseSink.java
parent9dc0e72571a895e34a55c11d015c5d359b485aff (diff)
downloadmoa-zs-25d68c8900c2cc791f03ea3db173955ca237fd55.tar.gz
moa-zs-25d68c8900c2cc791f03ea3db173955ca237fd55.tar.bz2
moa-zs-25d68c8900c2cc791f03ea3db173955ca237fd55.zip
Allow App To Choose Between MsgResponse Sinks
- MZS Schema Change: Add "MsgResponseSinks" element to mzs:DeliveryRequest/Config that allows sender to configure how MsgResponses should be archived. - ConfigUtil: Interpret MsgResponseSink parameters from Spring Environment and merge with ConfigType. - MsgResponseBackend: Send responses to sinks according to MsgResponseSinks in Config - application.yaml: Add MsgResponseSinks parameter to configuration. - Uncouple Sink implementations from java.util.function.Function, because the sink interfaces are going to differ and there is no need to unite them under one interface. - Add and test LogResponseSink, which logs responses to it's logger. - MsgResponse: Add JAXB getter for response. Reason: Can be passed to marshaller.
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);
+
+ }
+}