User: ejort Date: 04/07/22 15:41:26 Added: src/main/org/jboss/test/jca/inflow TestResourceAdapterMBean.java TestMessageListener.java TestResourceAdapterInflowResults.java TestActivationSpec.java TestMessage.java Result.java TestResourceAdapter.java Log: A simple test of message inflow using a non jms message listener. Revision Changes Path 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestResourceAdapterMBean.java Index: TestResourceAdapterMBean.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; /** * Management interface of TestResourceAdapter. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public interface TestResourceAdapterMBean { TestResourceAdapterInflowResults testInflow() throws Exception; } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestMessageListener.java Index: TestMessageListener.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; /** * A TestMessageListener. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public interface TestMessageListener { void deliverMessage(TestMessage message); } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestResourceAdapterInflowResults.java Index: TestResourceAdapterInflowResults.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; import java.io.Serializable; /** * Management interface of TestResourceAdapter. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class TestResourceAdapterInflowResults implements Serializable { public Result basicTest = new Result(); } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestActivationSpec.java Index: TestActivationSpec.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; import javax.resource.ResourceException; import javax.resource.spi.ActivationSpec; import javax.resource.spi.InvalidPropertyException; import javax.resource.spi.ResourceAdapter; /** * A TestActivationSpec. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class TestActivationSpec implements ActivationSpec { private ResourceAdapter ra; private String name; public void validate() throws InvalidPropertyException { // TODO validate } public String getName() { return name; } public void setName(String name) { this.name = name; } public ResourceAdapter getResourceAdapter() { return ra; } public void setResourceAdapter(ResourceAdapter ra) throws ResourceException { this.ra = ra; } public String toString() { return "TestActivationSpec with name " + name; } } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestMessage.java Index: TestMessage.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; /** * A TestMessage. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class TestMessage { boolean acknowledged = false; public void acknowledge() { acknowledged = true; } } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/Result.java Index: Result.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; import java.io.Serializable; /** * A test result * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class Result implements Serializable { private boolean passed = false; private Throwable error; public void pass() { passed = true; } public void fail(Throwable t) { error = t; } public void check() throws Throwable { if (passed == false) { if (error != null) throw error; else throw new Exception("Failed"); } } } 1.1 jbosstest/src/main/org/jboss/test/jca/inflow/TestResourceAdapter.java Index: TestResourceAdapter.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.test.jca.inflow; import java.util.Iterator; import java.util.Map; import javax.management.MBeanServer; import javax.management.ObjectName; import javax.resource.ResourceException; import javax.resource.spi.ActivationSpec; import javax.resource.spi.BootstrapContext; import javax.resource.spi.ResourceAdapter; import javax.resource.spi.ResourceAdapterInternalException; import javax.resource.spi.endpoint.MessageEndpoint; import javax.resource.spi.endpoint.MessageEndpointFactory; import javax.transaction.xa.XAResource; import org.jboss.logging.Logger; import org.jboss.mx.util.MBeanServerLocator; import org.jboss.mx.util.ObjectNameFactory; import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap; /** * A TestResourceAdapter. * * @author <a href="ad...@jb...">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class TestResourceAdapter implements ResourceAdapter, TestResourceAdapterMBean { private static final Logger log = Logger.getLogger(TestResourceAdapter.class); public static final ObjectName mbean = ObjectNameFactory.create("jboss.test:test=TestResourceAdapter"); private BootstrapContext ctx; private ConcurrentReaderHashMap endpoints = new ConcurrentReaderHashMap(); public TestResourceAdapterInflowResults testInflow() throws Exception { TestResourceAdapterInflowResults results = new TestResourceAdapterInflowResults(); try { basicTest(); results.basicTest.pass(); } catch (Throwable t) { results.basicTest.fail(t); } return results; } public void basicTest() throws Exception { MessageEndpoint endpoint = getEndpoint("testInflow"); if (endpoint == null) throw new Exception("Null endpoint"); TestMessage message = new TestMessage(); ((TestMessageListener) endpoint).deliverMessage(message); if (message.acknowledged == false) throw new Exception("MDB did not acknowledge the message"); } public void endpointActivation(MessageEndpointFactory endpointFactory, ActivationSpec spec) throws ResourceException { MessageEndpoint endpoint = endpointFactory.createEndpoint(null); endpoints.put(spec, endpoint); } public void endpointDeactivation(MessageEndpointFactory endpointFactory, ActivationSpec spec) { MessageEndpoint endpoint = (MessageEndpoint) endpoints.remove(spec); if (endpoint != null) endpoint.release(); } public XAResource[] getXAResources(ActivationSpec[] specs) throws ResourceException { // TODO getXAResources return null; } public void start(BootstrapContext ctx) throws ResourceAdapterInternalException { this.ctx = ctx; try { MBeanServer server = MBeanServerLocator.locateJBoss(); server.registerMBean(this, mbean); } catch (Exception e) { throw new ResourceAdapterInternalException(e); } } public void stop() { try { MBeanServer server = MBeanServerLocator.locateJBoss(); server.unregisterMBean(mbean); for (Iterator i = endpoints.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); MessageEndpoint endpoint = (MessageEndpoint) entry.getValue(); endpoint.release(); i.remove(); } } catch (Exception ignored) { } } private MessageEndpoint getEndpoint(String name) throws Exception { for (Iterator i = endpoints.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); TestActivationSpec spec = (TestActivationSpec) entry.getKey(); if (name.equals(spec.getName())) return (MessageEndpoint) entry.getValue(); } throw new Exception("MessageEndpoint not found for name: " + name); } } |