package org.mobicents.slee.resource.diameter.rf; import javax.slee.ActivityContextInterface; import net.java.slee.resource.diameter.base.DiameterActivity; import net.java.slee.resource.diameter.rf.RfActivityContextInterfaceFactory; import net.java.slee.resource.diameter.rf.RfClientSession; import net.java.slee.resource.diameter.rf.RfServerSession; import org.apache.log4j.Logger; import org.mobicents.slee.container.SleeContainer; import org.mobicents.slee.resource.SleeActivityHandle; import org.mobicents.slee.resource.diameter.base.DiameterActivityContextInterfaceFactoryImpl; import org.mobicents.slee.resource.diameter.base.DiameterActivityImpl; import org.mobicents.slee.runtime.ActivityContext; import org.mobicents.slee.runtime.ActivityContextFactory; import org.mobicents.slee.runtime.ActivityContextInterfaceImpl; /** * * RfActivityContextInterfaceFactoryImpl.java * * <br>Project: mobicents * <br>11:27:47 AM Mar 25, 2009 * <br> * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> */ public class RfActivityContextInterfaceFactoryImpl extends DiameterActivityContextInterfaceFactoryImpl implements RfActivityContextInterfaceFactory { private static final Logger logger = Logger.getLogger(RfActivityContextInterfaceFactoryImpl.class); private SleeContainer sleeContainer = null; private ActivityContextFactory acFactory; private String raEntityName; private String jndiName; public RfActivityContextInterfaceFactoryImpl(SleeContainer sleeContainer, String jndiName) { super( sleeContainer, jndiName ); logger.info("Diameter Rf RA :: RfActivityContextInterfaceFactoryImpl :: sleeContainer["+ sleeContainer + "], jndiName[" + jndiName + "]."); this.jndiName = "java:slee/resources/" + jndiName + "/diameter-rf-ra-acif"; this.sleeContainer = sleeContainer; this.acFactory = sleeContainer.getActivityContextFactory(); this.raEntityName = jndiName; } public ActivityContextInterface getActivityContextInterface(RfClientSession session) { logger.info("Diameter Rf RA :: getActivityContextInterface :: activity[" + session + "]."); return this.getActivityContextInterface( (DiameterActivityImpl)session ); } public ActivityContextInterface getActivityContextInterface(RfServerSession session) { logger.info("Diameter Rf RA :: getActivityContextInterface :: activity[" + session + "]."); return this.getActivityContextInterface( (DiameterActivityImpl)session ); } public ActivityContextInterface getActivityContextInterface(DiameterActivity activity) { logger.info("Diameter Rf RA :: getActivityContextInterface :: activity[" + activity + "]."); return this.getActivityContextInterface( (DiameterActivityImpl)activity ); } private ActivityContextInterface getActivityContextInterface(DiameterActivityImpl session) { if(session == null) { throw new NullPointerException("Diameter Rf RA :: getActivityContextInterface :: Activity cannot be null."); } SleeActivityHandle sah = new SleeActivityHandle(raEntityName, session.getActivityHandle(), sleeContainer); ActivityContext ac = this.acFactory.getActivityContext(sah); return new ActivityContextInterfaceImpl(this.sleeContainer, ac.getActivityContextId()); } public String getJndiName() { return this.jndiName; } }