package org.mobicents.slee.resource.diameter.cxdx;
import net.java.slee.resource.diameter.base.DiameterMessageFactory;
import net.java.slee.resource.diameter.base.events.avp.DiameterIdentity;
import net.java.slee.resource.diameter.cxdx.CxDxMessageFactory;
import net.java.slee.resource.diameter.cxdx.events.LocationInfoRequest;
import net.java.slee.resource.diameter.cxdx.events.MultimediaAuthenticationRequest;
import net.java.slee.resource.diameter.cxdx.events.PushProfileRequest;
import net.java.slee.resource.diameter.cxdx.events.RegistrationTerminationRequest;
import net.java.slee.resource.diameter.cxdx.events.ServerAssignmentRequest;
import net.java.slee.resource.diameter.cxdx.events.UserAuthorizationRequest;
import org.apache.log4j.Logger;
import org.jdiameter.api.ApplicationId;
import org.jdiameter.api.Avp;
import org.jdiameter.api.IllegalDiameterStateException;
import org.jdiameter.api.InternalException;
import org.jdiameter.api.Message;
import org.jdiameter.api.Session;
import org.jdiameter.api.Stack;
import org.mobicents.slee.resource.diameter.base.DiameterMessageFactoryImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.LocationInfoRequestImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.MultimediaAuthenticationRequestImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.PushProfileRequestImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.RegistrationTerminationRequestImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.ServerAssignmentRequestImpl;
import org.mobicents.slee.resource.diameter.cxdx.events.UserAuthorizationRequestImpl;
/**
*
* CxDxMessageFactoryImpl.java
*
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
* @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
*/
public class CxDxMessageFactoryImpl extends DiameterMessageFactoryImpl implements CxDxMessageFactory {
private static Logger logger = Logger.getLogger(CxDxMessageFactoryImpl.class);
private ApplicationId cxdxAppId = ApplicationId.createByAuthAppId(_CXDX_VENDOR, _CXFX_AUTH_APP_ID);
private DiameterMessageFactory baseMessagefactory;
/**
* @param session
* @param stack
* @param avps
*/
public CxDxMessageFactoryImpl(Session session, Stack stack, DiameterIdentity... avps) {
super(session, stack, avps);
this.baseMessagefactory = new DiameterMessageFactoryImpl(stack);
}
/**
* @param stack
*/
public CxDxMessageFactoryImpl(Stack stack) {
super(stack);
this.baseMessagefactory = new DiameterMessageFactoryImpl(stack);
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createLocationInfoRequest()
*/
public LocationInfoRequest createLocationInfoRequest() {
LocationInfoRequest lir = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(LocationInfoRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
lir = new LocationInfoRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create Location-Info-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create Location-Info-Request", e);
}
return lir;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createLocationInfoRequest(java.lang.String)
*/
public LocationInfoRequest createLocationInfoRequest(String sessionId) throws IllegalArgumentException {
LocationInfoRequest lir = createLocationInfoRequest();
lir.setSessionId(sessionId);
return lir;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createMultimediaAuthenticationRequest()
*/
public MultimediaAuthenticationRequest createMultimediaAuthenticationRequest() {
MultimediaAuthenticationRequest mar = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(MultimediaAuthenticationRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
mar = new MultimediaAuthenticationRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create Multimedia-Authentication-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create Multimedia-Authentication-Request", e);
}
return mar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createMultimediaAuthenticationRequest(java.lang.String)
*/
public MultimediaAuthenticationRequest createMultimediaAuthenticationRequest(String sessionId) throws IllegalArgumentException {
MultimediaAuthenticationRequest mar = createMultimediaAuthenticationRequest();
mar.setSessionId(sessionId);
return mar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createPushProfileRequest()
*/
public PushProfileRequest createPushProfileRequest() {
PushProfileRequest ppr = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(PushProfileRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
ppr = new PushProfileRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create Push-Profile-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create Push-Profile-Request", e);
}
return ppr;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createPushProfileRequest(java.lang.String)
*/
public PushProfileRequest createPushProfileRequest(String sessionId) throws IllegalArgumentException {
PushProfileRequest ppr = createPushProfileRequest();
ppr.setSessionId(sessionId);
return ppr;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createRegistrationTerminationRequest()
*/
public RegistrationTerminationRequest createRegistrationTerminationRequest() {
RegistrationTerminationRequest rtr = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(RegistrationTerminationRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
rtr = new RegistrationTerminationRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create Registration-Termination-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create Registration-Termination-Request", e);
}
return rtr;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createRegistrationTerminationRequest(java.lang.String)
*/
public RegistrationTerminationRequest createRegistrationTerminationRequest(String sessionId) throws IllegalArgumentException {
RegistrationTerminationRequest rtr = createRegistrationTerminationRequest();
rtr.setSessionId(sessionId);
return rtr;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createServerAssignmentRequest()
*/
public ServerAssignmentRequest createServerAssignmentRequest() {
ServerAssignmentRequest sar = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(ServerAssignmentRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
sar = new ServerAssignmentRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create Server-Assignment-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create Server-Assignment-Request", e);
}
return sar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createServerAssignmentRequest(java.lang.String)
*/
public ServerAssignmentRequest createServerAssignmentRequest(String sessionId) throws IllegalArgumentException {
ServerAssignmentRequest sar = createServerAssignmentRequest();
sar.setSessionId(sessionId);
return sar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createUserAuthorizationRequest()
*/
public UserAuthorizationRequest createUserAuthorizationRequest() {
UserAuthorizationRequest uar = null;
try {
Message msg = stack.getSessionFactory().getNewRawSession().createMessage(UserAuthorizationRequest.COMMAND_CODE, cxdxAppId, new Avp[]{});
msg.setRequest(true);
uar = new UserAuthorizationRequestImpl(msg);
}
catch (InternalException e) {
logger.error("Failed to create User-Authorization-Request", e);
}
catch (IllegalDiameterStateException e) {
logger.error("Failed to create User-Authorization-Request", e);
}
return uar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#createUserAuthorizationRequest(java.lang.String)
*/
public UserAuthorizationRequest createUserAuthorizationRequest(String sessionId) throws IllegalArgumentException {
UserAuthorizationRequest uar = createUserAuthorizationRequest();
uar.setSessionId(sessionId);
return uar;
}
/* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxMessageFactory#getBaseMessageFactory()
*/
public DiameterMessageFactory getBaseMessageFactory() {
return baseMessagefactory;
}
}