diff --git a/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java b/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java index 81487bebe..84de55adb 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java @@ -70,7 +70,6 @@ import org.lastaflute.web.response.ActionResponse; import org.lastaflute.web.response.HtmlResponse; import org.lastaflute.web.response.StreamResponse; import org.lastaflute.web.ruts.process.ActionRuntime; -import org.lastaflute.web.validation.exception.ValidationErrorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.InputSource; @@ -118,17 +117,18 @@ public class AdminBackupAction extends FessAdminAction { validate(form, messages -> {}, () -> asListHtml()); verifyToken(() -> asListHtml()); final String fileName = form.bulkFile.getFileName(); - File tempFile = null; - try { - tempFile = File.createTempFile("fess_restore_", ".tmp"); - try (final InputStream in = form.bulkFile.getInputStream(); final OutputStream out = new FileOutputStream(tempFile)) { - CopyUtil.copy(in, out); - } + File tempFile = ComponentUtil.getSystemHelper().createTempFile("fess_restore_", ".tmp"); + try (final InputStream in = form.bulkFile.getInputStream(); final OutputStream out = new FileOutputStream(tempFile)) { + CopyUtil.copy(in, out); asyncImport(fileName, tempFile); - } catch (final ValidationErrorException e) { - throw e; - } catch (final Exception e) { - logger.warn("Failed to import " + fileName, e); + } catch (final IOException e) { + logger.warn("Failed to create a temp file.", e); + if (tempFile.exists() && !tempFile.delete()) { + logger.warn("Failed to delete {}.", tempFile.getAbsolutePath()); + } + throwValidationError(messages -> messages.addErrorsFileIsNotSupported(GLOBAL, fileName), () -> { + return asListHtml(); + }); } saveInfo(messages -> messages.addSuccessBulkProcessStarted(GLOBAL)); return redirect(getClass()); // no-op diff --git a/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java b/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java index e0a9dc5af..5a6e73bfa 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java @@ -187,7 +187,7 @@ public class AdminBadwordAction extends FessAdminAction { verifyToken(() -> asDownloadHtml()); return asStream("badword.csv").contentTypeOctetStream().stream(out -> { - final Path tempFile = Files.createTempFile(null, null); + final Path tempFile = ComponentUtil.getSystemHelper().createTempFile("fess-badword-", ".csv").toPath(); try { try (Writer writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(tempFile), getCsvEncoding()))) { badWordService.exportCsv(writer); diff --git a/src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java b/src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java index 57d63b905..c33fe687b 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java @@ -219,7 +219,7 @@ public class AdminElevatewordAction extends FessAdminAction { verifyToken(() -> asDownloadHtml()); return asStream("elevate.csv").contentTypeOctetStream().stream(out -> { - final Path tempFile = Files.createTempFile(null, null); + final Path tempFile = ComponentUtil.getSystemHelper().createTempFile("fess-elevate-", ".csv").toPath(); try { try (Writer writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(tempFile), getCsvEncoding()))) { elevateWordService.exportCsv(writer); diff --git a/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java b/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java index 1816cd71a..ef454b3e4 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java @@ -83,7 +83,7 @@ public class AdminEsreqAction extends FessAdminAction { }); } else { try (final CurlResponse response = curlRequest.body(buf.toString()).execute()) { - final File tempFile = File.createTempFile("esreq_", ".json"); + final File tempFile = ComponentUtil.getSystemHelper().createTempFile("esreq_", ".json"); try (final InputStream in = response.getContentAsStream()) { CopyUtil.copy(in, tempFile); } catch (final Exception e1) { diff --git a/src/main/java/org/codelibs/fess/app/web/api/admin/badword/ApiAdminBadwordAction.java b/src/main/java/org/codelibs/fess/app/web/api/admin/badword/ApiAdminBadwordAction.java index b7b8e9af6..21689e959 100644 --- a/src/main/java/org/codelibs/fess/app/web/api/admin/badword/ApiAdminBadwordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/api/admin/badword/ApiAdminBadwordAction.java @@ -43,6 +43,7 @@ import org.codelibs.fess.app.web.api.admin.FessApiAdminAction; import org.codelibs.fess.es.config.exentity.BadWord; import org.codelibs.fess.exception.FessSystemException; import org.codelibs.fess.helper.SuggestHelper; +import org.codelibs.fess.util.ComponentUtil; import org.lastaflute.web.Execute; import org.lastaflute.web.response.JsonResponse; import org.lastaflute.web.response.StreamResponse; @@ -162,7 +163,7 @@ public class ApiAdminBadwordAction extends FessApiAdminAction { public StreamResponse get$download(final DownloadBody body) { validateApi(body, messages -> {}); return asStream("badword.csv").contentTypeOctetStream().stream(out -> { - final Path tempFile = Files.createTempFile(null, null); + final Path tempFile = ComponentUtil.getSystemHelper().createTempFile("fess-badword-", ".csv").toPath(); try { try (Writer writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(tempFile), getCsvEncoding()))) { badWordService.exportCsv(writer); diff --git a/src/main/java/org/codelibs/fess/app/web/api/admin/elevateword/ApiAdminElevatewordAction.java b/src/main/java/org/codelibs/fess/app/web/api/admin/elevateword/ApiAdminElevatewordAction.java index b5c9d9e97..e30678226 100644 --- a/src/main/java/org/codelibs/fess/app/web/api/admin/elevateword/ApiAdminElevatewordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/api/admin/elevateword/ApiAdminElevatewordAction.java @@ -174,7 +174,7 @@ public class ApiAdminElevatewordAction extends FessApiAdminAction { public StreamResponse get$download(final DownloadBody body) { validateApi(body, messages -> {}); return asStream("elevate.csv").contentTypeOctetStream().stream(out -> { - final Path tempFile = Files.createTempFile(null, null); + final Path tempFile = ComponentUtil.getSystemHelper().createTempFile("fess-elevate-", ".csv").toPath(); try { try (Writer writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(tempFile), getCsvEncoding()))) { elevateWordService.exportCsv(writer); diff --git a/src/main/java/org/codelibs/fess/dict/kuromoji/KuromojiFile.java b/src/main/java/org/codelibs/fess/dict/kuromoji/KuromojiFile.java index c6713f7fd..e15ca6f20 100644 --- a/src/main/java/org/codelibs/fess/dict/kuromoji/KuromojiFile.java +++ b/src/main/java/org/codelibs/fess/dict/kuromoji/KuromojiFile.java @@ -36,6 +36,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.codelibs.fess.util.KuromojiCSVUtil; import org.dbflute.optional.OptionalEntity; @@ -208,9 +209,9 @@ public class KuromojiFile extends DictionaryFile { protected KuromojiUpdater(final KuromojiItem newItem) { try { - newFile = File.createTempFile(KUROMOJI, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(KUROMOJI, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/dict/mapping/CharMappingFile.java b/src/main/java/org/codelibs/fess/dict/mapping/CharMappingFile.java index 6356e1a3f..86220717d 100644 --- a/src/main/java/org/codelibs/fess/dict/mapping/CharMappingFile.java +++ b/src/main/java/org/codelibs/fess/dict/mapping/CharMappingFile.java @@ -38,6 +38,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -222,9 +223,9 @@ public class CharMappingFile extends DictionaryFile { protected MappingUpdater(final CharMappingItem newItem) { try { - newFile = File.createTempFile(MAPPING, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(MAPPING, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/dict/protwords/ProtwordsFile.java b/src/main/java/org/codelibs/fess/dict/protwords/ProtwordsFile.java index eb7716a5c..50176d94b 100644 --- a/src/main/java/org/codelibs/fess/dict/protwords/ProtwordsFile.java +++ b/src/main/java/org/codelibs/fess/dict/protwords/ProtwordsFile.java @@ -36,6 +36,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; public class ProtwordsFile extends DictionaryFile { @@ -206,9 +207,9 @@ public class ProtwordsFile extends DictionaryFile { protected ProtwordsUpdater(final ProtwordsItem newItem) { try { - newFile = File.createTempFile(PROTWORDS, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(PROTWORDS, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/dict/stemmeroverride/StemmerOverrideFile.java b/src/main/java/org/codelibs/fess/dict/stemmeroverride/StemmerOverrideFile.java index a4dfb0843..2853b978b 100644 --- a/src/main/java/org/codelibs/fess/dict/stemmeroverride/StemmerOverrideFile.java +++ b/src/main/java/org/codelibs/fess/dict/stemmeroverride/StemmerOverrideFile.java @@ -38,6 +38,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -219,9 +220,9 @@ public class StemmerOverrideFile extends DictionaryFile { protected StemmerOverrideUpdater(final StemmerOverrideItem newItem) { try { - newFile = File.createTempFile(STEMMER_OVERRIDE, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(STEMMER_OVERRIDE, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/dict/stopwords/StopwordsFile.java b/src/main/java/org/codelibs/fess/dict/stopwords/StopwordsFile.java index 7c7d7fed9..7249b7272 100644 --- a/src/main/java/org/codelibs/fess/dict/stopwords/StopwordsFile.java +++ b/src/main/java/org/codelibs/fess/dict/stopwords/StopwordsFile.java @@ -36,6 +36,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; public class StopwordsFile extends DictionaryFile { @@ -206,9 +207,9 @@ public class StopwordsFile extends DictionaryFile { protected SynonymUpdater(final StopwordsItem newItem) { try { - newFile = File.createTempFile(STOPWORDS, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(STOPWORDS, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/dict/synonym/SynonymFile.java b/src/main/java/org/codelibs/fess/dict/synonym/SynonymFile.java index c62d16d16..fce112a19 100644 --- a/src/main/java/org/codelibs/fess/dict/synonym/SynonymFile.java +++ b/src/main/java/org/codelibs/fess/dict/synonym/SynonymFile.java @@ -36,6 +36,7 @@ import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.dict.DictionaryException; import org.codelibs.fess.dict.DictionaryFile; +import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; public class SynonymFile extends DictionaryFile { @@ -280,9 +281,9 @@ public class SynonymFile extends DictionaryFile { protected SynonymUpdater(final SynonymItem newItem) { try { - newFile = File.createTempFile(SYNONYM, ".txt"); + newFile = ComponentUtil.getSystemHelper().createTempFile(SYNONYM, ".txt"); writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), Constants.UTF_8)); - } catch (final IOException e) { + } catch (final Exception e) { if (newFile != null) { newFile.delete(); } diff --git a/src/main/java/org/codelibs/fess/exec/Crawler.java b/src/main/java/org/codelibs/fess/exec/Crawler.java index 999bdcee4..f000fa020 100644 --- a/src/main/java/org/codelibs/fess/exec/Crawler.java +++ b/src/main/java/org/codelibs/fess/exec/Crawler.java @@ -313,13 +313,13 @@ public class Crawler { systemProperties.reload(options.propertiesPath); } else { try { - final File propFile = File.createTempFile("crawler_", ".properties"); + final File propFile = ComponentUtil.getSystemHelper().createTempFile("crawler_", ".properties"); if (propFile.delete() && logger.isDebugEnabled()) { logger.debug("Deleted a temp file: " + propFile.getAbsolutePath()); } systemProperties.reload(propFile.getAbsolutePath()); propFile.deleteOnExit(); - } catch (final IOException e) { + } catch (final Exception e) { logger.warn("Failed to create system properties file.", e); } } diff --git a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java index 6d6a4cc7a..288bd2195 100644 --- a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java +++ b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java @@ -16,7 +16,6 @@ package org.codelibs.fess.exec; import java.io.File; -import java.io.IOException; import java.lang.management.ManagementFactory; import java.time.LocalDateTime; import java.util.concurrent.CountDownLatch; @@ -168,13 +167,13 @@ public class SuggestCreator { systemProperties.reload(options.propertiesPath); } else { try { - final File propFile = File.createTempFile("suggest_", ".properties"); + final File propFile = ComponentUtil.getSystemHelper().createTempFile("suggest_", ".properties"); if (propFile.delete() && logger.isDebugEnabled()) { logger.debug("Deleted a temp file: " + propFile.getAbsolutePath()); } systemProperties.reload(propFile.getAbsolutePath()); propFile.deleteOnExit(); - } catch (final IOException e) { + } catch (final Exception e) { logger.warn("Failed to create system properties file.", e); } } diff --git a/src/main/java/org/codelibs/fess/exec/ThumbnailGenerator.java b/src/main/java/org/codelibs/fess/exec/ThumbnailGenerator.java index 3a45154b4..33995f672 100644 --- a/src/main/java/org/codelibs/fess/exec/ThumbnailGenerator.java +++ b/src/main/java/org/codelibs/fess/exec/ThumbnailGenerator.java @@ -16,7 +16,6 @@ package org.codelibs.fess.exec; import java.io.File; -import java.io.IOException; import java.lang.management.ManagementFactory; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -180,13 +179,13 @@ public class ThumbnailGenerator { systemProperties.reload(options.propertiesPath); } else { try { - final File propFile = File.createTempFile("thumbnail_", ".properties"); + final File propFile = ComponentUtil.getSystemHelper().createTempFile("thumbnail_", ".properties"); if (propFile.delete() && logger.isDebugEnabled()) { logger.debug("Deleted a temp file: " + propFile.getAbsolutePath()); } systemProperties.reload(propFile.getAbsolutePath()); propFile.deleteOnExit(); - } catch (final IOException e) { + } catch (final Exception e) { logger.warn("Failed to create system properties file.", e); } } diff --git a/src/main/java/org/codelibs/fess/helper/SystemHelper.java b/src/main/java/org/codelibs/fess/helper/SystemHelper.java index 6962332c2..d5a7343ba 100644 --- a/src/main/java/org/codelibs/fess/helper/SystemHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SystemHelper.java @@ -472,7 +472,11 @@ public class SystemHelper { public File createTempFile(String prefix, String suffix) { try { - return File.createTempFile(prefix, suffix); + final File file = File.createTempFile(prefix, suffix); + if (logger.isDebugEnabled()) { + logger.debug("Create {} as a temp file.", file.getAbsolutePath()); + } + return file; } catch (IOException e) { throw new IORuntimeException(e); } diff --git a/src/main/java/org/codelibs/fess/job/CrawlJob.java b/src/main/java/org/codelibs/fess/job/CrawlJob.java index db47f48d4..e0e35d909 100644 --- a/src/main/java/org/codelibs/fess/job/CrawlJob.java +++ b/src/main/java/org/codelibs/fess/job/CrawlJob.java @@ -321,10 +321,9 @@ public class CrawlJob extends ExecJob { cmdList.add(Integer.toString(documentExpires)); } - File propFile = null; + File propFile = ComponentUtil.getSystemHelper().createTempFile(getExecuteType() + "_", ".properties"); try { cmdList.add("-p"); - propFile = File.createTempFile(getExecuteType() + "_", ".properties"); cmdList.add(propFile.getAbsolutePath()); try (FileOutputStream out = new FileOutputStream(propFile)) { final Properties prop = new Properties(); diff --git a/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java b/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java index fc6c931ca..49634f58e 100644 --- a/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java +++ b/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java @@ -202,10 +202,9 @@ public class GenerateThumbnailJob extends ExecJob { cmdList.add("--cleanup"); } - File propFile = null; + File propFile = ComponentUtil.getSystemHelper().createTempFile(getExecuteType() + "_", ".properties"); try { cmdList.add("-p"); - propFile = File.createTempFile(getExecuteType() + "_", ".properties"); cmdList.add(propFile.getAbsolutePath()); try (FileOutputStream out = new FileOutputStream(propFile)) { final Properties prop = new Properties(); diff --git a/src/main/java/org/codelibs/fess/job/SuggestJob.java b/src/main/java/org/codelibs/fess/job/SuggestJob.java index 7af5101ca..8b01fd408 100644 --- a/src/main/java/org/codelibs/fess/job/SuggestJob.java +++ b/src/main/java/org/codelibs/fess/job/SuggestJob.java @@ -184,10 +184,9 @@ public class SuggestJob extends ExecJob { cmdList.add("--sessionId"); cmdList.add(sessionId); - File propFile = null; + File propFile = ComponentUtil.getSystemHelper().createTempFile(getExecuteType() + "_", ".properties"); try { cmdList.add("-p"); - propFile = File.createTempFile(getExecuteType() + "_", ".properties"); cmdList.add(propFile.getAbsolutePath()); try (FileOutputStream out = new FileOutputStream(propFile)) { final Properties prop = new Properties(); diff --git a/src/main/java/org/codelibs/fess/thumbnail/impl/CommandGenerator.java b/src/main/java/org/codelibs/fess/thumbnail/impl/CommandGenerator.java index 02e75d2f1..0d7cf60f9 100644 --- a/src/main/java/org/codelibs/fess/thumbnail/impl/CommandGenerator.java +++ b/src/main/java/org/codelibs/fess/thumbnail/impl/CommandGenerator.java @@ -30,6 +30,7 @@ import javax.annotation.PostConstruct; import org.codelibs.core.io.CloseableUtil; import org.codelibs.core.io.CopyUtil; import org.codelibs.core.lang.StringUtil; +import org.codelibs.fess.util.ComponentUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,9 +84,8 @@ public class CommandGenerator extends BaseThumbnailGenerator { } return process(thumbnailId, responseData -> { - File tempFile = null; + File tempFile = ComponentUtil.getSystemHelper().createTempFile("thumbnail_", ""); try { - tempFile = File.createTempFile("thumbnail_", ""); CopyUtil.copy(responseData.getResponseBody(), tempFile); final String tempPath = tempFile.getAbsolutePath();