This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 8e4867d50c590f975c2b9f18f5ab3d1b86290027 Author: Tung Van TRAN <[email protected]> AuthorDate: Wed Mar 9 17:02:57 2022 +0700 JAMES-3724 - Making MimeMessageSource from abstract to interface --- .../org/apache/james/blob/mail/MimeMessageStore.java | 2 +- .../server/core/MimeMessageInputStreamSource.java | 3 ++- .../apache/james/server/core/MimeMessageSource.java | 18 +++++++++--------- .../file/MimeMessageStreamRepositorySource.java | 4 ++-- .../mailrepository/jdbc/MimeMessageJDBCSource.java | 4 ++-- .../apache/james/jmap/draft/methods/MessageSender.java | 2 +- .../queue/activemq/MimeMessageBlobMessageSource.java | 4 ++-- .../queue/jms/MimeMessageObjectMessageSource.java | 2 +- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java b/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java index f48b01e..27ae098 100644 --- a/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java +++ b/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java @@ -130,7 +130,7 @@ public class MimeMessageStore { return new Factory(blobStore); } - private static class MimeMessageBytesSource extends MimeMessageSource implements Disposable { + private static class MimeMessageBytesSource implements MimeMessageSource, Disposable { private final CloseableByteSource headers; private final CloseableByteSource body; private final String sourceId; 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 376d3d3..aec61fa 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 @@ -44,7 +44,7 @@ import org.apache.james.util.SizeFormat; * * This class is not thread safe! */ -public class MimeMessageInputStreamSource extends MimeMessageSource implements Disposable { +public class MimeMessageInputStreamSource extends Disposable.LeakAware implements MimeMessageSource, Disposable { /** * 100kb threshold for the stream. */ @@ -191,6 +191,7 @@ public class MimeMessageInputStreamSource extends MimeMessageSource implements D } out = null; } + disposed(); } } diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageSource.java b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageSource.java index 3aaee0a..a6f7ef7 100644 --- a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageSource.java +++ b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageSource.java @@ -26,39 +26,39 @@ import java.io.InputStream; * This defines a reusable datasource that can supply an input stream with * MimeMessage data. This allows a MimeMessageWrapper or other classes to grab * the underlying data. - * + * * @see MimeMessageWrapper */ -public abstract class MimeMessageSource { +public interface MimeMessageSource { /** * Returns a unique String ID that represents the location from where this * file is loaded. This will be used to identify where the data is, * primarily to avoid situations where this data would get overwritten. - * + * * @return the String ID */ - public abstract String getSourceId(); + String getSourceId(); /** * Get an input stream to retrieve the data stored in the datasource - * + * * @return a <code>InputStream</code> containing the data - * + * * @throws IOException * if an error occurs while generating the InputStream */ - public abstract InputStream getInputStream() throws IOException; + InputStream getInputStream() throws IOException; /** * Return the size of all the data. Default implementation... others can * override to do this much faster - * + * * @return the size of the data represented by this source * @throws IOException * if an error is encountered while computing the message size */ - public long getMessageSize() throws IOException { + default long getMessageSize() throws IOException { int size = 0; try (InputStream in = getInputStream()) { int read; diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java index ed37186..35300f5 100644 --- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java +++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java @@ -25,7 +25,7 @@ import java.io.InputStream; import org.apache.james.repository.api.StreamRepository; import org.apache.james.server.core.MimeMessageSource; -public class MimeMessageStreamRepositorySource extends MimeMessageSource { +public class MimeMessageStreamRepositorySource implements MimeMessageSource { // Define how to get to the data @@ -89,7 +89,7 @@ public class MimeMessageStreamRepositorySource extends MimeMessageSource { if (sr instanceof org.apache.james.repository.file.FilePersistentStreamRepository) { size = ((org.apache.james.repository.file.FilePersistentStreamRepository) sr).getSize(key); } else { - size = super.getMessageSize(); + size = MimeMessageSource.super.getMessageSize(); } } return size; diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java index 3c1df61..289bf3d 100644 --- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java +++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java @@ -39,7 +39,7 @@ import org.apache.james.util.sql.JDBCUtil; * InputStream to the JDBC field/record, possibly sequenced with the file * stream. */ -public class MimeMessageJDBCSource extends MimeMessageSource { +public class MimeMessageJDBCSource implements MimeMessageSource { /** * Whether 'deep debugging' is turned on. @@ -186,7 +186,7 @@ public class MimeMessageJDBCSource extends MimeMessageSource { // There was no SQL statement for this repository... figure it out // the hard way System.err.println("no SQL statement to find size"); - return size = super.getMessageSize(); + return size = MimeMessageSource.super.getMessageSize(); } Connection conn = null; PreparedStatement retrieveMessageSize = null; diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java index 62d4f6c..49ac61a 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java @@ -41,7 +41,7 @@ import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; public class MessageSender { - public static class MessageMimeMessageSource extends MimeMessageSource { + public static class MessageMimeMessageSource implements MimeMessageSource { private final String id; private final MetaDataWithContent message; diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java index 26faa1a..bb07f95 100644 --- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java +++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java @@ -29,7 +29,7 @@ import org.apache.james.server.core.MimeMessageSource; /** * */ -public class MimeMessageBlobMessageSource extends MimeMessageSource implements ActiveMQSupport { +public class MimeMessageBlobMessageSource implements MimeMessageSource, ActiveMQSupport { private final String sourceId; private final BlobMessage message; @@ -61,7 +61,7 @@ public class MimeMessageBlobMessageSource extends MimeMessageSource implements A // if the size is < 1 we seems to not had it stored in the property, so // fallback to super implementation if (size == -1) { - super.getMessageSize(); + MimeMessageSource.super.getMessageSize(); } return size; } catch (JMSException e) { diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/MimeMessageObjectMessageSource.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/MimeMessageObjectMessageSource.java index dd7c4dc..b5019af 100644 --- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/MimeMessageObjectMessageSource.java +++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/MimeMessageObjectMessageSource.java @@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory; * payload of an {@link ObjectMessage}. Its important that the payload is a byte * array otherwise it will throw an {@link ClassCastException} */ -public class MimeMessageObjectMessageSource extends MimeMessageSource implements Disposable { +public class MimeMessageObjectMessageSource implements MimeMessageSource, Disposable { private static final Logger LOGGER = LoggerFactory.getLogger(MimeMessageObjectMessageSource.class); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
