aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.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/SaveResponseToFileSink.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/SaveResponseToFileSink.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java b/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java
index 02771a9..7da76ef 100644
--- a/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java
+++ b/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java
@@ -15,7 +15,6 @@ import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
import static at.gv.egiz.moazs.MoaZSException.moaZSException;
import static java.lang.String.format;
@@ -23,10 +22,11 @@ import static java.util.concurrent.CompletableFuture.allOf;
import static java.util.concurrent.CompletableFuture.supplyAsync;
@Component
-public class SaveResponseToFileSink implements Function<MsgResponse, CompletableFuture<Void>> {
+public class SaveResponseToFileSink {
private static final Logger log = LoggerFactory.getLogger(SaveResponseToFileSink.class);
private static final String SAVING_FAILED_MSG = "Could not save response with AppDeliveryId=%s.";
+ private static final String SAVE_RESPONSE_MSG = "Saving response to {}..." ;
private final SimpleDateFormat isoFormatter;
private final Marshaller msgMarshaller;
@@ -41,8 +41,13 @@ public class SaveResponseToFileSink implements Function<MsgResponse, Completable
this.isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
}
- @Override
- public CompletableFuture<Void> apply(MsgResponse response) {
+ /**
+ * Save response and it's binary version to the file system.
+ *
+ * @param response
+ * @return Future that completes when both responses have been written to the file system.
+ */
+ public CompletableFuture<Void> save(MsgResponse response) {
var responseID = response.getResponseID();
@@ -79,6 +84,7 @@ public class SaveResponseToFileSink implements Function<MsgResponse, Completable
}
private void storeToFile(String path, byte[] content) {
+ log.trace(SAVE_RESPONSE_MSG, path);
try {
FileUtils.writeByteArrayToFile(new File(path), content);
} catch (IOException e) {