package org.openxdm.xcap.server.slee.resource.datasource; 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.runtime.ActivityContextFactory; import org.mobicents.slee.runtime.ActivityContextInterfaceImpl; /** * @author Eduardo Martins * @version 1.0 * */ public class DataSourceActivityContextInterfaceFactoryImpl implements ResourceAdaptorActivityContextInterfaceFactory, DataSourceActivityContextInterfaceFactory { private final String jndiName = "java:slee/resources/datasourceacif"; private String raEntityName; private SleeContainer sleeContainer; private ActivityContextFactory activityContextFactory; public DataSourceActivityContextInterfaceFactoryImpl(SleeContainer sleeContainer, String raEntityName) { this.sleeContainer = sleeContainer; this.activityContextFactory = sleeContainer.getActivityContextFactory(); this.raEntityName = raEntityName; } public String getJndiName() { return jndiName; } public ActivityContextInterface getActivityContextInterface(DocumentActivity activity) throws NullPointerException, UnrecognizedActivityException, FactoryException { return getACI(activity); } public ActivityContextInterface getActivityContextInterface(AppUsageActivity activity) throws NullPointerException, UnrecognizedActivityException, FactoryException { return getACI(activity); } private ActivityContextInterface getACI(ActivityObject activity) throws NullPointerException, UnrecognizedActivityException, FactoryException { // if parameter is null throw exception if (activity == null) { throw new NullPointerException(); } // check if activity exists ResourceAdaptorEntity raEntity; try { raEntity = sleeContainer.getResourceAdaptorEntity(raEntityName); } catch (Exception e) { throw new FactoryException("",e); } ResourceAdaptor ra = raEntity.getResourceAdaptor(); // if it doesn't exist throw exception ActivityHandle activityHandle = new ActivityHandle(activity.id); if (ra.getActivity(activityHandle) == null) { throw new UnrecognizedActivityException(activity); } else { return new ActivityContextInterfaceImpl(sleeContainer, this.activityContextFactory.getActivityContext(new SleeActivityHandle(raEntityName, activityHandle, sleeContainer)).getActivityContextId()); } } }