Commit in servicemix/jencks/src/test/java/org/servicemix/jencks on MAIN
HandWiredJencksTest.java+125added 1.1
Adding a hand wired version of Jencks.

servicemix/jencks/src/test/java/org/servicemix/jencks
HandWiredJencksTest.java added at 1.1
diff -N HandWiredJencksTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HandWiredJencksTest.java	15 Aug 2005 17:45:24 -0000	1.1
@@ -0,0 +1,125 @@
+package org.servicemix.jencks;
+
+import java.lang.reflect.Method;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import javax.jms.Connection;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.resource.ResourceException;
+import javax.resource.spi.UnavailableException;
+import javax.resource.spi.endpoint.MessageEndpoint;
+import javax.resource.spi.endpoint.MessageEndpointFactory;
+import javax.transaction.xa.XAResource;
+
+import junit.framework.TestCase;
+
+import org.activemq.ActiveMQConnectionFactory;
+import org.activemq.message.ActiveMQQueue;
+import org.activemq.ra.ActiveMQActivationSpec;
+import org.activemq.ra.ActiveMQResourceAdapter;
+import org.apache.geronimo.connector.ActivationSpecWrapper;
+import org.apache.geronimo.connector.ResourceAdapterWrapper;
+import org.apache.geronimo.connector.work.GeronimoWorkManager;
+import org.apache.geronimo.transaction.ExtendedTransactionManager;
+import org.apache.geronimo.transaction.context.TransactionContextManager;
+import org.apache.geronimo.transaction.log.UnrecoverableLog;
+import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
+import org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
+import org.apache.geronimo.transaction.manager.XidImporter;
+
+import EDU.oswego.cs.dl.util.concurrent.Latch;
+
+public class HandWiredJencksTest extends TestCase {
+    
+    public class StubMessageEndpoint implements MessageEndpoint, MessageListener {
+        public int messageCount; 
+        private final ExtendedTransactionManager etm;
+        private final XAResource resource;
+        
+        public StubMessageEndpoint(ExtendedTransactionManager etm, XAResource resource) {
+            this.etm = etm;
+            this.resource = new WrapperNamedXAResource(resource, "test");
+        }
+
+        public void beforeDelivery(Method method) throws NoSuchMethodException, ResourceException {
+            try {
+                etm.begin();
+                etm.getTransaction().enlistResource(resource);
+            } catch (Throwable e) {
+                throw new ResourceException(e);
+            }
+        }
+
+        public void afterDelivery() throws ResourceException {
+            try {
+                etm.commit();
+            } catch (Throwable e) {
+                throw new ResourceException(e);
+            }
+        }
+
+        public void release() {
+        }
+
+        public void onMessage(Message message) {
+            messageCount++;
+        }
+    }
+
+    public void testIt() throws Exception {
+        
+        
+        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost");
+        Connection connection = cf.createConnection();
+        connection.start();
+        
+        CopyOnWriteArrayList resourceAdapters = null; //new CopyOnWriteArrayList();
+        TransactionManagerImpl tm = new TransactionManagerImpl(600, new UnrecoverableLog(), resourceAdapters);
+        
+        final ExtendedTransactionManager etm = tm;
+        XidImporter xidImporter = tm;
+        TransactionContextManager manager = new TransactionContextManager(etm,xidImporter);
+        
+        GeronimoWorkManager workManager = new GeronimoWorkManager(1000,manager);
+        workManager.doStart();
+        
+        ActiveMQResourceAdapter ra = new ActiveMQResourceAdapter();
+        ra.setServerUrl("vm://localhost");
+        
+        ResourceAdapterWrapper raWrapper = new ResourceAdapterWrapper(ra, workManager);
+        raWrapper.doStart();        
+        
+        ActiveMQActivationSpec as = new ActiveMQActivationSpec();
+        as.setDestination("TEST");
+        as.setDestinationType(Queue.class.getName());        
+        ActivationSpecWrapper asWrapper = new ActivationSpecWrapper(as, raWrapper);
+        
+        final Latch messageDelivered = new Latch();
+        MessageEndpointFactory messageEndpointFactory = new MessageEndpointFactory() {
+            public MessageEndpoint createEndpoint(XAResource resource) throws UnavailableException {
+                return new StubMessageEndpoint(etm, resource) {
+                    public void onMessage(Message message) {
+                        super.onMessage(message);
+                        messageDelivered.release();
+                    };
+                };
+            }
+            public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException {
+                return true;
+            }
+        };
+        
+        asWrapper.activate(messageEndpointFactory);
+        
+        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        MessageProducer producer = session.createProducer(new ActiveMQQueue("TEST"));
+        producer.send(session.createTextMessage("Hello"));
+        
+        assertTrue(messageDelivered.attempt(1000*5));
+    }
+
+}
CVSspam 0.2.8



Reply via email to