package org.mobicents.slee.resource.xcapclient; import javax.slee.ActivityContextInterface; import javax.slee.FactoryException; import javax.slee.UnrecognizedActivityException; import javax.slee.resource.ResourceAdaptor; import org.mobicents.slee.container.SleeContainer; import org.mobicents.slee.resource.ResourceAdaptorActivityContextInterfaceFactory; import org.mobicents.slee.resource.ResourceAdaptorEntity; import org.mobicents.slee.resource.SleeActivityHandle; import org.mobicents.slee.resource.xcapclient.AsyncActivity; import org.mobicents.slee.resource.xcapclient.XCAPClientActivityContextInterfaceFactory; import org.mobicents.slee.resource.xcapclient.XCAPResourceAdaptorActivityHandle; import org.mobicents.slee.runtime.ActivityContextFactory; import org.mobicents.slee.runtime.ActivityContextInterfaceImpl; /** * @author Eduardo Martins * @version 2.0 * */ public class XCAPClientActivityContextInterfaceFactoryImpl implements ResourceAdaptorActivityContextInterfaceFactory, XCAPClientActivityContextInterfaceFactory { private final String jndiName = "java:slee/resources/xcapclientacif"; private String raEntityName; private SleeContainer sleeContainer; private ActivityContextFactory activityContextFactory; public XCAPClientActivityContextInterfaceFactoryImpl(SleeContainer sleeContainer, String raEntityName) { this.sleeContainer = sleeContainer; this.activityContextFactory = sleeContainer.getActivityContextFactory(); this.raEntityName = raEntityName; } public String getJndiName() { return jndiName; } public ActivityContextInterface getActivityContextInterface(AsyncActivity activity) throws NullPointerException, UnrecognizedActivityException, FactoryException { // if parameter is null throw exception if (activity == null) { throw new NullPointerException(); } // get handle XCAPResourceAdaptorActivityHandle handle = ((AsyncActivityImpl)activity).getHandle(); // check if activity exists ResourceAdaptorEntity raEntity = sleeContainer.getResourceAdaptorEnitity(raEntityName); ResourceAdaptor ra = raEntity.getResourceAdaptor(); // if it doesn't exist throw exception if (ra.getActivity(handle) == null) { throw new UnrecognizedActivityException(activity); } else { return new ActivityContextInterfaceImpl(this.sleeContainer, this.activityContextFactory.getActivityContext(new SleeActivityHandle(raEntityName, handle, sleeContainer)).getActivityContextId()); } } }