Repository: tomee
Updated Branches:
  refs/heads/master 095ce2560 -> d57a8cb0a


TOMEE-1992 ensure JMSContext is serializable


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d57a8cb0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d57a8cb0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d57a8cb0

Branch: refs/heads/master
Commit: d57a8cb0adf841436aca8c09fcd053e00799bbe2
Parents: 095ce25
Author: rmannibucau <[email protected]>
Authored: Tue Jan 3 09:43:00 2017 +0100
Committer: rmannibucau <[email protected]>
Committed: Tue Jan 3 09:43:00 2017 +0100

----------------------------------------------------------------------
 .../activemq/jms2/cdi/JMS2CDIExtension.java     |  4 +--
 .../apache/openejb/activemq/JMS2AMQTest.java    | 37 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d57a8cb0/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java
index 1b4c22a..a8aef08 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java
@@ -149,7 +149,7 @@ public class JMS2CDIExtension implements Extension {
     public static class TransactionAutoContextDestruction extends 
AutoContextDestruction {
     }
 
-    public static class Key {
+    public static class Key implements Serializable {
         private volatile ConnectionFactory connectionFactoryInstance;
         private final String connectionFactory;
         private final String username;
@@ -222,7 +222,7 @@ public class JMS2CDIExtension implements Extension {
         }
     }
 
-    public static class InternalJMSContext implements JMSContext {
+    public static class InternalJMSContext implements JMSContext, Serializable 
{
         private final Key key;
         private final RequestAutoContextDestruction requestStorage;
         private final TransactionAutoContextDestruction transactionStorage;

http://git-wip-us.apache.org/repos/asf/tomee/blob/d57a8cb0/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java
 
b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java
index f89526f..aa8f8d2 100644
--- 
a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java
+++ 
b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java
@@ -17,8 +17,10 @@
 package org.apache.openejb.activemq;
 
 import org.apache.activemq.ActiveMQXAConnectionFactory;
+import org.apache.commons.lang3.SerializationUtils;
 import org.apache.openejb.jee.MessageDrivenBean;
 import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
 import org.apache.openejb.testing.Configuration;
 import org.apache.openejb.testing.Module;
 import org.apache.openejb.testing.SimpleLog;
@@ -33,6 +35,7 @@ import javax.annotation.Resource;
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.MessageDriven;
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.context.SessionScoped;
 import javax.inject.Inject;
 import javax.jms.ConnectionFactory;
 import javax.jms.JMSConnectionFactory;
@@ -45,6 +48,14 @@ import javax.jms.MessageListener;
 import javax.jms.Queue;
 import javax.jms.TextMessage;
 import javax.jms.XAConnectionFactory;
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.NotSupportedException;
+import javax.transaction.RollbackException;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionScoped;
+import javax.transaction.UserTransaction;
+import java.io.Serializable;
 import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -52,6 +63,7 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import static java.lang.Thread.sleep;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -84,6 +96,7 @@ public class JMS2AMQTest {
     }
 
     @Module
+    @Classes(cdi = true, value = JustHereToCheckDeploymentIsOk.class)
     public MessageDrivenBean jar() {
         return new MessageDrivenBean(Listener.class);
     }
@@ -110,12 +123,26 @@ public class JMS2AMQTest {
     @Inject // just there to ensure the injection works and we don't require 
@JMSConnectionFactory
     private JMSContext defaultContext;
 
+    @Inject
+    private JustHereToCheckDeploymentIsOk session;
+
+    @Resource
+    private UserTransaction ut;
+
     @Before
     public void resetLatch() {
         Listener.reset();
     }
 
     @Test
+    public void serialize() throws SystemException, NotSupportedException, 
HeuristicRollbackException, HeuristicMixedException, RollbackException {
+        final JMSContext c = 
SerializationUtils.deserialize(SerializationUtils.serialize(Serializable.class.cast(context)));
+        ut.begin();
+        session.ok();
+        ut.commit();
+    }
+
+    @Test
     public void cdi() throws InterruptedException {
         final String text = TEXT + "3";
 
@@ -372,4 +399,14 @@ public class JMS2AMQTest {
             return ok;
         }
     }
+
+    @TransactionScoped
+    public static class JustHereToCheckDeploymentIsOk implements Serializable {
+        @Inject
+        private JMSContext context;
+
+        public void ok() {
+            assertNotNull(context);
+        }
+    }
 }

Reply via email to