From e971462a2ff1c6cf8cac55eca5460ca41873ffd7 Mon Sep 17 00:00:00 2001 From: car031 Date: Fri, 21 Jun 2024 08:46:48 +0200 Subject: [PATCH] test fixes and optimizations --- .../com/logicaldoc/cmis/LDRepository.java | 4 +- .../logicaldoc/cmis/AbstractCmisTestCase.java | 2 +- .../com/logicaldoc/cmis/LDRepositoryTest.java | 4 +- .../logicaldoc/core/automation/DocTool.java | 2 +- .../logicaldoc/core/automation/MailTool.java | 2 +- .../core/communication/EMailSender.java | 2 +- .../CompressedArchiveConverter.java | 4 +- .../conversion/FormatConverterManager.java | 12 +-- .../core/conversion/P7MConverter.java | 2 +- .../core/conversion/PstConverter.java | 2 +- .../core/conversion/XMLConverter.java | 6 +- .../core/conversion/ZipConverter.java | 2 +- .../core/document/DocumentManagerImpl.java | 18 ++-- .../thumbnail/EpubThumbnailBuilder.java | 4 +- .../thumbnail/PdfThumbnailBuilder.java | 2 +- .../document/thumbnail/ThumbnailManager.java | 4 +- .../logicaldoc/core/imaging/ImageUtil.java | 4 +- .../core/parser/CatchAllParser.java | 4 +- .../logicaldoc/core/parser/EpubParser.java | 2 +- .../logicaldoc/core/parser/HTMLParser.java | 2 +- .../logicaldoc/core/parser/KOfficeParser.java | 2 +- .../core/parser/OpenOfficeParser.java | 2 +- .../com/logicaldoc/core/parser/RarParser.java | 8 +- .../core/parser/SevenZipParser.java | 8 +- .../com/logicaldoc/core/parser/TarParser.java | 8 +- .../com/logicaldoc/core/parser/ZipParser.java | 14 +-- .../searchengine/StandardSearchEngine.java | 6 +- .../core/searchengine/saved/SavedSearch.java | 4 +- .../logicaldoc/core/security/Geolocation.java | 8 +- .../core/security/menu/HibernateMenuDAO.java | 12 --- .../logicaldoc/core/store/AbstractStorer.java | 2 +- .../com/logicaldoc/core/store/FSStorer.java | 17 +--- .../com/logicaldoc/core/store/MockStorer.java | 16 ++-- .../com/logicaldoc/core/util/MergeUtil.java | 2 +- .../com/logicaldoc/core/util/UserUtil.java | 4 +- .../logicaldoc/core/AbstractCoreTestCase.java | 36 +++++--- .../com/logicaldoc/core/CoreWorkBench.java | 4 +- .../core/automation/DocToolTest.java | 4 +- .../core/conversion/XMLConverterTest.java | 2 +- .../document/DocumentManagerImplTest.java | 8 +- .../document/HibernateDocumentDAOTest.java | 6 +- .../document/HibernateVersionDAOTest.java | 39 ++++---- logicaldoc-core/src/test/resources/log4j2.xml | 7 ++ .../src/test/resources/loremipsum.pdf | Bin 0 -> 99861 bytes .../document/note/NoteUpdateDialog.java | 43 +++++---- .../client/document/note/NotesPanel.java | 21 +++-- .../document/note/VersionNotesWindow.java | 76 ++++++++++------ .../client/services/DocumentService.java | 3 +- .../client/services/DocumentServiceAsync.java | 10 +- .../util/config/ContextProperties.java | 4 +- .../com/logicaldoc/util/crypt/CryptUtil.java | 4 +- .../java/com/logicaldoc/util/exec/Exec.java | 22 ++--- .../com/logicaldoc/util/exec/StreamEater.java | 19 ++-- .../util/io/AutoDeleteInputStream.java | 2 +- .../util/io/AutoDeleteZipInputStream.java | 2 +- .../java/com/logicaldoc/util/io/FileUtil.java | 86 +++++++++++------- .../java/com/logicaldoc/util/io/IOUtil.java | 6 +- .../java/com/logicaldoc/util/io/JarUtil.java | 2 +- .../java/com/logicaldoc/util/io/ZipUtil.java | 2 +- .../util/junit/AbstractTestCase.java | 9 +- .../com/logicaldoc/util/UtilWorkbench.java | 26 ++---- .../util/config/ContextPropertiesTest.java | 4 +- .../logicaldoc/util/crypt/CryptUtilTest.java | 4 +- .../com/logicaldoc/util/exec/ExecTest.java | 48 ++++------ .../com/logicaldoc/util/io/FileUtilTest.java | 83 ++++++++++++----- .../com/logicaldoc/util/io/IOUtilTest.java | 6 +- .../com/logicaldoc/util/io/JarUtilTest.java | 4 +- .../java/com/logicaldoc/util/io/P7MTest.java | 10 +- .../com/logicaldoc/util/io/RarUtilTest.java | 2 +- .../logicaldoc/util/io/ResourceUtilTest.java | 4 +- .../logicaldoc/util/io/SevenZipUtilTest.java | 2 +- .../com/logicaldoc/util/io/TarUtilTest.java | 2 +- .../com/logicaldoc/util/io/ZipUtilTest.java | 8 +- logicaldoc-util/src/test/resources/log4j2.xml | 5 +- .../web/DownloadAttachmentServlet.java | 2 +- .../java/com/logicaldoc/web/LogDownload.java | 8 +- .../com/logicaldoc/web/UploadServlet.java | 4 +- .../web/listener/ApplicationListener.java | 2 +- .../web/service/DocumentServiceImpl.java | 22 ++--- .../web/service/SystemServiceImpl.java | 6 +- .../logicaldoc/web/stat/StatChartServlet.java | 2 +- .../web/service/DocumentServiceImplTest.java | 10 +- .../web/service/SecurityServiceImplTest.java | 2 +- .../web/service/SystemServiceImplTest.java | 4 +- .../src/test/resources/contexttest.properties | 1 + .../src/test/resources/log4j2.xml | 3 + .../webdav/context/ExportContextImpl.java | 2 +- .../webdav/context/ImportContextImpl.java | 2 +- .../webservice/WebserviceChartServlet.java | 2 +- .../webservice/SoapMultithreadWorkbench.java | 2 +- 90 files changed, 482 insertions(+), 414 deletions(-) create mode 100644 logicaldoc-core/src/test/resources/loremipsum.pdf diff --git a/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java b/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java index 26da7584a..0c0845c57 100644 --- a/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java +++ b/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java @@ -573,7 +573,7 @@ public void appendContent(CallContext context, String documentId, ContentStream transaction.setSessionId(sid); manager.replaceFile(doc.getId(), doc.getFileVersion(), mergeFile, transaction); } finally { - FileUtil.strongDelete(chunksFolder); + FileUtil.delete(chunksFolder); } } } @@ -600,7 +600,7 @@ private File getMergedContent(File chunksDir) throws IOException { for (Path path : chunks) { File chunk = path.toFile(); Files.write(merge.toPath(), Files.readAllBytes(chunk.toPath()), StandardOpenOption.APPEND); - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } return merge; diff --git a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java index 9e540693c..8ad471a68 100644 --- a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java +++ b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java @@ -41,7 +41,7 @@ public void setUp() throws IOException, SQLException, PluginException { String storePath = Context.get().getProperties().getProperty("store.1.dir"); File store = new File(storePath); - FileUtil.strongDelete(store); + FileUtil.delete(store); store.mkdir(); new File(store, "5/doc").mkdirs(); diff --git a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java index a358cfaf9..6662c59ce 100644 --- a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java +++ b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java @@ -695,7 +695,7 @@ public void testAppendContent() throws PersistenceException, IOException { "text/plain; fileNameCharset=UTF-8", fis); testSubject.appendContent(null, "doc.5", contentStream, false); } finally { - FileUtil.strongDelete(content); + FileUtil.delete(content); } // Upload a second chunk @@ -706,7 +706,7 @@ public void testAppendContent() throws PersistenceException, IOException { "text/plain; fileNameCharset=UTF-8", fis); testSubject.appendContent(null, "doc.5", contentStream, true); } finally { - FileUtil.strongDelete(content); + FileUtil.delete(content); } Storer storer = (Storer) context.getBean("Storer"); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java index 675234fa8..844a3fff0 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java @@ -583,7 +583,7 @@ public Document copyResource(Document doc, String fileVersion, String suffix, St log.error(e.getMessage(), e); return null; } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java index 93965d24b..0e7bf7933 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java @@ -335,7 +335,7 @@ public List extractAttachments(Document doc, String filterFileName, St createdDocs.add(attDoc); } finally { if (tmpFile != null) - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java index 105317f97..5946f8293 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java @@ -623,7 +623,7 @@ private void historycizeOutgoingEmail(EMail email, MimeMessage message, Internet log.warn("Cannot historycize the email with subject '{}' sent to {}", email.getSubject(), email.getAllRecipientsEmails(), t); } finally { - FileUtil.strongDelete(emlFile); + FileUtil.delete(emlFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java index 25ace7936..36b0feb74 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java @@ -55,7 +55,7 @@ protected void convertMultipleEntries(String sid, Document document, File dest, throw new IOException("Error in Zip conversion", e); } finally { if (tempFile != null) - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } @@ -79,7 +79,7 @@ protected void convertSingleEntry(String sid, Document document, File src, File converter.convert(sid, document, uncompressedEntryFile, dest); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java index 852d22b46..a349badf4 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java @@ -170,8 +170,8 @@ public void convertToPdf(Document document, String fileVersion, String sid) thro storer.store(dest, document.getId(), resource); } finally { // Delete temporary resources - FileUtil.strongDelete(src); - FileUtil.strongDelete(dest); + FileUtil.delete(src); + FileUtil.delete(dest); } } @@ -229,7 +229,7 @@ public Document convert(Document document, String fileVersion, String format, Do throw new IOException("The conversion was not done"); } finally { // Delete temporary resources - FileUtil.strongDelete(out); + FileUtil.delete(out); } } @@ -251,7 +251,7 @@ public void convertToFile(Document document, String fileVersion, File out, Docum if (converter == null) return; - FileUtil.strongDelete(out); + FileUtil.delete(out); // Prepare I/O files File src = null; @@ -279,7 +279,7 @@ public void convertToFile(Document document, String fileVersion, File out, Docum } } finally { // Delete temporary resources - FileUtil.strongDelete(src); + FileUtil.delete(src); } } @@ -304,7 +304,7 @@ public void convertFile(File in, String inFilename, File out, String outFormat, if (!in.exists() || in.length() == 0) throw new IOException(String.format("Unexisting source file %s", in)); - FileUtil.strongDelete(out); + FileUtil.delete(out); converter.convert(in, out); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java index 93f300d57..4dd1cfeaf 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java @@ -46,7 +46,7 @@ public void internalConvert(String sid, Document document, File src, File dest) } catch (Exception e) { throw new IOException(e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java index d9d985aad..adc9e4d7f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java @@ -45,7 +45,7 @@ public void internalConvert(String sid, Document document, File src, File dest) FileUtil.writeFile(listing, tempFile.getAbsolutePath()); converter.convert(sid, document, tempFile, dest); } finally { - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java index 2d043ac8f..dccc923aa 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java @@ -87,9 +87,9 @@ public void internalConvert(String sid, Document document, File src, File dest) } } finally { if (xslt != null) - FileUtil.strongDelete(xslt); + FileUtil.delete(xslt); if (xml != null) - FileUtil.strongDelete(xml); + FileUtil.delete(xml); } } @@ -152,7 +152,7 @@ private void convert(String sid, Document document, File dest, String destExt, F converter.convert(sid, document, transformedFile, dest); } finally { if (transformedFile != null) - FileUtil.strongDelete(transformedFile); + FileUtil.delete(transformedFile); } } } catch (FileNotFoundException | TransformerException e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java index dade05c57..3d499441e 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java @@ -48,7 +48,7 @@ private void convertGZip(String sid, Document document, File src, File dest) thr converter.convert(sid, document, ungzippedFile, dest); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java index d31bc3dda..d6974bd96 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java @@ -1708,8 +1708,8 @@ public Document merge(Collection documents, long targetFolderId, Strin DocumentManager manager = (DocumentManager) Context.get().getBean(DocumentManager.class); return manager.create(bigPdf, docVO, transaction); } finally { - FileUtil.strongDelete(bigPdf); - FileUtil.strongDelete(tempDir); + FileUtil.delete(bigPdf); + FileUtil.delete(tempDir); } } @@ -1813,26 +1813,26 @@ public Document mapRow(ResultSet rs, int arg1) throws SQLException { log.info("Destroyed {} aliases of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_tag where ld_docid = " + docId); - log.info("Destroyed {} tags of document {}", documentTag); + log.info("Destroyed {} tags of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_link where ld_docid1 = " + docId + " or ld_docid2 = " + docId); - log.info("Destroyed {} links of document {}", documentTag); + log.info("Destroyed {} links of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_bookmark where ld_type=0 and ld_docid = " + docId); - log.info("Destroyed {} bookmarks of document {}", documentTag); + log.info("Destroyed {} bookmarks of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_ticket where ld_docid = " + docId); - log.info("Destroyed {} tickets of document {}", documentTag); + log.info("Destroyed {} tickets of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_note where ld_docid = " + docId); - log.info("Destroyed {} notes of document {}", documentTag); + log.info("Destroyed {} notes of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_history where ld_docid = " + docId); - log.info("Destroyed {} histories of document {}", documentTag); + log.info("Destroyed {} histories of document {}", count, documentTag); try { count = documentDAO.jdbcUpdate("delete from ld_readingrequest where ld_docid = " + docId); - log.info("Destroyed {} reading requests of document {}", documentTag); + log.info("Destroyed {} reading requests of document {}", documentTag, docId); } catch (Exception e) { // Ignore because the table may not exist } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java index c924e8f58..57a41c366 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java @@ -90,14 +90,14 @@ public synchronized void buildThumbnail(String sid, Document document, String fi if (pdfBuilder != null) pdfBuilder.buildThumbnail(sid, document, fileVersion, pdf, dest, size, compression); } finally { - FileUtil.strongDelete(pdf); + FileUtil.delete(pdf); } } } } catch (Exception e) { throw new IOException("Thumbnail building " + e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java index efe38e7b4..b4cdb081c 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java @@ -30,7 +30,7 @@ public synchronized void buildThumbnail(String sid, Document document, String fi } catch (Exception e) { throw new IOException("Thumbnail building " + e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java index 07e8da8b4..e56b57bf6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java @@ -151,8 +151,8 @@ protected void createImage(Document document, String fileVersion, int size, Inte log.warn("Error rendering image for document: {} - {}", document.getId(), document.getFileName(), e); } finally { // Delete temporary resources - FileUtil.strongDelete(src); - FileUtil.strongDelete(dest); + FileUtil.delete(src); + FileUtil.delete(dest); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java index 63d8fc991..603b37343 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java @@ -87,7 +87,7 @@ public static void cropImageToFile(String content, ImageZone zone, File file) th saveImage(content, tmpFile); cropImageToFile(tmpFile, zone, file); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -288,7 +288,7 @@ public static void printFirstPage(File originalFile, String originalFileName, Fi } GhostUtil.print(pdfFile, out, 1); } finally { - FileUtil.strongDelete(pdfFile); + FileUtil.delete(pdfFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java index a5d5b2e47..ebe07f700 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java @@ -82,9 +82,9 @@ private void parse1(InputStream input, ParseParameters parameters, StringBuilder log.error(t.getMessage(), t); } finally { if (inputFile != null && inputFile.exists()) - FileUtil.strongDelete(inputFile); + FileUtil.delete(inputFile); if (outputPdf != null && outputPdf.exists()) - FileUtil.strongDelete(outputPdf); + FileUtil.delete(outputPdf); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java index 62de828cc..84955f894 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java @@ -41,7 +41,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java index 8bc08942b..094dac3c6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java @@ -39,7 +39,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB else log.warn("Failed to extract HTML text content"); } finally { - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java index e5ca1ba9a..cad38810c 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java @@ -95,7 +95,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } } } finally { - FileUtil.strongDelete(mainDocXml); + FileUtil.delete(mainDocXml); } } catch (Exception e) { log.warn("Failed to extract KOffice text content", e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java index 5d5abd860..7ba1df90f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java @@ -200,7 +200,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } } } finally { - FileUtil.strongDelete(contentXml); + FileUtil.delete(contentXml); } } catch (Exception e) { log.warn("Failed to extract OpenOffice text content", e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java index ea8e7783a..93835f565 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (rarFile != null) - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } return 1; } @@ -111,7 +111,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java index 52093f185..7a3309084 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(sevenFile); + FileUtil.delete(sevenFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (rarFile != null) - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } return 1; } @@ -111,7 +111,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java index 4c02b05ba..552ed9293 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (tarFile != null) - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } return 1; } @@ -108,7 +108,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java index 65dbac358..3c18a0f2d 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java @@ -49,7 +49,7 @@ private void internalParseGZip(InputStream input, ParseParameters parameters, St } } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } @@ -109,11 +109,11 @@ private void internalParseZip(InputStream input, ParseParameters parameters, Str content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -129,7 +129,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (zipFile != null) - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } else { File ungzippedFile = null; @@ -142,7 +142,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } return 1; @@ -170,7 +170,7 @@ public int countPages(File input, String filename) { log.error(t.getMessage(), t); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } return 1; @@ -197,7 +197,7 @@ private int countPagesInZipFile(File zipFile) throws IOException { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java index 4248afb7b..d0552ab3a 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java @@ -419,7 +419,7 @@ public synchronized void unlock() { directory.obtainLock(IndexWriter.WRITE_LOCK_NAME).close(); } catch (Exception e) { log.warn("unlock {}", e.getMessage()); - FileUtil.strongDelete(new File(getIndexDataFolder(), "write.lock")); + FileUtil.delete(new File(getIndexDataFolder(), "write.lock")); } } @@ -556,7 +556,7 @@ public synchronized void close() { unlock(); server.getCoreContainer().shutdown(); server.close(); - FileUtil.strongDelete(new File(getIndexDataFolder(), IndexWriter.WRITE_LOCK_NAME)); + FileUtil.delete(new File(getIndexDataFolder(), IndexWriter.WRITE_LOCK_NAME)); } catch (Exception e) { log.warn(e.getMessage(), e); } @@ -619,7 +619,7 @@ public void init() { } // Delete the lock file if it exists - FileUtil.strongDelete(new File(indexHome, "logicaldoc/data/index/" + IndexWriter.WRITE_LOCK_NAME)); + FileUtil.delete(new File(indexHome, "logicaldoc/data/index/" + IndexWriter.WRITE_LOCK_NAME)); CoreContainer container = new CoreContainer(indexHome.toPath(), null); server = new EmbeddedSolrServer(container, LOGICALDOC); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java index ff0e1ddad..1319ae384 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java @@ -64,14 +64,14 @@ public void saveOptions(SearchOptions opt) throws IOException, PersistenceExcept XMLEncoder encoder = new XMLEncoder(out, charset, false, 0)) { encoder.writeObject(opt); } catch (IOException ioe) { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); throw ioe; } try { setOptions(FileUtil.readFile(tmpFile).trim()); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java index 827c286f5..d5cff8648 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java @@ -162,7 +162,7 @@ public void syncDB(String key) throws IOException { * Prepare a temporary folder and hunzip the downloaded file in it */ tmpDir = FileUtil.createTempFile(CONST_GEOLOCATION, null); - FileUtil.strongDelete(tmpDir); + FileUtil.delete(tmpDir); tmpDir.mkdir(); try (ZipUtil zipUtil = new ZipUtil()) { zipUtil.unGZipUnTar(gzFile, tmpDir); @@ -180,12 +180,12 @@ public void syncDB(String key) throws IOException { FileUtil.copyFile(mmdbFile, getDatabaseFile()); - FileUtil.strongDelete(mmdbFile); + FileUtil.delete(mmdbFile); dispose(); } finally { - FileUtil.strongDelete(gzFile); - FileUtil.strongDelete(tmpDir); + FileUtil.delete(gzFile); + FileUtil.delete(tmpDir); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java index 777d46c34..e89dc1051 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java @@ -104,18 +104,6 @@ public List findByUserId(long userId) { query.append(")"); coll = findByQuery(query.toString(), (Map) null, null); - - // Now collect all menus that references the policies of the - // previously found menus - query = new StringBuilder("select _menu from Menu _menu where _menu.securityRef in ("); - query.append(coll.stream().map(m -> Long.toString(m.getId())).collect(Collectors.joining(","))); - query.append(")"); - List tmp = findByQuery(query.toString(), (Map) null, null); - - for (Menu menu : tmp) { - if (!coll.contains(menu)) - coll.add(menu); - } } } catch (Exception e) { log.error(e.getMessage(), e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java index 9c098c5b1..688fce9c5 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java @@ -311,7 +311,7 @@ public boolean test() { log.error(e.getMessage(), e); return false; } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); try { if (exists(0L, resource)) delete(0L, resource); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java index 727e2a220..0d0bda053 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java @@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; import com.logicaldoc.util.io.FileUtil; +import com.logicaldoc.util.io.IOUtil; /** * This class is an implementation of the Storer interface to persist documents @@ -37,19 +38,15 @@ public FSStorer() { @Override public void delete(long docId) { File docDir = getContainer(docId); - while (docDir.exists()) { - FileUtil.strongDelete(docDir); + if (FileUtil.delete(docDir)) logDeletion(docId, docDir.getAbsolutePath()); - } } @Override public void delete(long docId, String resource) { File file = new File(getContainer(docId), resource); - while (file.exists()) { - FileUtil.strongDelete(file); + if (FileUtil.delete(file)) logDeletion(docId, file.getAbsolutePath()); - } } /** @@ -71,7 +68,7 @@ public File getRoot() { @Override public void store(File file, long docId, String resource) throws IOException { checkEnabled(); - + checkNotEmpty(file); File dir = getContainer(docId); @@ -98,11 +95,7 @@ public void store(InputStream stream, long docId, String resource) throws IOExce } catch (Exception e) { throw new IOException(e.getMessage(), e); } finally { - try { - stream.close(); - } catch (IOException e) { - // Nothing to do - } + IOUtil.close(stream); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java index 9bdbaf9bf..07310f304 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java @@ -6,9 +6,8 @@ import java.io.InputStream; import java.util.List; -import org.apache.commons.io.FileUtils; - import com.logicaldoc.util.Context; +import com.logicaldoc.util.io.FileUtil; /** * This is basically a {@link FSStorer} but with a flag that if active makes the @@ -45,12 +44,17 @@ public void store(File file, long docId, String resource) throws IOException { @Override public void store(InputStream stream, long docId, String resource) throws IOException { - if (errorOnStore) + if (errorOnStore) { + stream.close(); throw new IOException("error"); - if (useDummyFile) + } + + if (useDummyFile) { + stream.close(); super.store(new FileInputStream(dummyFile), docId, resource); - else + } else { super.store(stream, docId, resource); + } } @Override @@ -92,7 +96,7 @@ public int moveResourcesToStore(long docId, int targetStorageId) throws IOExcept moved++; // Delete the original resource - FileUtils.deleteQuietly(sourceFile); + FileUtil.delete(sourceFile); } return moved; diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java index fc893c947..f17d7cbea 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java @@ -51,7 +51,7 @@ public static File mergePdf(List pdfs) throws IOException { return dst; } finally { - FileUtil.strongDelete(tempDir); + FileUtil.delete(tempDir); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java index d2f1a11b3..40aefc1b6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java @@ -139,7 +139,7 @@ public static void saveAvatar(User user, File avatarImageFile) { } catch (Exception t) { log.warn(ERROR_GENERATING_DEFAULT_THE_AVATAR_FOR_USER, user, t); } finally { - FileUtil.strongDelete(tmpAvatarImage); + FileUtil.delete(tmpAvatarImage); } } @@ -177,7 +177,7 @@ public static void generateDefaultAvatar(User user) { if (log.isDebugEnabled()) log.debug(ERROR_GENERATING_DEFAULT_THE_AVATAR_FOR_USER, user, t); } finally { - FileUtil.strongDelete(tmpAvatarImage); + FileUtil.delete(tmpAvatarImage); } } diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java index ee9d79f9c..e493b47c8 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java @@ -30,6 +30,10 @@ public abstract class AbstractCoreTestCase extends AbstractTestCase { protected static Logger log = LoggerFactory.getLogger(AbstractCoreTestCase.class); + protected File rootStoreOne; + + protected File rootStoreTwo; + @Before @Override public void setUp() throws FileNotFoundException, IOException, SQLException, PluginException { @@ -43,32 +47,34 @@ protected List getDatabaseScripts() { } private void prepareStore() throws IOException { - String storePath = Context.get().getProperties().getProperty("store.1.dir"); - File store1 = new File(storePath); - FileUtil.strongDelete(store1); - store1.mkdir(); - - File store2 = new File(Context.get().getProperties().getProperty("store.2.dir")); - FileUtil.strongDelete(store2); - store2.mkdir(); + /** + * For each test we must prepare different storage folders because + * re-using the same paths cause locks + */ + rootStoreOne = new File(Context.get().getProperties().getProperty("store.1.dir")); + rootStoreTwo = new File(Context.get().getProperties().getProperty("store.2.dir")); Storer storer = (Storer) context.getBean("Storer"); storer.init(); + /* + * In order to minimize the locks, we write the file only if really + * needed + */ + // Store the file of document 1 - FileUtil.copyResource("/Digital_Day.pdf", new File(storePath + "/1/doc/1.0")); - try { - FileUtil.copyResource("/Digital_Day.pdf", new File(storePath + "/1/doc/1.0-conversion.pdf")); - } catch (Exception e) { - log.warn(e.getMessage(), e); - } + FileUtil.copyResource("/loremipsum.pdf", new File(rootStoreOne.getPath() + "/1/doc/1.0")); + FileUtil.copyResource("/loremipsum.pdf", new File(rootStoreOne.getPath() + "/1/doc/1.0-conversion.pdf")); // Store the file of document 3 - FileUtil.copyResource("/small.pdf", new File(storePath + "/3/doc/1.3")); + FileUtil.copyResource("/small.pdf", new File(rootStoreOne.getPath() + "/3/doc/1.3")); } @Override public void tearDown() throws SQLException { super.tearDown(); + + FileUtil.delete(rootStoreOne); + FileUtil.delete(rootStoreTwo); } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java index b3a1cd2d2..42f464f71 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java @@ -176,8 +176,8 @@ public Long call() throws Exception { // copyFileUsingJava7Files(file, copy); // System.out.println("Copied file " + copy.getPath()); - FileUtil.strongDelete(file); - FileUtil.strongDelete(copy); + FileUtil.delete(file); + FileUtil.delete(copy); return 0L; } } diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java index 7d425529a..92957ae90 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java @@ -248,7 +248,7 @@ public void testReadAsString() throws Exception { Document doc = testSubject.findById(1L); String result = testSubject.readAsString(doc.getId(), doc.getFileVersion(), null); assertNotNull(result); - assertTrue(result.contains("Linearized")); + assertTrue(result.contains("DocChecksum")); } @Test @@ -389,6 +389,6 @@ public void testCountPages() throws Exception { public void testParse() throws Exception { Document doc = testSubject.findById(1); String text = testSubject.parse(doc, doc.getFileVersion()); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java index f84246a6b..99c704092 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java @@ -52,7 +52,7 @@ public void testInternalConvert() throws PersistenceException, IOException { log.error("Exception during conversion", e); fail(); } finally { - FileUtil.strongDelete(targetFile); + FileUtil.delete(targetFile); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java index a6523e563..39f9dc591 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java @@ -283,7 +283,7 @@ public void testMoveToFolder() throws PersistenceException { public void testParseDocument() throws PersistenceException, ParsingException { Document doc = docDao.findById(1); String text = testSubject.parseDocument(doc, null); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); Folder folder = folderDao.createPath(folderDao.findById(Folder.ROOTID), "/Default/test", true, null); @@ -292,7 +292,7 @@ public void testParseDocument() throws PersistenceException, ParsingException { transaction.setUser(userDao.findByUsername("admin")); Document alias = testSubject.createAlias(doc, folder, null, transaction); text = testSubject.parseDocument(alias, null); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); } @Test @@ -328,7 +328,7 @@ public void testEnforceFilesIntoFolderStorage() String store2Root = Context.get().getProperties().getProperty("store.2.dir"); assertTrue(new File(storeRoot + "/1/doc/" + doc.getFileVersion()).exists()); - FileUtil.strongDelete(new File(store2Root + "/1/doc/")); + FileUtil.delete(new File(store2Root + "/1/doc/")); transaction = new DocumentHistory(); transaction.setUser(user); @@ -858,7 +858,7 @@ public void testPromoteVersion() throws PersistenceException, IOException, Inter testSubject.promoteVersion(3L, "1.3", history); } finally { storer.setUseDummyFile(false); - FileUtil.strongDelete(dummyFile); + FileUtil.delete(dummyFile); } doc = docDao.findById(3L); diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java index 6ee8d2c8d..fd093be07 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java @@ -110,9 +110,9 @@ public void testUpdateDigest() throws PersistenceException, IOException { dao.initialize(doc); assertEquals("xx", doc.getDigest()); - String filePath = "target/store/1/doc/" + doc.getFileVersion(); - assertTrue(new File(filePath).exists()); - String digest = FileUtil.computeDigest(new File(filePath)); + File file = new File(rootStoreOne.getAbsolutePath() + "/1/doc/" + doc.getFileVersion()); + assertTrue(file.exists()); + String digest = FileUtil.computeDigest(file); dao.updateDigest(doc); assertEquals(digest, doc.getDigest()); diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java index e43007b14..38f744adc 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java @@ -7,6 +7,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.sql.SQLException; import java.util.List; @@ -87,52 +88,58 @@ public void testStore() throws PersistenceException, InterruptedException, IOExc user.setUsername("admin"); user.setName("xx"); user.setFirstName("xx"); - - int versionsCap=Context.get().getProperties().getInt("document.maxversions"); + + int versionsCap = Context.get().getProperties().getInt("document.maxversions"); assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); Storer storer = (Storer) Context.get().getBean(Storer.class); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), res); + storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), res); } for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); } - + Version version = Version.create(doc, user, "", DocumentEvent.STORED.toString(), true); testSubject.store(version); assertEquals("1.0", testSubject.findById(version.getId()).getVersion()); - + String resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); - } - + } + version = Version.create(doc, user, "", DocumentEvent.CHANGED.toString(), true); testSubject.store(version); assertEquals("2.0", version.getVersion()); - + resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); } - + version = Version.create(doc, user, "", DocumentEvent.CHECKEDIN.toString(), false); testSubject.store(version); assertEquals("2.1", version.getVersion()); - + resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); diff --git a/logicaldoc-core/src/test/resources/log4j2.xml b/logicaldoc-core/src/test/resources/log4j2.xml index d1d43d44a..d61b1782d 100644 --- a/logicaldoc-core/src/test/resources/log4j2.xml +++ b/logicaldoc-core/src/test/resources/log4j2.xml @@ -43,10 +43,17 @@ + + + + + + + diff --git a/logicaldoc-core/src/test/resources/loremipsum.pdf b/logicaldoc-core/src/test/resources/loremipsum.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d44571857f1b8c1655888d58f65766d83d5ed115 GIT binary patch literal 99861 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%0DS>{0et~||22J|1Kz*t%k*Ei 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 maximize()); @@ -89,21 +94,21 @@ private void onSave() { if (!noteForm.validate()) return; - DocumentService.Instance.get().updateNote(docId, noteId, message.getValue().toString(), - new AsyncCallback<>() { - - @Override - public void onFailure(Throwable caught) { - GuiLog.serverError(caught); - destroy(); - } - - @Override - public void onSuccess(Void result) { - notesPanel.refresh(); - destroy(); - } - }); + DocumentService.Instance.get().updateNote(docId, noteId, fileVersion, message.getValue().toString(), new AsyncCallback<>() { + + @Override + public void onFailure(Throwable caught) { + GuiLog.serverError(caught); + destroy(); + } + + @Override + public void onSuccess(Void result) { + if (saveHandler != null) + saveHandler.onChanged(null); + destroy(); + } + }); } private void resetDimensions() { diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java index de90ef160..1c3174e2d 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java @@ -65,9 +65,6 @@ public void refresh() { ListGridField id = new ListGridField("id", I18N.message("id"), 50); id.setHidden(true); - ListGridField userId = new ListGridField(USER_ID, "userid", 50); - userId.setHidden(true); - UserListGridField user = new UserListGridField("user", USER_ID, "author"); ListGridField date = new DateListGridField("date", "date"); @@ -75,6 +72,9 @@ public void refresh() { page.setAutoFitWidth(true); page.setAlign(Alignment.CENTER); + ListGridField fileVersion = new ListGridField("fileVersion", I18N.message("fileversion"), 50); + fileVersion.setHidden(true); + ListGridField content = new ListGridField(MESSAGE, I18N.message("content"), 70); content.setWidth("*"); @@ -83,24 +83,25 @@ public void refresh() { notesGrid.setCanFreezeFields(true); notesGrid.setAutoFetchData(true); notesGrid.setDataSource(new NotesDS(null, document.getId(), document.getFileVersion(), null)); - notesGrid.setFields(id, userId, user, date, page, content); + notesGrid.setFields(id, user, date, page, fileVersion, content); toolStrip = new ToolStrip(); toolStrip.setWidth100(); ToolStripButton addNote = new ToolStripButton(I18N.message("addnote")); - addNote.addClickHandler(event -> new NoteUpdateDialog(document.getId(), 0L, null, NotesPanel.this).show()); + addNote.addClickHandler( + click -> new NoteUpdateDialog(document.getId(), 0L, null, null, save -> refresh()).show()); ToolStripButton annotations = new ToolStripButton(I18N.message("annotations")); annotations.addClickHandler( - event -> new com.logicaldoc.gui.frontend.client.document.note.AnnotationsWindow(document, null, + click -> new com.logicaldoc.gui.frontend.client.document.note.AnnotationsWindow(document, null, NotesPanel.this, true).show()); ToolStripButton export = new ToolStripButton(I18N.message("export")); - export.addClickHandler(event -> GridUtil.exportCSV(notesGrid, true)); + export.addClickHandler(click -> GridUtil.exportCSV(notesGrid, true)); ToolStripButton print = new ToolStripButton(I18N.message("print")); - print.addClickHandler(event -> GridUtil.print(notesGrid)); + print.addClickHandler(click -> GridUtil.print(notesGrid)); if (document.getFolder().isWrite()) { toolStrip.addButton(addNote); @@ -133,8 +134,8 @@ public void refresh() { edit.setEnabled(false); edit.addClickHandler(clickEvent -> { NoteUpdateDialog note = new NoteUpdateDialog(document.getId(), - notesGrid.getSelectedRecord().getAttributeAsLong("id"), - notesGrid.getSelectedRecord().getAttribute(MESSAGE), NotesPanel.this); + notesGrid.getSelectedRecord().getAttributeAsLong("id"), null, + notesGrid.getSelectedRecord().getAttribute(MESSAGE), save -> refresh()); note.show(); }); diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java index dabd20086..86754fd35 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java @@ -21,15 +21,23 @@ */ public class VersionNotesWindow extends Window { - public VersionNotesWindow(GUIDocument doc, String fileVer) { + private ListGrid notesGrid; + + private GUIDocument document; + + private String fileVersion; + + public VersionNotesWindow(GUIDocument document, String fileVer) { super(); - String fileVersion = fileVer; + fileVersion = fileVer; if (fileVersion == null) - fileVersion = doc.getFileVersion(); + fileVersion = document.getFileVersion(); + + this.document = document; setHeaderControls(HeaderControls.HEADER_LABEL, HeaderControls.CLOSE_BUTTON); - setTitle(I18N.message("notes") + " - " + doc.getFileName() + " v" + fileVersion); + setTitle(I18N.message("notes") + " - " + document.getFileName() + " v" + fileVersion); setWidth100(); setHeight100(); @@ -38,11 +46,41 @@ public VersionNotesWindow(GUIDocument doc, String fileVer) { setShowModalMask(true); centerInPage(); + ToolStrip toolStrip = new ToolStrip(); + toolStrip.setHeight(20); + toolStrip.setWidth100(); + toolStrip.addSpacer(2); + + ToolStripButton close = new ToolStripButton(); + close.setTitle(I18N.message("close")); + close.addClickHandler(event -> destroy()); + + ToolStripButton annotations = new ToolStripButton(); + annotations.setTitle(I18N.message("annotations")); + annotations.addClickHandler(event -> new AnnotationsWindow(document, + fileVer != null ? fileVer : document.getFileVersion(), null, false).show()); + + ToolStripButton addNote = new ToolStripButton(I18N.message("addnote")); + addNote.addClickHandler( + event -> new NoteUpdateDialog(document.getId(), 0L, fileVersion, null, save -> refresh()).show()); + + toolStrip.addButton(annotations); + toolStrip.addSeparator(); + toolStrip.addButton(close); + + addItem(toolStrip); + refresh(); + } + + protected void refresh() { + if (notesGrid != null) + removeItem(notesGrid); + ListGridField id = new ListGridField("id", I18N.message("id"), 50); id.setHidden(true); - ListGridField userId = new ListGridField("userId", "userid", 50); - userId.setHidden(true); + ListGridField fileVersionField = new ListGridField("fileVersion", I18N.message("fileversion"), 50); + fileVersionField.setHidden(true); UserListGridField user = new UserListGridField("user", "userId", "author"); DateListGridField date = new DateListGridField("date", "date"); @@ -58,32 +96,10 @@ public VersionNotesWindow(GUIDocument doc, String fileVer) { notesGrid.setEmptyMessage(I18N.message("notitemstoshow")); notesGrid.setCanFreezeFields(true); notesGrid.setAutoFetchData(true); - notesGrid.setDataSource(new NotesDS(null, doc.getId(), fileVersion, null)); - notesGrid.setFields(id, userId, user, date, page, content); + notesGrid.setDataSource(new NotesDS(null, document.getId(), fileVersion, null)); + notesGrid.setFields(id, user, date, page, fileVersionField, content); notesGrid.setWidth100(); - ToolStrip toolStrip = new ToolStrip(); - toolStrip.setHeight(20); - toolStrip.setWidth100(); - toolStrip.addSpacer(2); - - ToolStripButton close = new ToolStripButton(); - close.setTitle(I18N.message("close")); - close.addClickHandler(event -> destroy()); - - ToolStripButton annotations = new ToolStripButton(); - annotations.setTitle(I18N.message("annotations")); - annotations.addClickHandler(event -> { - AnnotationsWindow annotationWnd = new AnnotationsWindow(doc, - fileVer != null ? fileVer : doc.getFileVersion(), null, false); - annotationWnd.show(); - }); - - toolStrip.addButton(annotations); - toolStrip.addSeparator(); - toolStrip.addButton(close); - - addItem(toolStrip); addItem(notesGrid); } } \ No newline at end of file diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java index 0b482638b..a7603bded 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java @@ -535,11 +535,12 @@ public List createDownloadTicket(long docId, int type, String suffix, In * * @param docId identifier of the document * @param noteId identifier of the note + * @param fileVersion file version to bind the note to * @param note text of the note * * @throws ServerException an error happened in the server application */ - public void updateNote(long docId, long noteId, String note) throws ServerException; + public void updateNote(long docId, long noteId, String fileVersion, String note) throws ServerException; /** * Retrieves the notes of a document diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java index d761f57e2..8affbe439 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java @@ -28,7 +28,7 @@ public interface DocumentServiceAsync { void deleteLinks(List ids, AsyncCallback callback); void delete(List ids, AsyncCallback callback); - + void destroyDocuments(List ids, AsyncCallback callback); void makeImmutable(List ids, String comment, AsyncCallback callback); @@ -70,12 +70,13 @@ void addDocuments(String language, long folderId, boolean importZip, String char void addNote(long docId, String message, AsyncCallback callback); - void bulkUpdate(List ids, GUIDocument vo, boolean ignoreEmptyFields, AsyncCallback> callback); + void bulkUpdate(List ids, GUIDocument vo, boolean ignoreEmptyFields, + AsyncCallback> callback); void addDocuments(boolean importZip, String charset, boolean immediateIndexing, GUIDocument metadata, AsyncCallback> callback); - void updateNote(long docId, long noteId, String message, AsyncCallback callback); + void updateNote(long docId, long noteId, String fileVersion, String message, AsyncCallback callback); void deleteVersions(List ids, AsyncCallback callback); @@ -129,7 +130,8 @@ void saveEmailAttachment(long docId, String fileVersion, String attachmentFileNa void promoteVersion(long docId, String version, AsyncCallback callback); - void getNotes(long docId, String fileVersion, Collection types, AsyncCallback> callback); + void getNotes(long docId, String fileVersion, Collection types, + AsyncCallback> callback); void saveNotes(long docId, List notes, Collection types, AsyncCallback callback); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java index 43e03b4d1..2a58c5407 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java @@ -192,7 +192,7 @@ public synchronized void write() throws IOException { FileUtil.moveQuitely(tmpFile, file); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -239,7 +239,7 @@ private void deleteOldestBackups() throws IOException { List backupsToRetain = oldBackups.stream().limit(maxBackups).toList(); for (File backupFile : oldBackups) if (!backupsToRetain.contains(backupFile)) - FileUtil.strongDelete(backupFile); + FileUtil.delete(backupFile); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java index 2acf337c0..533c1aad1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java @@ -78,7 +78,7 @@ public void encrypt(File inputFile, File outputFile) throws EncryptionException byte[] clearContent = FileUtils.readFileToByteArray(inputFile); byte[] encryptedContent = cipher.doFinal(clearContent); outputFile.mkdirs(); - FileUtil.strongDelete(outputFile); + FileUtil.delete(outputFile); boolean created = outputFile.createNewFile(); if (!created) throw new IOException("Cannot create file " + outputFile.getAbsolutePath()); @@ -99,7 +99,7 @@ public void decrypt(File inputFile, File outputFile) throws EncryptionException byte[] encryptedContent = FileUtils.readFileToByteArray(inputFile); byte[] clearContent = cipher.doFinal(encryptedContent); outputFile.mkdirs(); - FileUtil.strongDelete(outputFile); + FileUtil.delete(outputFile); boolean created = outputFile.createNewFile(); if (!created) throw new IOException("Cannot create file " + outputFile.getAbsolutePath()); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java index a5df50eb6..348c289b4 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java @@ -253,6 +253,17 @@ public int exec(final String commandLine, String[] env, File dir, StringBuilder final Process process = Runtime.getRuntime().exec(commandLine, env, dir); + String commandForLog = " (" + commandForLog(commandLine) + ")"; + StreamEater errEater = new StreamEater(errPrefix + commandForLog, process.getErrorStream()); + + StreamEater outEater = new StreamEater(outPrefix + commandForLog, process.getInputStream(), buffer); + + Thread a = new Thread(errEater); + a.start(); + + Thread b = new Thread(outEater); + b.start(); + if (timeout > 0) { ExecutorService service = Executors.newSingleThreadExecutor(); try { @@ -273,17 +284,6 @@ public int exec(final String commandLine, String[] env, File dir, StringBuilder } } - String commandForLog = " (" + commandForLog(commandLine) + ")"; - StreamEater errEater = new StreamEater(errPrefix + commandForLog, process.getErrorStream()); - - StreamEater outEater = new StreamEater(outPrefix + commandForLog, process.getInputStream(), buffer); - - Thread a = new Thread(errEater); - a.start(); - - Thread b = new Thread(outEater); - b.start(); - try { exit = process.waitFor(); } catch (InterruptedException e) { diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java index 77a5db7f5..e1a2e4ff1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java @@ -6,8 +6,13 @@ import java.io.InputStreamReader; import java.io.Writer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class StreamEater implements Runnable { + protected static Logger log = LoggerFactory.getLogger(StreamEater.class); + private InputStream inputStream; private String prefix; @@ -35,19 +40,17 @@ public StreamEater(String prefix, InputStream stream) { } public void run() { - try (InputStreamReader isr = new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(isr);) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));) { String line = br.readLine(); - boolean firstLine = true; while (line != null) { - writeLine(line, firstLine); + writeLine(line); if (buffer != null) { - if (!firstLine) + if(!buffer.isEmpty()) buffer.append("\n"); buffer.append(line); } - firstLine = false; line = br.readLine(); } } catch (IOException e) { @@ -55,13 +58,11 @@ public void run() { } } - private void writeLine(String line, boolean firstLine) throws IOException { + private void writeLine(String line) throws IOException { if (prefix != null) - System.out.println(prefix + ": " + line); + log.debug("{}: {}", prefix, line); if (output != null && line != null) { - if (!firstLine) - output.write("\n"); output.write(line); output.flush(); } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java index c22d20102..22e31af60 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java @@ -71,7 +71,7 @@ public int available() throws IOException { public void close() throws IOException { wrappedStream.close(); if (file != null) - FileUtil.strongDelete(file); + FileUtil.delete(file); } @Override diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java index 2849bde6c..07e56165c 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java @@ -22,6 +22,6 @@ public AutoDeleteZipInputStream(net.lingala.zip4j.io.inputstream.ZipInputStream public void close() throws IOException { wrapped.close(); if (zipFile != null) - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } \ No newline at end of file diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java index 97d4c72a8..6b4ed49f1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java @@ -13,6 +13,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; +import java.net.URL; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; @@ -28,6 +29,7 @@ import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Locale; import java.util.StringTokenizer; @@ -44,6 +46,8 @@ import org.slf4j.LoggerFactory; import org.springframework.util.CollectionUtils; +import com.logicaldoc.util.time.TimeDiff; + /** * This class manages I/O operations with files. * @@ -99,7 +103,8 @@ public static void writeFile(byte[] in, String filepath) throws IOException { } public static void writeFile(String text, String filepath) { - try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filepath));) { + try (FileOutputStream fos = new FileOutputStream(filepath); + BufferedOutputStream bos = new BufferedOutputStream(fos);) { bos.write(text.getBytes(StandardCharsets.UTF_8)); bos.flush(); } catch (Exception e) { @@ -120,6 +125,7 @@ public static String readFile(String filePath) throws IOException { public static void appendFile(String text, String filepath) { try (OutputStream bos = new FileOutputStream(filepath, true);) { bos.write(text.getBytes()); + bos.flush(); } catch (Exception e) { logError(e.getLocalizedMessage()); } @@ -220,26 +226,23 @@ public static String computeDigest(String src) { */ public static void copyResource(String resourceName, File out) throws IOException { out.getParentFile().mkdirs(); - InputStream is = null; - try { - try { - is = new BufferedInputStream(FileUtil.class.getResource(resourceName).openStream()); - } catch (Exception e) { - is = new BufferedInputStream( - Thread.currentThread().getContextClassLoader().getResource(resourceName).openStream()); - } - try (OutputStream os = new BufferedOutputStream(new FileOutputStream(out));) { - for (;;) { - int b = is.read(); - if (b == -1) - break; - os.write(b); - } + URL resourceUrl = FileUtil.class.getResource(resourceName); + if (resourceUrl == null) + resourceUrl = Thread.currentThread().getContextClassLoader().getResource(resourceName); + if (resourceUrl == null) + throw new IOException("Resource cannot be found: " + resourceName); + + try (InputStream is = resourceUrl.openStream(); + BufferedInputStream bis = new BufferedInputStream(is); + OutputStream os = new FileOutputStream(out); + BufferedOutputStream bos = new BufferedOutputStream(os);) { + for (;;) { + int b = is.read(); + if (b == -1) + break; + os.write(b); } - } finally { - if (is != null) - is.close(); } } @@ -578,27 +581,40 @@ public static void copyFile(File source, File target) throws IOException { } } - public static void strongDelete(File file) { + /** + * + * Deletes a file doing the best effort + * + * @param file the file to delete + * @return true inly if the deletion has been done successfully + */ + public static boolean delete(File file) { /* * Better to deleteQuitely first because the forceDelete seems to cause * locks at least on Windows when there are frequent deletions. Even * directly using the Windows command rd produces the same behavior */ - if (file != null && file.exists()) - if (!FileUtils.deleteQuietly(file)) { - log.debug("Cannot delete file/folder {}", file.getAbsolutePath()); - - // We could not delete the file so at least try to append .DELETE suffix - moveQuitely(file, new File(file.getParent(), file.getName() + ".DELETE")); - } + Date start = new Date(); + try { + return FileUtils.deleteQuietly(file); + } finally { + if (log.isDebugEnabled()) + log.debug("Deleted path {} in {}", file.getAbsolutePath(), TimeDiff.printDuration(start, new Date())); + } } public static void moveQuitely(File source, File target) { + Date start = new Date(); try { Files.move(source.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { + } catch (Exception e) { log.warn("Cannot move {} into {}", source.getAbsolutePath(), target.getAbsolutePath()); + log.warn(e.getMessage(), e); + } finally { + if (log.isDebugEnabled()) + log.debug("Moved path {} into {}", source.getAbsolutePath(), target.getAbsolutePath(), + TimeDiff.printDuration(start, new Date())); } } @@ -653,7 +669,8 @@ public static List split(File file, long chunkSize, File destDir) throws I int maxReadBufferSize = 8 * 1024; // 8KB for (int destIx = 1; destIx <= numSplits; destIx++) { File chunkFile = new File(destDir, nf.format(destIx)); - try (BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(chunkFile));) { + try (FileOutputStream fos = new FileOutputStream(chunkFile); + BufferedOutputStream bw = new BufferedOutputStream(fos);) { if (chunkSize > maxReadBufferSize) { long numReads = chunkSize / maxReadBufferSize; long numRemainingRead = chunkSize % maxReadBufferSize; @@ -672,9 +689,10 @@ public static List split(File file, long chunkSize, File destDir) throws I if (remainingBytes > 0) { File chunkFile = new File(destDir, nf.format(numSplits + 1)); - BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(chunkFile)); - readWrite(raf, bw, remainingBytes); - bw.close(); + try (FileOutputStream fos = new FileOutputStream(chunkFile); + BufferedOutputStream bos = new BufferedOutputStream(fos);) { + readWrite(raf, bos, remainingBytes); + } chunks.add(chunkFile); } } @@ -733,8 +751,8 @@ public static File createTempFile(String prefix, String suffix) throws IOExcepti * Creates an empty folder in the default temporary-file directory, using * the given prefix to generate its name. * - * @param prefix The prefix string to be used in generating the file'sname; - * must be at least three characters longsuffix + * @param prefix The prefix string to be used in generating the folder's + * name; must be at least three characters longsuffix * * @return An abstract pathname denoting a newly-created empty folder * diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java index d0cd91145..ebccfb093 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java @@ -52,10 +52,10 @@ public static InputStream getLimitedStream(InputStream input, long limit) { } public static void write(InputStream input, OutputStream output) throws IOException { - int letter = 0; + int totalBytes = 0; byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; - while ((letter = input.read(buffer)) != -1) { - output.write(buffer, 0, letter); + while ((totalBytes = input.read(buffer)) != -1) { + output.write(buffer, 0, totalBytes); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java index 9bf0acd8f..3222b341e 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java @@ -67,7 +67,7 @@ public void unjar(String jarsource, String target) throws IOException { File targetDir = new File(target); if (targetDir.exists() && targetDir.isFile()) - FileUtil.strongDelete(targetDir); + FileUtil.delete(targetDir); if (!targetDir.exists()) FileUtils.forceMkdir(targetDir); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java index b4024a61c..b9bf9a6b4 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java @@ -525,7 +525,7 @@ public void unGZipUnTar(File tarGzFile, File targetDir) throws IOException { } } finally { if (tarFile != null && tarFile.exists()) - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java index 4f708ff6f..b51d5f0c3 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java @@ -162,7 +162,7 @@ private void createDatabase() throws SQLException, IOException { throw new SQLException(e.getMessage(), e); } } finally { - FileUtil.strongDelete(sqlFile); + FileUtil.delete(sqlFile); } } @@ -181,8 +181,7 @@ private void createDatabase() throws SQLException, IOException { */ private void loadDevelSettings() throws IOException { Properties devSettings = new Properties(); - try (FileReader reader = new FileReader( - new File(System.getProperty(USER_HOME) + "/logicaldoc-dev.properties"))) { + try (FileReader reader = new FileReader(new File(userHome + "/logicaldoc-dev.properties"))) { devSettings.load(reader); for (Map.Entry entry : devSettings.entrySet()) System.setProperty(entry.getKey().toString(), entry.getValue().toString()); @@ -190,9 +189,7 @@ private void loadDevelSettings() throws IOException { } protected void createTestDirs() { - FileUtil.strongDelete(tempDir); - FileUtil.strongDelete(tempDir); - FileUtil.strongDelete(tempDir); + FileUtil.delete(tempDir); tempDir.mkdirs(); } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java index 93024d4b6..cf4ec3a94 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java @@ -1,36 +1,28 @@ package com.logicaldoc.util; -import java.util.Date; - import org.apache.commons.lang.StringEscapeUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document.OutputSettings; import org.jsoup.safety.Safelist; -import com.logicaldoc.util.crypt.CryptUtil; -import com.logicaldoc.util.time.DateUtil; - public class UtilWorkbench { - /** - * @param args - * @throws Exception - */ public static void main(String[] args) throws Exception { - String unsafeHtmlContent="TEST<<img src=1 onerror=confirm(document.domain)>>TEST2"; - + String unsafeHtmlContent = "TEST<<img src=1 onerror=confirm(document.domain)>>TEST2"; + OutputSettings outputSettings = new OutputSettings().indentAmount(0).prettyPrint(false); Safelist whiteList = Safelist.simpleText().preserveRelativeLinks(false); - - String previousSanitized=""; - String sanitized = StringEscapeUtils.unescapeHtml(Jsoup.clean(unsafeHtmlContent, "", whiteList, outputSettings)); - while(!previousSanitized.equals(sanitized)) { - previousSanitized=sanitized; + + String previousSanitized = ""; + String sanitized = StringEscapeUtils + .unescapeHtml(Jsoup.clean(unsafeHtmlContent, "", whiteList, outputSettings)); + while (!previousSanitized.equals(sanitized)) { + previousSanitized = sanitized; sanitized = StringEscapeUtils.unescapeHtml(Jsoup.clean(previousSanitized, "", whiteList, outputSettings)); } System.out.println(sanitized); - + // File file = new File("target/context.properties"); // ContextProperties context=new ContextProperties(file); // context.setProperty("gui.welcome", "מגיע להופעה בישר�ל ו�ת� נהני� מהטבה ייחודית"); diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java index 1394cc02f..5e8228604 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java @@ -35,9 +35,9 @@ public void setUp() throws IOException { @After public void trearDown() throws IOException { - FileUtil.strongDelete(propsFile); + FileUtil.delete(propsFile); for (File backupFile : contextProperties.getBackups()) { - FileUtil.strongDelete(backupFile); + FileUtil.delete(backupFile); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java index 1d0b8143c..f9d192d2a 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java @@ -41,8 +41,8 @@ public void testEncryptFile() throws IOException, EncryptionException { Assert.assertEquals(clearFile.length(), decryptedFile.length()); } finally { - FileUtil.strongDelete(cryptedFile); - FileUtil.strongDelete(decryptedFile); + FileUtil.delete(cryptedFile); + FileUtil.delete(decryptedFile); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java index 2b207d12f..f53ab754b 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java @@ -174,48 +174,34 @@ public void testExecStringStringArrayFile() { } @Test - public void testExecStringStringArrayFileStringBufferInt() { - File exeFile = new File("target\\test-classes\\nothing.bat @TaylorSwift #Midnights"); + public void testExecStringStringArrayFileStringBufferInt() throws IOException { + File exeFile = new File("target\\test-classes\\nothing.bat \"@TaylorSwift\" \"#Midnights\""); String[] envp = { "TS10=MidnightTS" }; - try { - if (new Exec().isWindows()) { - File userDir = new File(System.getProperty("user.dir")); - StringBuilder sb = new StringBuilder(); - int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sb, 20); - log.info("retval: {}", retval); - assertEquals(0, retval); - log.info("sb: {}", sb); - String out = sb.toString(); - System.out.println(">>" + out); - assertTrue(out.contains("TaylorSwift")); - } - } catch (IOException e) { - e.printStackTrace(); - fail("Unexpected exception was thrown"); + if (new Exec().isWindows()) { + File userDir = new File(System.getProperty("user.dir")); + StringBuilder sb = new StringBuilder(); + int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sb, 20); + assertEquals(0, retval); + assertTrue(sb.toString().toLowerCase().contains("taylorswift")); } } @Test - public void testExecStringStringArrayFileWriterInt() { + public void testExecStringStringArrayFileWriterInt() throws IOException { File exeFile = new File("target\\test-classes\\loop.bat"); String[] envp = { "TS10loopcount=1000000" }; - try { - if (new Exec().isWindows()) { - File userDir = new File(System.getProperty("user.dir")); - StringWriter sw = new StringWriter(); - int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sw, 5); - log.info("retval: {}", retval); - assertEquals(1, retval); - String out = sw.toString(); - assertTrue(out.isEmpty() || out.contains("1000000") || out.contains("Hello World!")); - } - } catch (IOException e) { - e.printStackTrace(); - fail("Unexpected exception was thrown"); + if (new Exec().isWindows()) { + File userDir = new File(System.getProperty("user.dir")); + StringWriter sw = new StringWriter(); + int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sw, 5); + log.info("retval: {}", retval); + assertEquals(1, retval); + String out = sw.toString(); + assertTrue(out.isEmpty() || out.contains("1000000") || out.contains("Hello World!")); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java index ac6a8a9a2..d9172e2d6 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java @@ -10,11 +10,61 @@ import java.io.InputStream; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.IntStream; +import org.apache.commons.io.FileUtils; import org.junit.Test; public class FileUtilTest { + @Test + public void testDelete() throws IOException { + File root = new File("target/test-destroy"); + + int total = 1000; + + for (int i = 0; i < total; i++) { + String x = Integer.toString(i); + String result = IntStream.iterate(0, j -> j + 3).limit((int) Math.ceil(x.length() / 3.0)) + .mapToObj(j -> x.substring(j, Math.min(j + 3, x.length()))).collect(Collectors.joining("/")); + File dir = new File(root.getPath() + "/" + result); + dir.mkdirs(); + dir.mkdir(); + + FileUtil.copyResource("/kofax.rar", new File(root.getPath() + "/1/doc/1.0")); + } + + assertEquals(total, root.listFiles().length); + + for (File dir : root.listFiles()) { + FileUtil.delete(dir); + } + + assertEquals(0, root.listFiles().length); + } + + @Test + public void testWriteFile() throws IOException { + File root = new File("target/test-writefile"); + FileUtils.forceMkdir(root); + int total = 1000; + + for (int i = 0; i < total; i++) { + File outFile = new File(root+"/"+Integer.toString(i)); + FileUtil.writeFile(this.getClass().getResourceAsStream("/kofax.rar") , outFile.getPath() ); + assertTrue(outFile.length() > 0); + assertEquals(new File("src/test/resources/kofax.rar").length(), outFile.length()); + } + + assertEquals(total, root.listFiles().length); + + for (File file : root.listFiles()) { + FileUtil.delete(file); + } + + assertEquals(0, root.listFiles().length); + } + @Test public void testMatch() throws IOException { assertTrue(FileUtil.matches("ReleaseNotes.txt", "*.doc,*.txt", "")); @@ -54,19 +104,6 @@ public void testReplaceInFile() throws IOException { assertFalse(content.contains("test-classes")); } - @Test - public void testWriteFile() throws IOException { - File outFile = new File("target/testwrite.txt"); - try { - FileUtil.writeFile(this.getClass().getResourceAsStream("/context.properties"), outFile.getPath()); - assertTrue(outFile.length() > 0); - assertTrue(FileUtil.readFile(outFile).contains("store.1.dir")); - assertEquals(170, FileUtil.countLines(outFile)); - } finally { - FileUtil.strongDelete(outFile); - } - } - @Test public void testMerge() throws IOException { File merged = new File("target/merged.txt"); @@ -80,7 +117,7 @@ public void testMerge() throws IOException { assertTrue(FileUtil.readFile(merged).contains("newprop")); assertEquals(lines1 + lines2 - 1, FileUtil.countLines(merged)); } finally { - FileUtil.strongDelete(merged); + FileUtil.delete(merged); } final List mergedFiles = List.of(file1, file2, new File("src/test/resources/sql1.sql")); @@ -96,7 +133,7 @@ public void testMerge() throws IOException { } })).getSum() - mergedFiles.size() + 1, FileUtil.countLines(merged)); } finally { - FileUtil.strongDelete(merged); + FileUtil.delete(merged); } } @@ -114,7 +151,7 @@ public void testSplit() throws IOException { assertEquals(source.length() - (chunkSize * (chunks.size() - 1)), chunks.get(chunks.size() - 1).length()); } finally { for (File chunk : chunks) - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } try { @@ -127,7 +164,7 @@ public void testSplit() throws IOException { assertEquals(source.length() - (chunkSize * (chunks.size() - 1)), chunks.get(chunks.size() - 1).length()); } finally { for (File chunk : chunks) - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } } @@ -142,7 +179,7 @@ public void testAppend() throws IOException { FileUtil.appendFile("pippo", outFile.getPath()); assertTrue(FileUtil.readFile(outFile).endsWith("pippo")); } finally { - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } } @@ -157,7 +194,7 @@ public void testWriteUTF8() throws IOException { FileUtil.writeUTF8("pippo", outFile, true); assertTrue(FileUtil.readFile(outFile).endsWith("pippo")); } finally { - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } } @@ -196,7 +233,7 @@ public void testGetFolderSize() throws IOException { FileUtil.copy(file2, new File(subfolder, "context-overide.properties"), 0); assertEquals(file1.length() + file2.length() + file2.length(), FileUtil.getFolderSize(outFolder)); } finally { - FileUtil.strongDelete(outFolder); + FileUtil.delete(outFolder); } } @@ -220,7 +257,7 @@ public void testMoveQuitely() throws IOException { assertFalse(source.exists()); assertTrue(target.exists()); } finally { - FileUtil.strongDelete(outFolder); + FileUtil.delete(outFolder); } } @@ -238,8 +275,8 @@ public void testCreateTempFile() throws IOException { assertTrue(tempFolder.exists()); assertTrue(FileUtil.getName(tempFolder.getName()).startsWith("pippo")); } finally { - FileUtil.strongDelete(tempFile); - FileUtil.strongDelete(tempFolder); + FileUtil.delete(tempFile); + FileUtil.delete(tempFolder); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java index 7d87580e1..2a934e934 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java @@ -24,7 +24,7 @@ public void testGetLimitedStream() throws IOException { assertTrue(content.endsWith("store.1.dir=targe")); assertFalse(content.contains("default.password.occurrence")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } @@ -37,7 +37,7 @@ public void testWrite() throws IOException { assertEquals(new File("src/test/resources/context.properties").length(), file.length()); } finally { IOUtil.close(is); - FileUtil.strongDelete(file); + FileUtil.delete(file); } assertFalse(file.exists()); @@ -47,7 +47,7 @@ public void testWrite() throws IOException { assertEquals(new File("src/test/resources/context.properties").length(), file.length()); } finally { IOUtil.close(is); - FileUtil.strongDelete(file); + FileUtil.delete(file); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java index 6d5323095..16c9d2e25 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java @@ -32,7 +32,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test @@ -43,7 +43,7 @@ public void testUnjar() throws IOException { testSubject.unjar(file.getPath(), "target/test"); assertTrue(test.exists()); } finally { - FileUtil.strongDelete(test); + FileUtil.delete(test); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java index da3e32060..61a22eccb 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java @@ -23,14 +23,14 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { new P7M((byte[]) null).read(); fail("no exception if null content was specified?"); } catch (Exception e) { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { @@ -40,7 +40,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { @@ -53,7 +53,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } P7M p7m = new P7M(this.getClass().getResourceAsStream("/test.p7m")); @@ -61,7 +61,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = IOUtil.readStream(is); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java index f8de3c688..01b305060 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java @@ -33,7 +33,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java index 715aeff01..6e5527145 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java @@ -26,7 +26,7 @@ public void testCopyResource() throws IOException { ResourceUtil.copyResource("/context.xml", out); assertTrue(out.length() > 0); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } @@ -43,7 +43,7 @@ public void testReadAsBytes() throws IOException { IOUtil.write(new ByteArrayInputStream(ResourceUtil.readAsBytes("/context.xml")), out); assertTrue(out.length() > 0); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java index faa4617a1..8aba0ce80 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java @@ -33,7 +33,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java index 46cfdccef..92de126ab 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java @@ -27,7 +27,7 @@ public void testExtractEntry() throws IOException { assertTrue(out.exists()); assertTrue(FileUtil.readFile(out).contains("")); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java index 06d990f43..d54c5c2e0 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java @@ -68,13 +68,13 @@ public void testUnzip() throws IOException { testSubject.unzip(this.getClass().getResourceAsStream("/test.zip"), "abc/test.txt", test); assertTrue(test.exists()); - FileUtil.strongDelete(test); + FileUtil.delete(test); testSubject.unzip(new File("src/test/resources/test.zip"), "/abc/test.txt", test); assertTrue(test.exists()); } finally { - FileUtil.strongDelete(test); - FileUtil.strongDelete(indexXml); + FileUtil.delete(test); + FileUtil.delete(indexXml); } } @@ -139,7 +139,7 @@ public void testZipFile() throws IOException { testSubject.zipFile(new File("src/test/resources/context.properties"), context); assertNotNull(testSubject.getEntryContent(context, "/context.properties")); } finally { - FileUtil.strongDelete(context); + FileUtil.delete(context); } } diff --git a/logicaldoc-util/src/test/resources/log4j2.xml b/logicaldoc-util/src/test/resources/log4j2.xml index cfd15c73b..33545c812 100644 --- a/logicaldoc-util/src/test/resources/log4j2.xml +++ b/logicaldoc-util/src/test/resources/log4j2.xml @@ -21,7 +21,10 @@ - + + + + diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java index dee219786..91f115f29 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java @@ -110,7 +110,7 @@ private void download(HttpServletRequest request, HttpServletResponse response, FileUtils.writeByteArrayToFile(tmp, attachment.getData()); ServletUtil.downloadFile(request, response, tmp, filename); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java index 03171e5c1..baa0f056c 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java @@ -165,7 +165,7 @@ private File prepareAllSupportResources() throws IOException, PersistenceExcepti FileUtil.writeFile(env, buf.getPath()); writeEntry(out, "logicaldoc/conf/environment.txt", buf); - FileUtil.strongDelete(buf); + FileUtil.delete(buf); /* * Discover the tomcat's folder @@ -292,7 +292,7 @@ private void dumpUpdateTable(ZipOutputStream out) throws IOException, Persistenc writeEntry(out, "logicaldoc/updates/updates.csv", buf); } finally { - FileUtil.strongDelete(buf); + FileUtil.delete(buf); } } @@ -332,7 +332,7 @@ private void dumpPatchTable(ZipOutputStream out) throws IOException, Persistence writeEntry(out, "logicaldoc/patches/patches.csv", buf); } finally { - FileUtil.strongDelete(buf); + FileUtil.delete(buf); } } @@ -364,7 +364,7 @@ private OrderedProperties writeContextPropertiesDump(ZipOutputStream out) throws } prop.store(new FileOutputStream(buf), "Support Request"); writeEntry(out, "logicaldoc/conf/context-dump.properties", buf); - FileUtil.strongDelete(buf); + FileUtil.delete(buf); return prop; } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java index f25471370..7fab32fb9 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java @@ -190,7 +190,7 @@ public static Map getReceivedFiles(HttpServletRequest request) { * @param sid The current session ID */ public static void cleanReceivedFiles(String sid) { - FileUtil.strongDelete(getUploadDir(sid)); + FileUtil.delete(getUploadDir(sid)); Map receivedFiles = getReceivedFiles(sid); receivedFiles.clear(); } @@ -201,7 +201,7 @@ public static void cleanReceivedFiles(String sid) { * @param httpSession The current session */ public static void cleanReceivedFiles(HttpSession httpSession) { - FileUtil.strongDelete(getUploadDir(httpSession)); + FileUtil.delete(getUploadDir(httpSession)); getReceivedFiles(httpSession).clear(); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java index 7d296266b..02e3c5772 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java @@ -63,7 +63,7 @@ public void contextDestroyed(ServletContextEvent sce) { onShutdown(); } finally { if (pidCreated) - FileUtil.strongDelete(getPidFile()); + FileUtil.delete(getPidFile()); } } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java index bbf85f140..c7aa658c9 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java @@ -230,7 +230,7 @@ public void destroyDocuments(List docIds) throws ServerException { checkMenu(Menu.DESTROY_DOCUMENTS); log.info("User {} requested the permanent deletion of docuemnts {}", session.getUsername(), docIds); - + DocumentManager manager = (DocumentManager) Context.get().getBean(DocumentManager.class); executeLongRunningOperation("Destroy Documents", () -> { @@ -329,7 +329,7 @@ private void addDocuments(boolean importZip, String charset, boolean immediateIn docs.add(doc); } } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } @@ -353,7 +353,7 @@ private void checkWritePermission(final GUIDocument metadata, final Session sess private void cleanUploadedFiles(Session session) { Map uploadedFilesMap = getUploadedFiles(session.getSid()); for (File uploadedEntry : uploadedFilesMap.values()) - FileUtil.strongDelete(uploadedEntry); + FileUtil.delete(uploadedEntry); } private void importZip(String charset, final GUIDocument metadata, final Session session, Folder parent, @@ -373,7 +373,7 @@ private void importZip(String charset, final GUIDocument metadata, final Session } catch (PersistenceException e) { log.error("Unable to delete temporary file", e); } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -1540,7 +1540,7 @@ private void prepareZipAttachment(EMail mail, List docIds, boolean pdfConv } catch (IOException | PersistenceException t) { log.error(t.getMessage(), t); } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -1555,7 +1555,7 @@ private void writeMessageWithThumbnail(EMail mail, Document doc, String message, } catch (IOException ioe) { log.warn(ioe.getMessage()); } finally { - FileUtil.strongDelete(thumbnailFile); + FileUtil.delete(thumbnailFile); } } @@ -1776,7 +1776,7 @@ public void cleanUploadedFileFolder() throws ServerException { File dir = new File(System.getProperty("java.io.tmpdir") + "/upload/" + session.getSid()); if (dir.exists()) - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Override @@ -2157,7 +2157,7 @@ protected static void checkPublished(User user, Document doc) throws PermissionE } @Override - public void updateNote(long docId, long noteId, String message) throws ServerException { + public void updateNote(long docId, long noteId, String fileVersion, String message) throws ServerException { Session session = validateSession(); try { @@ -2178,7 +2178,7 @@ public void updateNote(long docId, long noteId, String message) throws ServerExc } note.setFileName(document.getFileName()); - note.setFileVersion(document.getFileVersion()); + note.setFileVersion(StringUtils.defaultIfEmpty(fileVersion, document.getFileVersion())); note.setMessage(message); note.setUserId(session.getUser().getId()); note.setUsername(session.getUser().getFullName()); @@ -2798,7 +2798,7 @@ public GUIDocument saveEmailAttachment(long docId, String fileVersion, String at return (GUIDocument) throwServerException(session, log, e); } finally { IOUtils.closeQuietly(is); - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } @@ -3155,7 +3155,7 @@ private String prepareTileAsString(Session session, Document doc) { } catch (IOException e) { log.warn("Cannot generate tile of document {}", doc, e); } finally { - FileUtil.strongDelete(tileFile); + FileUtil.delete(tileFile); } return tile; } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java index 6059878ff..13c7e4245 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java @@ -866,8 +866,8 @@ public void uninstallPlugin(String pluginId) throws ServerException { pluginRegistry.getManager().deactivatePlugin(pluginId); - FileUtil.strongDelete(PluginRegistry.getPluginHome(pluginId)); - FileUtil.strongDelete(pluginJarFile); + FileUtil.delete(PluginRegistry.getPluginHome(pluginId)); + FileUtil.delete(pluginJarFile); if (pluginJarFile.exists()) try { FileUtils.forceDelete(pluginJarFile); @@ -991,7 +991,7 @@ public void installPlugin() throws ServerException { File pluginHome = PluginRegistry.getPluginHome(pluginId); if (pluginHome.exists()) { - FileUtil.strongDelete(pluginHome); + FileUtil.delete(pluginHome); log.info("Deleted existing plugin home {}", pluginHome.getAbsolutePath()); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java index a45d77004..6d4d0e913 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java @@ -99,7 +99,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) { } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { - FileUtil.strongDelete(chartFile); + FileUtil.delete(chartFile); } } diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java index e4a8a6e7d..1e0f015ce 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java @@ -390,7 +390,7 @@ public void testReplaceFile() throws ServerException, IOException { assertTrue(service.getContentAsString(7).contains("replaced contents")); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -621,8 +621,8 @@ public void testMerge() throws ServerException, IOException, InterruptedExceptio assertNotNull(mergedDoc); assertEquals("merged.pdf", mergedDoc.getFileName()); } finally { - FileUtil.strongDelete(pdf1); - FileUtil.strongDelete(pdf2); + FileUtil.delete(pdf1); + FileUtil.delete(pdf2); } } @@ -648,7 +648,7 @@ public void testUpdatePages() throws ServerException, IOException, InterruptedEx assertEquals(2, service.updatePages(createdDocs.get(0).getId())); } finally { - FileUtil.strongDelete(pdf2); + FileUtil.delete(pdf2); } } @@ -1212,7 +1212,7 @@ public void testUpdateNote() throws ServerException { assertEquals(1, notes.size()); assertEquals("message for note 3", notes.get(0).getMessage()); - service.updateNote(4, notes.get(0).getId(), "updated message"); + service.updateNote(4, notes.get(0).getId(), null, "updated message"); List notes2 = service.getNotes(4, null, null); assertEquals(1, notes2.size()); assertEquals(notes.get(0).getId(), notes2.get(0).getId()); diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java index f031a6cde..e0b59218c 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java @@ -430,7 +430,7 @@ public void testSaveAvatar() throws ServerException, PersistenceException, IOExc user = userDAO.findById(1L); assertNotSame(oldAvatar, user.getAvatar()); } finally { - FileUtil.strongDelete(avatarFile); + FileUtil.delete(avatarFile); } } diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java index 29afc0204..88495c79e 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java @@ -60,7 +60,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @Override public void tearDown() throws SQLException { super.tearDown(); - FileUtil.strongDelete(SystemServiceImpl.defaultWebappRootFolder); + FileUtil.delete(SystemServiceImpl.defaultWebappRootFolder); } @Override @@ -144,7 +144,7 @@ public void testRestart() throws ServerException { try { assertTrue(restartFile.exists()); } finally { - FileUtil.strongDelete(restartFile); + FileUtil.delete(restartFile); } } diff --git a/logicaldoc-webapp/src/test/resources/contexttest.properties b/logicaldoc-webapp/src/test/resources/contexttest.properties index 23290717f..0902d90ac 100644 --- a/logicaldoc-webapp/src/test/resources/contexttest.properties +++ b/logicaldoc-webapp/src/test/resources/contexttest.properties @@ -175,6 +175,7 @@ default.smtp.protocol = smtp default.smtp.clientSecret= default.smtp.clientId= default.smtp.clientTenant= +smtp.nosend = true default.ocr.text.threshold=1 default.ocr.resolution.threshold=600 diff --git a/logicaldoc-webapp/src/test/resources/log4j2.xml b/logicaldoc-webapp/src/test/resources/log4j2.xml index 8bdafb155..ccf748d2b 100644 --- a/logicaldoc-webapp/src/test/resources/log4j2.xml +++ b/logicaldoc-webapp/src/test/resources/log4j2.xml @@ -50,6 +50,9 @@ + + + diff --git a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java index 9ae289236..fa152c7a1 100644 --- a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java +++ b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java @@ -137,7 +137,7 @@ public void informCompleted(boolean success) { writeFile(hasContentLength); } - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } private void writeFile(boolean hasContentLength) { diff --git a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java index 938f48c0d..8f1bddaaa 100644 --- a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java +++ b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java @@ -112,7 +112,7 @@ public Object getProperty(Object propertyName) { public void informCompleted(boolean success) { checkCompleted(); completed = true; - FileUtil.strongDelete(inputFile); + FileUtil.delete(inputFile); } public boolean isCompleted() { diff --git a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java index 51b5ee4de..8cef14818 100644 --- a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java +++ b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java @@ -124,7 +124,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro } catch (Exception e) { log.error(e.getMessage(), e); } finally { - FileUtil.strongDelete(chartFile); + FileUtil.delete(chartFile); } } } \ No newline at end of file diff --git a/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java b/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java index f9bcb5efd..309693a76 100644 --- a/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java +++ b/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java @@ -119,7 +119,7 @@ public String call() throws Exception { documentClient.checkin(sid, docId, "soap massive test", wsDoc.getFileName(), false, tmp); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } }