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