You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/11/22 05:48:45 UTC
[james-project] 04/04: JAMES-3860 Rely on Files.createTempFile
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a109725eafecb05f63f8312fcd8c6ec51f15e3d9
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 21 09:12:36 2022 +0700
JAMES-3860 Rely on Files.createTempFile
---
.../james/mailbox/store/StoreMessageManager.java | 3 ++-
.../james/transport/mailets/StripAttachment.java | 3 ++-
.../main/java/org/apache/james/JPAJamesServerMain.java | 1 -
.../server/core/BufferedDeferredFileOutputStream.java | 18 ++++++------------
.../server/core/MimeMessageInputStreamSource.java | 9 ++-------
.../core/BufferedDeferredFileOutputStreamTest.java | 13 ++++---------
.../sieverepository/file/SieveFileRepository.java | 3 ++-
.../imapserver/netty/ImapRequestFrameDecoder.java | 3 ++-
8 files changed, 20 insertions(+), 33 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 0218ae6460..2eea248588 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -30,6 +30,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Date;
import java.util.EnumSet;
@@ -351,7 +352,7 @@ public class StoreMessageManager implements MessageManager {
// Create a temporary file and copy the message to it. We will work
// with the file as
// source for the InputStream
- file = File.createTempFile("imap", ".msg");
+ file = Files.createTempFile("imap", ".msg").toFile();
try (FileOutputStream out = new FileOutputStream(file);
BufferedOutputStream bufferedOut = new BufferedOutputStream(out);
BufferedInputStream tmpMsgIn = new BufferedInputStream(new TeeInputStream(msgIn, bufferedOut));
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
index bd04f95ba2..12c8b7f289 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -463,7 +464,7 @@ public class StripAttachment extends GenericMailet {
private File createTempFile(String originalFileName) throws IOException {
OutputFileName outputFileName = OutputFileName.from(originalFileName);
- return File.createTempFile(outputFileName.getPrefix(), outputFileName.getSuffix(), new File(directoryName));
+ return Files.createTempFile(new File(directoryName).toPath(), outputFileName.getPrefix(), outputFileName.getSuffix()).toFile();
}
@VisibleForTesting static class OutputFileName {
diff --git a/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java b/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
index 063366b0ab..aa62cbe259 100644
--- a/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ b/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -38,7 +38,6 @@ import org.apache.james.modules.protocols.SMTPServerModule;
import org.apache.james.modules.queue.activemq.ActiveMQQueueModule;
import org.apache.james.modules.server.DataRoutesModules;
import org.apache.james.modules.server.DefaultProcessorsConfigurationProviderModule;
-import org.apache.james.modules.server.ElasticSearchMetricReporterModule;
import org.apache.james.modules.server.InconsistencyQuotasSolvingRoutesModule;
import org.apache.james.modules.server.JMXServerModule;
import org.apache.james.modules.server.MailQueueRoutesModule;
diff --git a/server/container/core/src/main/java/org/apache/james/server/core/BufferedDeferredFileOutputStream.java b/server/container/core/src/main/java/org/apache/james/server/core/BufferedDeferredFileOutputStream.java
index b5e3f1e58d..8a528dd7da 100644
--- a/server/container/core/src/main/java/org/apache/james/server/core/BufferedDeferredFileOutputStream.java
+++ b/server/container/core/src/main/java/org/apache/james/server/core/BufferedDeferredFileOutputStream.java
@@ -25,6 +25,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.nio.file.Files;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
@@ -79,11 +80,6 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
*/
private final String suffix;
- /**
- * The directory to use for temporary files.
- */
- private final File directory;
-
/**
* True when close() has been called successfully.
@@ -98,7 +94,7 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
* @param outputFile The file to which data is saved beyond the threshold.
*/
public BufferedDeferredFileOutputStream(final int threshold, final File outputFile) {
- this(threshold, outputFile, null, null, null);
+ this(threshold, outputFile, null, null);
}
@@ -109,10 +105,9 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
* @param threshold The number of bytes at which to trigger an event.
* @param prefix Prefix to use for the temporary file.
* @param suffix Suffix to use for the temporary file.
- * @param directory Temporary file directory.
*/
- public BufferedDeferredFileOutputStream(final int threshold, final String prefix, final String suffix, final File directory) {
- this(threshold, null, prefix, suffix, directory);
+ public BufferedDeferredFileOutputStream(final int threshold, final String prefix, final String suffix) {
+ this(threshold, null, prefix, suffix);
if (prefix == null) {
throw new IllegalArgumentException("Temporary file prefix is missing");
}
@@ -129,7 +124,7 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
* @param directory Temporary file directory.
*/
private BufferedDeferredFileOutputStream(final int threshold, final File outputFile, final String prefix,
- final String suffix, final File directory) {
+ final String suffix) {
super(threshold);
this.outputFile = outputFile;
@@ -137,7 +132,6 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
currentOutputStream = memoryOutputStream;
this.prefix = prefix;
this.suffix = suffix;
- this.directory = directory;
}
/**
@@ -164,7 +158,7 @@ public class BufferedDeferredFileOutputStream extends ThresholdingOutputStream i
@Override
protected void thresholdReached() throws IOException {
if (prefix != null) {
- outputFile = File.createTempFile(prefix, suffix, directory);
+ outputFile = Files.createTempFile(prefix, suffix).toFile();
}
final FileOutputStream fos = new FileOutputStream(outputFile);
try {
diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageInputStreamSource.java b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageInputStreamSource.java
index 4a88390545..6c8614a2a3 100644
--- a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageInputStreamSource.java
+++ b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageInputStreamSource.java
@@ -64,11 +64,6 @@ public class MimeMessageInputStreamSource extends Disposable.LeakAware<MimeMessa
*/
private final String sourceId;
- /**
- * Temporary directory to use
- */
- private static final File TMPDIR = new File(System.getProperty("java.io.tmpdir"));
-
static class Resource extends LeakAware.Resource {
private final BufferedDeferredFileOutputStream out;
private final Set<InputStream> streams;
@@ -111,7 +106,7 @@ public class MimeMessageInputStreamSource extends Disposable.LeakAware<MimeMessa
public static MimeMessageInputStreamSource create(String key, InputStream in) throws MessagingException {
Disposable.LeakAware.track();
- BufferedDeferredFileOutputStream out = new BufferedDeferredFileOutputStream(THRESHOLD, "mimemessage-" + key, ".m64", TMPDIR);
+ BufferedDeferredFileOutputStream out = new BufferedDeferredFileOutputStream(THRESHOLD, "mimemessage-" + key, ".m64");
Resource resource = new Resource(out, new HashSet<>());
return new MimeMessageInputStreamSource(resource, key, in);
@@ -119,7 +114,7 @@ public class MimeMessageInputStreamSource extends Disposable.LeakAware<MimeMessa
public static MimeMessageInputStreamSource create(String key) {
Disposable.LeakAware.track();
- BufferedDeferredFileOutputStream out = new BufferedDeferredFileOutputStream(THRESHOLD, "mimemessage-" + key, ".m64", TMPDIR);
+ BufferedDeferredFileOutputStream out = new BufferedDeferredFileOutputStream(THRESHOLD, "mimemessage-" + key, ".m64");
Resource resource = new Resource(out, new HashSet<>());
return new MimeMessageInputStreamSource(resource, key);
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/BufferedDeferredFileOutputStreamTest.java b/server/container/core/src/test/java/org/apache/james/server/core/BufferedDeferredFileOutputStreamTest.java
index c4c683ad0a..52920bc314 100644
--- a/server/container/core/src/test/java/org/apache/james/server/core/BufferedDeferredFileOutputStreamTest.java
+++ b/server/container/core/src/test/java/org/apache/james/server/core/BufferedDeferredFileOutputStreamTest.java
@@ -245,9 +245,8 @@ public class BufferedDeferredFileOutputStreamTest {
final String prefix = "commons-io-test";
final String suffix = ".out";
- final File tempDir = new File(".");
final BufferedDeferredFileOutputStream dfos =
- new BufferedDeferredFileOutputStream(testBytes.length + 42, prefix, suffix, tempDir);
+ new BufferedDeferredFileOutputStream(testBytes.length + 42, prefix, suffix);
assertNull("Check file is null-A", dfos.getFile());
try
{
@@ -269,9 +268,8 @@ public class BufferedDeferredFileOutputStreamTest {
final String prefix = "commons-io-test";
final String suffix = ".out";
- final File tempDir = new File(".");
final BufferedDeferredFileOutputStream dfos =
- new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix, tempDir);
+ new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix);
assertNull("Check file is null-A", dfos.getFile());
try
{
@@ -287,7 +285,6 @@ public class BufferedDeferredFileOutputStreamTest {
assertTrue("Check file exists", dfos.getFile().exists());
assertTrue("Check prefix", dfos.getFile().getName().startsWith(prefix));
assertTrue("Check suffix", dfos.getFile().getName().endsWith(suffix));
- assertEquals("Check dir", tempDir.getPath(), dfos.getFile().getParent());
verifyResultFile(dfos.getFile());
@@ -303,9 +300,8 @@ public class BufferedDeferredFileOutputStreamTest {
final String prefix = "commons-io-test";
final String suffix = null;
- final File tempDir = null;
final BufferedDeferredFileOutputStream dfos =
- new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix, tempDir);
+ new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix);
assertNull("Check file is null-A", dfos.getFile());
try
{
@@ -337,10 +333,9 @@ public class BufferedDeferredFileOutputStreamTest {
final String prefix = null;
final String suffix = ".out";
- final File tempDir = new File(".");
try
{
- (new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix, tempDir)).close();
+ (new BufferedDeferredFileOutputStream(testBytes.length - 5, prefix, suffix)).close();
fail("Expected IllegalArgumentException ");
}
catch (final IllegalArgumentException e) {
diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
index b70496b6b3..aeac6604cb 100644
--- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
@@ -29,6 +29,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.nio.file.Files;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
@@ -102,7 +103,7 @@ public class SieveFileRepository implements SieveRepository {
File tmpFile = null;
try {
- tmpFile = File.createTempFile(file.getName(), ".tmp", file.getParentFile());
+ tmpFile = Files.createTempFile(file.getParentFile().toPath(), "", ".tmp").toFile();
try (Writer out = new OutputStreamWriter(new BufferedOutputStream(
new FileOutputStream(tmpFile), bufferSize), UTF_8)) {
out.write(content);
diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
index 17c4d9db12..02505969a2 100644
--- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
@@ -25,6 +25,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.nio.file.Files;
import java.util.Deque;
import java.util.HashMap;
import java.util.List;
@@ -203,7 +204,7 @@ public class ImapRequestFrameDecoder extends ByteToMessageDecoder implements Net
if (attachment.containsKey(STORED_DATA)) {
sink = (Sinks.Many<byte[]>) attachment.get(SINK);
} else {
- f = File.createTempFile("imap-literal", ".tmp");
+ f = Files.createTempFile("imap-literal", ".tmp").toFile();
attachment.put(STORED_DATA, f);
final AtomicInteger written = new AtomicInteger(0);
attachment.put(WRITTEN_DATA, written);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org