/** * EasyBeans * Copyright (C) 2006 Bull S.A.S. * Contact: easybeans@ow2.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * * -------------------------------------------------------------------------- * $Id: MDBResourceAdapterHelper.java 5369 2010-02-24 14:58:19Z benoitf $ * -------------------------------------------------------------------------- */ package org.ow2.easybeans.container.mdb.helper; import javax.resource.ResourceException; import javax.resource.spi.ResourceAdapter; import org.ow2.easybeans.component.api.EZBComponent; import org.ow2.easybeans.component.itf.JMSComponent; import org.ow2.easybeans.server.Embedded; /** * This class allow to get the ResourceAdapter object for a given destination * (activation-spec object). * @author Florent Benoit */ public final class MDBResourceAdapterHelper { /** * Implementation of a finder. */ private static IResourceAdapterFinder resourceAdapterFinder = null; /** * Utility class, no public constructor. */ private MDBResourceAdapterHelper() { } /** * Gets the resource adapter object for the given jndi name (activation * spec) and the given embedded object. * @param jndiName the nameof the activation spec bound in the registry * @param embedded the embedded server * @return an instance of the resource adapter that provides the MDB * activation spec. * @throws ResourceException if an error occurs while trying to get the * resource adapter. */ public static ResourceAdapter getResourceAdapter(final String jndiName, final Embedded embedded) throws ResourceException { // Use the delegate if set if (resourceAdapterFinder != null) { return resourceAdapterFinder.getResourceAdapter(jndiName); } // try to see if JMS mini-resource adapter service was started. EZBComponent component = embedded.getComponent("org.ow2.easybeans.component.joram.JoramComponent"); if (component != null) { // get ResourceAdapter from the service if (component instanceof JMSComponent) { return ((JMSComponent) component).getResourceAdapter(); } throw new IllegalArgumentException("The 'jms' component doesn't implement JMSComponent interface."); } throw new ResourceException("MDB is used but no resource service was started."); } /** * Sets the finder object that can be used to get the resource adapter object. * @param finder the given instance. */ public static void setResourceAdapterFinder(final IResourceAdapterFinder finder) { if (resourceAdapterFinder != null) { throw new IllegalStateException("Unable to set the finder. It is already set"); } resourceAdapterFinder = finder; } }