/*
* JBoss, Home of Professional Open Source.
* Copyright 2017, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This 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 (at your option) any later version.
*
* This software 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 software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.test.integration.ejb.mdb.activationname.adapter;
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.MessageEndpointFactory;
import javax.transaction.xa.XAResource;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @author Ivo Studensky
*/
public class SimpleResourceAdapter implements ResourceAdapter {
private Map<SimpleActivationSpec, SimpleActivation> activations;
public SimpleResourceAdapter() {
this.activations = Collections.synchronizedMap(new HashMap<SimpleActivationSpec, SimpleActivation>());
}
@Override
public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
}
@Override
public void stop() {
}
@Override
public void endpointActivation(MessageEndpointFactory messageEndpointFactory, ActivationSpec activationSpec) throws ResourceException {
final String activationName = messageEndpointFactory.getActivationName();
if (activationName == null) {
throw new ResourceException("MessageEndpointFactory#getActivationName() cannot be null [WFLY-8074].");
}
SimpleActivation activation = new SimpleActivation(this, messageEndpointFactory, (SimpleActivationSpec) activationSpec);
activations.put((SimpleActivationSpec) activationSpec, activation);
activation.start();
}
@Override
public void endpointDeactivation(MessageEndpointFactory messageEndpointFactory, ActivationSpec activationSpec) {
SimpleActivation activation = activations.remove(activationSpec);
if (activation != null) { activation.stop(); }
}
@Override
public XAResource[] getXAResources(ActivationSpec[] activationSpecs) throws ResourceException {
return new XAResource[0];
}
@Override
public int hashCode() {
int result = 17;
return result;
}
@Override
public boolean equals(final Object other) {
if (other == null) { return false; }
if (other == this) { return true; }
if (!(other instanceof SimpleResourceAdapter)) { return false; }
SimpleResourceAdapter obj = (SimpleResourceAdapter) other;
boolean result = true;
return result;
}
class SimpleActivation {
private SimpleResourceAdapter ra;
private SimpleActivationSpec spec;
private MessageEndpointFactory endpointFactory;
public SimpleActivation(SimpleResourceAdapter ra,
MessageEndpointFactory endpointFactory,
SimpleActivationSpec spec)
throws ResourceException {
this.ra = ra;
this.endpointFactory = endpointFactory;
this.spec = spec;
}
public SimpleActivationSpec getActivationSpec() {
return spec;
}
public MessageEndpointFactory getMessageEndpointFactory() {
return endpointFactory;
}
public void start() throws ResourceException {
}
public void stop() {
}
}
}