package org.mobicents.slee.resource.diameter.cxdx; import javax.slee.ActivityContextInterface; 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.ActivityContextFactoryImpl; import org.mobicents.slee.runtime.ActivityContextInterfaceImpl; import net.java.slee.resource.diameter.cxdx.CxDxActivityContextInterfaceFactory; import net.java.slee.resource.diameter.cxdx.CxDxClientSession; import net.java.slee.resource.diameter.cxdx.CxDxServerSession; /** * * CxDxActivityContextInterfaceFactoryImpl.java * * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> * @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a> */ public class CxDxActivityContextInterfaceFactoryImpl implements CxDxActivityContextInterfaceFactory { private static final Logger logger = Logger.getLogger(CxDxActivityContextInterfaceFactoryImpl.class); private SleeContainer serviceContainer; private String jndiName; private ActivityContextFactoryImpl factory; private String raEntityName; /** * * @param serviceContainer * @param jndiName */ public CxDxActivityContextInterfaceFactoryImpl(SleeContainer serviceContainer, String jndiName) { super(); if (logger.isInfoEnabled()) { logger.info("Diameter Cx/Dx RA :: CxDxActivityContextInterfaceFactoryImpl :: serviceContainer["+ serviceContainer + "], jndiName[" + jndiName + "]."); } this.serviceContainer = serviceContainer; this.jndiName = "java:slee/resources/" + jndiName + "/diameter-cxdx-ra-acif"; this.factory = serviceContainer.getActivityContextFactory(); this.raEntityName = jndiName; } public String getJndiName() { return this.jndiName; } /* (non-Javadoc) * @see net.java.slee.resource.diameter.cxdx.CxDxActivityContextInterfaceFactory#getActivityContextInterface(net.java.slee.resource.diameter.cxdx.CxDxClientSession) */ public ActivityContextInterface getActivityContextInterface(CxDxClientSession cxdxcs) { if (logger.isInfoEnabled()) { logger.info("Diameter Cx/Dx RA :: getActivityContextInterface :: activity[" + cxdxcs + "]."); } return this.getActivityContextInterface((DiameterActivityImpl)cxdxcs); } /* (non-Javadoc) * @see net.java.slee.resource.diameter.cxdx.CxDxActivityContextInterfaceFactory#getActivityContextInterface(net.java.slee.resource.diameter.cxdx.CxDxServerSession) */ public ActivityContextInterface getActivityContextInterface(CxDxServerSession cxdxss) { if (logger.isInfoEnabled()) { logger.info("Diameter Cx/Dx RA :: getActivityContextInterface :: activity[" + cxdxss + "]."); } return this.getActivityContextInterface((DiameterActivityImpl)cxdxss); } /** * Creates a ACI from a given Diameter Activity (either Cx/Dx Server/Client Session) * @param session the Cx/Dx 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()); } }