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 2020/12/11 10:44:07 UTC

[james-project] 03/15: JAMES-2578 No longer rely on Java serialization for JMS and ActiveMQ

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 f43a55845b83d10deba626dd1903130bc14383ac
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Dec 7 13:39:31 2020 +0700

    JAMES-2578 No longer rely on Java serialization for JMS and ActiveMQ
---
 .../apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java   | 6 ------
 .../org/apache/james/queue/activemq/ActiveMQMailQueueTest.java   | 6 ------
 .../java/org/apache/james/queue/jms/JMSCacheableMailQueue.java   | 9 ++++++---
 .../org/apache/james/queue/jms/JMSCacheableMailQueueTest.java    | 6 ------
 4 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
index 71a970e..1a68b89 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
@@ -98,12 +98,6 @@ public class ActiveMQMailQueueBlobTest implements DelayedManageableMailQueueCont
         return mailQueue;
     }
 
-    @Override
-    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
-    public void queueShouldPreserveDsnParameters() {
-
-    }
-
     @Test
     @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
index 8884645..b90c1a1 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
@@ -77,12 +77,6 @@ public class ActiveMQMailQueueTest implements DelayedManageableMailQueueContract
         return mailQueue;
     }
 
-    @Override
-    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
-    public void queueShouldPreserveDsnParameters() {
-
-    }
-
     @Test
     @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSCacheableMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSCacheableMailQueue.java
index 1084b17..e6950c7 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSCacheableMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSCacheableMailQueue.java
@@ -20,7 +20,6 @@ package org.apache.james.queue.jms;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.Serializable;
 import java.time.DateTimeException;
 import java.time.Duration;
 import java.time.Instant;
@@ -359,7 +358,7 @@ public class JMSCacheableMailQueue implements ManageableMailQueue, JMSSupport, M
         props.putAll(mail.attributes()
             .collect(Guavate.toImmutableMap(
                 attribute -> attribute.getName().asString(),
-                attribute -> SerializationUtil.serialize((Serializable) attribute.getValue().value()))));
+                attribute -> attribute.getValue().toJson().toString())));
 
         ImmutableList<String> attributeNames = mail.attributeNames()
             .map(AttributeName::asString)
@@ -453,7 +452,11 @@ public class JMSCacheableMailQueue implements ManageableMailQueue, JMSSupport, M
         Object attrValue = Throwing.function(message::getObjectProperty).apply(name);
 
         if (attrValue instanceof String) {
-            return Stream.of(new Attribute(AttributeName.of(name), AttributeValue.ofAny(SerializationUtil.deserialize((String) attrValue))));
+            try {
+                return Stream.of(new Attribute(AttributeName.of(name), AttributeValue.fromJsonString((String) attrValue)));
+            } catch (IOException e) {
+                LOGGER.error("Error deserializing mail attribute {} with value {}", name, attrValue, e);
+            }
         } else {
             LOGGER.error("Not supported mail attribute {} of type {} for mail {}", name, attrValue, name);
         }
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
index 6d75f0d..fb0e189 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
@@ -75,12 +75,6 @@ public class JMSCacheableMailQueueTest implements DelayedManageableMailQueueCont
     }
 
     @Override
-    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
-    public void queueShouldPreserveDsnParameters() {
-
-    }
-
-    @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
     public void dequeueCanBeChainedBeforeAck() {
 


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