package org.mobicents.slee.resource.diameter.cca;
import javax.slee.ActivityContextInterface;
import net.java.slee.resource.diameter.cca.CreditControlActivityContextInterfaceFactory;
import net.java.slee.resource.diameter.cca.CreditControlClientSession;
import net.java.slee.resource.diameter.cca.CreditControlServerSession;
import org.apache.log4j.Logger;
import org.mobicents.slee.container.SleeContainer;
import org.mobicents.slee.resource.SleeActivityHandle;
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;
public class CreditControlActivityContextInterfaceFactoryImpl implements CreditControlActivityContextInterfaceFactory {
private static final Logger logger = Logger.getLogger(CreditControlActivityContextInterfaceFactoryImpl.class);
private SleeContainer serviceContainer = null;
private String jndiName = null;
private ActivityContextFactory factory = null;
private String raEntityName = null;
public CreditControlActivityContextInterfaceFactoryImpl(SleeContainer serviceContainer, String jndiName)
{
super();
if (logger.isInfoEnabled())
logger.info("Diameter CCA RA :: CreditControlActivityContextInterfaceFactoryImpl :: serviceContainer["+ serviceContainer + "], jndiName[" + jndiName + "].");
this.serviceContainer = serviceContainer;
this.jndiName = "java:slee/resources/" + jndiName + "/diameter-cca-ra-acif";
this.factory = serviceContainer.getActivityContextFactory();
this.raEntityName = jndiName;
}
public String getJndiName()
{
return this.jndiName;
}
/*
* (non-Javadoc)
* @see net.java.slee.resource.diameter.cca.CreditControlActivityContextInterfaceFactory#getActivityContextInterface(net.java.slee.resource.diameter.cca.CreditControlClientSession)
*/
public ActivityContextInterface getActivityContextInterface(CreditControlClientSession cccs)
{
if (logger.isInfoEnabled())
logger.info("Diameter CCA RA :: getActivityContextInterface :: activity[" + cccs + "].");
return this.getActivityContextInterface( (DiameterActivityImpl)cccs );
}
/*
* (non-Javadoc)
* @see net.java.slee.resource.diameter.cca.CreditControlActivityContextInterfaceFactory#getActivityContextInterface(net.java.slee.resource.diameter.cca.CreditControlServerSession)
*/
public ActivityContextInterface getActivityContextInterface(CreditControlServerSession ccss)
{
if (logger.isInfoEnabled())
logger.info("Diameter CCA RA :: getActivityContextInterface :: activity[" + ccss + "].");
return this.getActivityContextInterface( (DiameterActivityImpl)ccss );
}
/**
* Creates a ACI from a given Diameter Activity (either CC Server/Client Session)
* @param session the Credit-Control Server/Client Session
* @return an ActivityContextInterface wrapping the session
*/
private ActivityContextInterface getActivityContextInterface(DiameterActivityImpl session)
{
SleeActivityHandle sah = new SleeActivityHandle(raEntityName, session.getActivityHandle(), serviceContainer);
ActivityContext ac = this.factory.getActivityContext(sah);
return new ActivityContextInterfaceImpl(this.serviceContainer, ac.getActivityContextId());
}
}