From 02c3a41bec8436fc52615a2860b7bca135c73b5f Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Sun, 1 Aug 2021 10:40:22 +0200 Subject: [PATCH] Some minor fixes --- .../transfer/controller/PutFileController.java | 15 ++++----------- .../inaf/ia2/transfer/service/PutFileService.java | 11 +++++++++-- .../controller/PutFileControllerTest.java | 3 ++- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java index 86e1092..de1a72c 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java @@ -7,22 +7,15 @@ package it.inaf.ia2.transfer.controller; import it.inaf.ia2.transfer.persistence.model.FileInfo; import it.inaf.ia2.transfer.persistence.FileDAO; -import it.inaf.ia2.transfer.persistence.JobDAO; import it.inaf.ia2.transfer.service.PutFileService; import it.inaf.oats.vospace.exception.InvalidArgumentException; import it.inaf.oats.vospace.exception.NodeNotFoundException; import it.inaf.oats.vospace.exception.QuotaExceededException; -import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.nio.file.Files; -import java.security.MessageDigest; +import java.io.UncheckedIOException; import java.security.NoSuchAlgorithmException; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; -import javax.xml.bind.DatatypeConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -84,7 +77,7 @@ public class PutFileController extends FileController { if (remainingQuota != null && file != null && file.getSize() > remainingQuota) { throw new QuotaExceededException("Path: " + fileInfo.getVirtualPath()); } - + if (file != null) { fileInfo.setContentType(file.getContentType()); } @@ -92,8 +85,8 @@ public class PutFileController extends FileController { try (InputStream in = file != null ? file.getInputStream() : request.getInputStream()) { putFileService.storeFileFromInputStream(fileInfo, in, remainingQuota); - } catch (Exception ex) { - throw new RuntimeException(ex); + } catch (IOException ex) { + throw new UncheckedIOException(ex); } } finally { diff --git a/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java b/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java index 60a0782..17e0197 100644 --- a/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java +++ b/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java @@ -11,6 +11,7 @@ import it.inaf.oats.vospace.exception.QuotaExceededException; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -51,8 +52,10 @@ public class PutFileService { try { Files.copy(sourceFile.toPath(), destinationFile.toPath()); this.finalizeFile(sourceFileInfo, destinationFileInfo, destinationFile, remainingQuota); - } catch (Exception e) { + } catch (IOException e) { destinationFile.delete(); + throw new UncheckedIOException(e); + } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } @@ -70,7 +73,10 @@ public class PutFileService { try { Files.copy(is, destinationFile.toPath()); this.finalizeFile(sourceFileInfo, destinationFileInfo, destinationFile, remainingQuota); - } catch (Exception e) { + } catch (IOException e) { + destinationFile.delete(); + throw new UncheckedIOException(e); + } catch (NoSuchAlgorithmException e) { destinationFile.delete(); throw new RuntimeException(e); } @@ -114,6 +120,7 @@ public class PutFileService { String md5Checksum = makeMD5Checksum(destinationFile); + // TODO: discuss if mismatches lead to taking actions if (sourceFileInfo != null) { if (!Objects.equals(sourceFileInfo.getContentLength(), fileSize)) { LOG.warn("Destination file size mismatch with source"); diff --git a/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java b/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java index 7c29b10..c3e51bd 100644 --- a/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java +++ b/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java @@ -94,7 +94,7 @@ public class PutFileControllerTest { assertEquals("content", Files.contentOf(file, StandardCharsets.UTF_8)); assertTrue(file.delete()); } - + @Test public void putGenericFileWithNameConflictExtension() throws Exception { putGenericFileWithNameConflict("test.txt", "test-1.txt", "test-2.txt"); @@ -299,6 +299,7 @@ public class PutFileControllerTest { fileInfo.setPublic(false); when(fileDao.getFileInfo(any())).thenReturn(Optional.of(fileInfo)); + when(fileDao.setBusy(any(), any())).thenReturn(1); return fileInfo; } -- GitLab