You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2022/03/15 07:17:34 UTC
[james-project] 01/03: JAMES-3724 - Making MimeMessageSource from abstract to interface
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 <vt...@linagora.com>
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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org