From d9e5864f48d261c06de1f1d34000ff6156155569 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Mon, 15 Jul 2019 12:04:26 +0200 Subject: Save Response To File Sink: Add Path to Configuration + Fix - Fix in ConfigUtil: SaveResponseToFile boolean would override LogResponse configuration (Copy Paste Error). --- .../java/at/gv/egiz/moazs/backend/MsgResponseBackend.java | 4 ++-- .../at/gv/egiz/moazs/backend/SaveResponseToFileSink.java | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/backend') diff --git a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java index 1b17f34..59db396 100644 --- a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java +++ b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java @@ -84,8 +84,8 @@ public class MsgResponseBackend implements Consumer { var sinkParams = getSinkParams(msgResponse); - if (sinkParams.isSafeResponseToFile()) { - supplyAsync(() -> saveResponseToFileSink.save(msgResponse)); + if (sinkParams.getSafeResponseToFile().isActive()) { + supplyAsync(() -> saveResponseToFileSink.save(msgResponse, sinkParams.getSafeResponseToFile().getPath())); } if (sinkParams.isLogResponse()) { 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 7da76ef..2468ca9 100644 --- a/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java +++ b/src/main/java/at/gv/egiz/moazs/backend/SaveResponseToFileSink.java @@ -31,13 +31,11 @@ public class SaveResponseToFileSink { private final SimpleDateFormat isoFormatter; private final Marshaller msgMarshaller; private final DeliveryRepository repository; - private final String root; @Autowired - public SaveResponseToFileSink(Marshaller msgMarshaller, DeliveryRepository repository, String root) { + public SaveResponseToFileSink(Marshaller msgMarshaller, DeliveryRepository repository) { this.msgMarshaller = msgMarshaller; this.repository = repository; - this.root = root; this.isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); } @@ -47,17 +45,17 @@ public class SaveResponseToFileSink { * @param response * @return Future that completes when both responses have been written to the file system. */ - public CompletableFuture save(MsgResponse response) { + public CompletableFuture save(MsgResponse response, String rootPath) { var responseID = response.getResponseID(); - var responsePath = generatePath(responseID, "xml"); + var responsePath = generatePath(rootPath, responseID, "xml"); var storeResponseToFileSystemFuture = supplyAsync(() -> msgMarshaller.marshallXml(response.getResponse())) .thenApply(responseString -> responseString.getBytes(StandardCharsets.UTF_8)) .thenAccept(responseByteArray -> storeToFile(responsePath, responseByteArray)) .exceptionally(ex -> logException(ex, responseID)); - var binaryResponsePath = generatePath(responseID, "binary.xml"); + var binaryResponsePath = generatePath(rootPath, responseID, "binary.xml"); var storeBinaryResponseToFileSystemFuture = supplyAsync(() -> repository.retrieveBinaryResponse(responseID).get()) .thenAccept(binaryResponseByteArray -> storeToFile(binaryResponsePath, binaryResponseByteArray)) .exceptionally(ex -> logException(ex, responseID)); @@ -66,10 +64,10 @@ public class SaveResponseToFileSink { } - private String generatePath(String id, String suffix) { + private String generatePath(String rootPath, String id, String suffix) { var folder = sanitizeFileString(id); var nowInIso8601 = isoFormatter.format(new Date()); - return format("%s/%s/%s.%s", root, folder, nowInIso8601, suffix); + return format("%s/%s/%s.%s", rootPath, folder, nowInIso8601, suffix); } private String sanitizeFileString(String fileString) { -- cgit v1.2.3