use of org.mobicents.slee.resource.diameter.base.events.DiameterMessageImpl in project jain-slee.diameter by RestComm.
the class RxServerSessionActivityImpl method sendAAAnswer.
/**
* {@inheritDoc}
*/
@Override
public void sendAAAnswer(final AAAnswer aaa) throws IOException {
fetchCurrentState(aaa);
final DiameterMessageImpl msg = (DiameterMessageImpl) aaa;
try {
session.sendAAAnswer(new RxAAAnswerImpl((Answer) msg.getGenericData()));
} catch (org.jdiameter.api.validation.AvpNotAllowedException e) {
final AvpNotAllowedException anae = new AvpNotAllowedException("Message validation failed.", e, e.getAvpCode(), e.getVendorId());
throw anae;
} catch (Exception e) {
throw new IOException("Failed to send message.", e);
}
}
use of org.mobicents.slee.resource.diameter.base.events.DiameterMessageImpl in project jain-slee.diameter by RestComm.
the class S13ClientSessionImpl method sendMEIdentityCheckRequest.
public void sendMEIdentityCheckRequest(MEIdentityCheckRequest ecr) throws IOException {
DiameterMessageImpl msg = (DiameterMessageImpl) ecr;
JMEIdentityCheckRequestImpl request = new JMEIdentityCheckRequestImpl((Request) msg.getGenericData());
try {
appSession.sendMEIdentityCheckRequest(request);
} catch (org.jdiameter.api.validation.AvpNotAllowedException anae) {
throw new AvpNotAllowedException(anae.getMessage(), anae.getAvpCode(), anae.getVendorId());
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug("Failed to send message.", e);
}
throw new IOException(e.getMessage());
}
}
use of org.mobicents.slee.resource.diameter.base.events.DiameterMessageImpl in project jain-slee.diameter by RestComm.
the class S13ServerSessionImpl method sendMEIdentityCheckAnswer.
public void sendMEIdentityCheckAnswer(MEIdentityCheckAnswer eca) throws IOException {
DiameterMessageImpl msg = (DiameterMessageImpl) eca;
JMEIdentityCheckAnswerImpl answer = new JMEIdentityCheckAnswerImpl((Answer) msg.getGenericData());
try {
appSession.sendMEIdentityCheckAnswer(answer);
} catch (org.jdiameter.api.validation.AvpNotAllowedException anae) {
throw new AvpNotAllowedException(anae.getMessage(), anae.getAvpCode(), anae.getVendorId());
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug("Failed to send message.", e);
}
throw new IOException(e.getMessage());
}
}
use of org.mobicents.slee.resource.diameter.base.events.DiameterMessageImpl in project jain-slee.diameter by RestComm.
the class CxDxServerSessionImpl method sendUserAuthorizationAnswer.
/*
* (non-Javadoc)
* @see net.java.slee.resource.diameter.cxdx.CxDxServerSession#sendUserAuthorizationAnswer(net.java.slee.resource.diameter.cxdx.events.UserAuthorizationAnswer)
*/
public void sendUserAuthorizationAnswer(UserAuthorizationAnswer userAuthorizationAnswer) throws IOException {
DiameterMessageImpl msg = (DiameterMessageImpl) userAuthorizationAnswer;
JUserAuthorizationAnswerImpl answer = new JUserAuthorizationAnswerImpl((Answer) msg.getGenericData());
try {
appSession.sendUserAuthorizationAnswer(answer);
} catch (org.jdiameter.api.validation.AvpNotAllowedException anae) {
throw new AvpNotAllowedException(anae.getMessage(), anae.getAvpCode(), anae.getVendorId());
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug("Failed to send message.", e);
}
throw new IOException(e.getMessage());
}
}
use of org.mobicents.slee.resource.diameter.base.events.DiameterMessageImpl in project jain-slee.diameter by RestComm.
the class DiameterActivityAnswerCreationHelper method testAnswerCreation.
public static void testAnswerCreation(DiameterActivity activity, String messageListFieldName, ArrayList<DiameterMessage> requestList) {
try {
Field f = activity.getClass().getDeclaredField(messageListFieldName);
assertNotNull("There is no such field: " + messageListFieldName, f);
f.setAccessible(true);
boolean setOnIterate = false;
if (f.get(activity) instanceof Collection) {
f.set(activity, requestList);
} else {
setOnIterate = true;
}
for (DiameterMessage request : requestList) {
if (setOnIterate) {
f.set(activity, request);
}
DiameterMessageImpl requestImpl = (DiameterMessageImpl) request;
// This is cause some of them are zeros :)
((MessageImpl) requestImpl.getGenericData()).setEndToEndIdentifier((long) (Math.random() * 10000));
((MessageImpl) requestImpl.getGenericData()).setHopByHopIdentifier((long) (Math.random() * 10000));
Class<? extends DiameterActivity> activityClass = activity.getClass();
String className = request.getClass().getName();
String packageName = request.getClass().getPackage().getName();
String methodName = "create" + (className.replace(packageName + ".", "").replace("RequestImpl", "Answer"));
Method[] methods = activityClass.getMethods();
for (Method createAnswerMethod : methods) {
if (!createAnswerMethod.getName().equals(methodName)) {
// System.err.println("Skipping: "+createAnswerMethod.getName());
continue;
}
// System.err.println("Doing magic for: "+createAnswerMethod.getName());
// here we can have 3 types of methods:
// #1 without parameters
// #2 with long, boolean parameters
// #3 with different param!!
Object[] args = null;
Class<?>[] parameters = createAnswerMethod.getParameterTypes();
if (parameters.length == 0) {
args = new Object[] {};
// params are null
} else {
args = new Object[parameters.length];
for (int i = 0; i < parameters.length; i++) {
args[i] = instantiate(parameters[i]);
}
}
// we only want to see that code matches and answer is not zero? do we want to test AVPs ?
DiameterMessage answer = (DiameterMessage) createAnswerMethod.invoke(activity, args);
assertNotNull("Answer is null for method name: " + methodName, answer);
if (answer == null)
return;
// some basic tests, we don't test values passed, maybe we should ?
assertEquals("Command code is not equal", request.getCommand().getCode(), answer.getCommand().getCode());
assertFalse("Answer should have R flag set to false.", answer.getCommand().isRequest());
assertEquals("E2E is not equal", request.getHeader().getEndToEndId(), answer.getHeader().getEndToEndId());
assertEquals("HBH is not equal", request.getHeader().getHopByHopId(), answer.getHeader().getHopByHopId());
}
}
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
}
Aggregations