aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-09 12:56:54 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-09 12:56:54 +0200
commit65163646205b6e05139485fe957bceabe531f447 (patch)
treec35c0061a8c7e8ad3f054e632ed6ecfb1fb1b3cc /src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java
parent8e36fa01ea42d282eacdc78d6749daf9ae1ede9c (diff)
downloadmoa-zs-65163646205b6e05139485fe957bceabe531f447.tar.gz
moa-zs-65163646205b6e05139485fe957bceabe531f447.tar.bz2
moa-zs-65163646205b6e05139485fe957bceabe531f447.zip
Minor Fixes And Refactoring
- Fix typo in SafeResponseToFileSink. - MoaZSException: Simplify constructor by replacing lots of arguments with the builder instance. - Fix minor codesmells (unused imports, superfluous braces).
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java84
1 files changed, 0 insertions, 84 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java b/src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java
deleted file mode 100644
index 12a9fe3..0000000
--- a/src/main/java/at/gv/egiz/moazs/process/SafeResponseToFileSink.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package at.gv.egiz.moazs.process;
-
-import at.gv.egiz.moazs.repository.DeliveryRepository;
-import at.gv.egiz.moazs.scheme.Marshaller;
-import at.gv.egiz.moazs.scheme.MsgResponse;
-import org.apache.commons.io.FileUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.concurrent.CompletableFuture;
-
-import static java.lang.String.format;
-import static java.util.concurrent.CompletableFuture.allOf;
-import static java.util.concurrent.CompletableFuture.supplyAsync;
-
-@Component
-public class SafeResponseToFileSink implements MsgResponseSink {
-
- private static final Logger log = LoggerFactory.getLogger(SafeResponseToFileSink.class);
- private static final String SAFING_FAILED_MSG = "Could not save response with AppDeliveryId=%s.";
- private static final SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-
- private final Marshaller msgMarshaller;
- private final DeliveryRepository respository;
- private final String root;
-
-
- @Autowired
- public SafeResponseToFileSink(Marshaller msgMarshaller, DeliveryRepository binaryRepository, String root) {
- this.msgMarshaller = msgMarshaller;
- this.respository = binaryRepository;
- this.root = root;
- }
-
- @Override
- public CompletableFuture<Void> handle(MsgResponse response) {
-
- var responseID = response.getResponseID();
-
- var responsePath = generatePath(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 storeBinaryResponseToFileSystemFuture = supplyAsync(() -> respository.retrieveBinaryResponse(responseID).get())
- .thenAccept(binaryResponseByteArray -> storeToFile(binaryResponsePath, binaryResponseByteArray))
- .exceptionally((ex) -> logException(ex, responseID));
-
- return allOf(storeResponseToFileSystemFuture, storeBinaryResponseToFileSystemFuture);
-
- }
-
- private String generatePath(String id, String suffix) {
- var folder = sanitizeFileString(id);
- var iso8601_now = ISO_FORMATTER.format(new Date());
- return format("%s/%s/%s.%s", root, folder, iso8601_now, suffix);
- }
-
- private String sanitizeFileString(String fileString) {
- return fileString.replaceAll("[^a-zA-Z0-9\\._\\-]", "");
- }
-
- private Void logException(Throwable ex, String appDeliveryID) {
- log.error(format(SAFING_FAILED_MSG, appDeliveryID), ex);
- return null;
- }
-
- private void storeToFile(String path, byte[] content) {
- try {
- FileUtils.writeByteArrayToFile(new File(path), content);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-}