You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2022/10/17 03:11:59 UTC

[james-mime4j] 09/14: MIME4J-318 Do not use Synchronised byte array output streams

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-mime4j.git

commit c340fe60f2f27d47858c67dbde25387c4d94310c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jun 23 16:23:16 2022 +0700

    MIME4J-318 Do not use Synchronised byte array output streams
---
 .../james/mime4j/util/ByteArrayOutputStreamRecycler.java  | 15 ++++++++-------
 .../java/org/apache/james/mime4j/util/ContentUtil.java    |  4 ++--
 .../org/apache/james/mime4j/message/BasicBodyFactory.java |  1 -
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java b/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java
index d99dda7e..a77d0c50 100644
--- a/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java
+++ b/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java
@@ -22,13 +22,14 @@ package org.apache.james.mime4j.util;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 
 public class ByteArrayOutputStreamRecycler {
     public static class Wrapper {
         private final ByteArrayOutputStreamRecycler recycler;
-        private final ByteArrayOutputStream value;
+        private final UnsynchronizedByteArrayOutputStream value;
 
-        public Wrapper(ByteArrayOutputStreamRecycler recycler, ByteArrayOutputStream value) {
+        public Wrapper(ByteArrayOutputStreamRecycler recycler, UnsynchronizedByteArrayOutputStream value) {
             this.recycler = recycler;
             this.value = value;
         }
@@ -37,26 +38,26 @@ public class ByteArrayOutputStreamRecycler {
             recycler.release(value);
         }
 
-        public ByteArrayOutputStream getValue() {
+        public UnsynchronizedByteArrayOutputStream getValue() {
             return value;
         }
     }
 
-    protected final ConcurrentLinkedQueue<ByteArrayOutputStream> buffers;
+    protected final ConcurrentLinkedQueue<UnsynchronizedByteArrayOutputStream> buffers;
 
     public ByteArrayOutputStreamRecycler() {
         buffers = new ConcurrentLinkedQueue<>();
     }
 
     public Wrapper allocOutputStream() {
-        ByteArrayOutputStream result = buffers.poll();
+        UnsynchronizedByteArrayOutputStream result = buffers.poll();
         if (result == null) {
-            result = new ByteArrayOutputStream();
+            result = new UnsynchronizedByteArrayOutputStream();
         }
         return new Wrapper(this, result);
     }
 
-    private void release(ByteArrayOutputStream value) {
+    private void release(UnsynchronizedByteArrayOutputStream value) {
         if (value != null) {
             value.reset();
             buffers.offer(value);
diff --git a/core/src/main/java/org/apache/james/mime4j/util/ContentUtil.java b/core/src/main/java/org/apache/james/mime4j/util/ContentUtil.java
index 0e25ce28..d6d2d96e 100644
--- a/core/src/main/java/org/apache/james/mime4j/util/ContentUtil.java
+++ b/core/src/main/java/org/apache/james/mime4j/util/ContentUtil.java
@@ -31,7 +31,7 @@ import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
 
-import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.james.mime4j.Charsets;
 
 /**
@@ -106,7 +106,7 @@ public class ContentUtil {
         if (in == null) {
             throw new IllegalArgumentException("Input stream may not be null");
         }
-        ByteArrayOutputStream buf = new ByteArrayOutputStream();
+        UnsynchronizedByteArrayOutputStream buf = new UnsynchronizedByteArrayOutputStream();
         copy(in, buf);
         return buf.toByteArray();
     }
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/BasicBodyFactory.java b/dom/src/main/java/org/apache/james/mime4j/message/BasicBodyFactory.java
index f3c74043..10df514b 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/BasicBodyFactory.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/BasicBodyFactory.java
@@ -29,7 +29,6 @@ import java.nio.charset.Charset;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
 
-import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.james.mime4j.Charsets;
 import org.apache.james.mime4j.dom.BinaryBody;
 import org.apache.james.mime4j.dom.SingleBody;


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org