Revision: 6d5204d1c4d2
Author: Alexandre Mendonça <ammendonca>
Date: Mon Jan 21 20:15:21 2013
Log: Fixing "Diameter Client CCA Session ClassCastException in
handleSendFailure"
Fixes Issue 35
http://code.google.com/p/jdiameter/source/detail?r=6d5204d1c4d2
Modified:
/core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/app/cca/ClientCCASessionImpl.java
=======================================
---
/core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/app/cca/ClientCCASessionImpl.java
Sat Jan 12 18:33:26 2013
+++
/core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/app/cca/ClientCCASessionImpl.java
Mon Jan 21 20:15:21 2013
@@ -672,7 +672,7 @@
// Action: Store request with T-flag
// New State: IDLE
request.setReTransmitted(true);
- this.sessionData.setBuffer((Request)
((AppEventImpl)request).getMessage());
+ this.sessionData.setBuffer((Request) request);
setState(ClientCCASessionState.IDLE, false);
break;
@@ -694,7 +694,7 @@
// New State: IDLE
setState(ClientCCASessionState.IDLE, false);
request.setReTransmitted(true);
- this.sessionData.setBuffer((Request)
((AppEventImpl)request).getMessage());
+ this.sessionData.setBuffer((Request) request);
}
else {
logger.warn("Invalid Requested-Action AVP value {}",
gatheredRequestedAction);
@@ -752,10 +752,10 @@
}
}
- protected void handleFailureMessage(JCreditControlAnswer event,
JCreditControlRequest request, Event.Type eventType) {
+ protected void handleFailureMessage(JCreditControlAnswer answer,
JCreditControlRequest request, Event.Type eventType) {
try {
// Event Based
----------------------------------------------------------
- long resultCode = event.getResultCodeAvp().getUnsigned32();
+ long resultCode = answer.getResultCodeAvp().getUnsigned32();
ClientCCASessionState state =
this.sessionData.getClientCCASessionState();
Serializable txTimerId = this.sessionData.getTxTimerId();
if (isEventBased()) {
@@ -769,7 +769,7 @@
// Action: Terminate end user�s service
// New State: IDLE
context.denyAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if(gatheredRequestedAction == DIRECT_DEBITING &&
txTimerId == null) {
@@ -786,7 +786,7 @@
// Action: Grant service to end user
// New State: IDLE
context.grantAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if (temporaryErrorCodes.contains(resultCode)) {
@@ -796,7 +796,7 @@
// Action: Indicate service error
// New State: IDLE
context.indicateServiceError(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if (gatheredRequestedAction == DIRECT_DEBITING) {
@@ -806,7 +806,7 @@
// Action: Grant service to end user
// New State: IDLE
context.grantAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if (getLocalDDFH() == DDFH_TERMINATE_OR_BUFFER &&
txTimerId != null) {
@@ -815,7 +815,7 @@
// Action: Terminate end user�s service
// New State: IDLE
context.denyAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
}
@@ -824,7 +824,7 @@
// Event: Temporary error, and requested action
REFUND_ACCOUNT
// Action: Store request
// New State: IDLE
- this.sessionData.setBuffer((Request)
((AppEventImpl)request).getMessage());
+ this.sessionData.setBuffer((Request) request.getMessage());
setState(ClientCCASessionState.IDLE, false);
}
else {
@@ -838,7 +838,7 @@
// Action: Indicate service error
// New State: IDLE
context.indicateServiceError(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if (gatheredRequestedAction == DIRECT_DEBITING) {
@@ -848,7 +848,7 @@
// Action: Grant service to end user
// New State: IDLE
context.grantAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else if (getLocalDDFH() == DDFH_TERMINATE_OR_BUFFER &&
txTimerId != null) {
@@ -857,7 +857,7 @@
// Action: Terminate end user�s service
// New State: IDLE
context.denyAccessOnFailureMessage(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
}
@@ -868,7 +868,7 @@
// New State: IDLE
this.sessionData.setBuffer(null);
context.indicateServiceError(this);
- deliverCCAnswer(request, event);
+ deliverCCAnswer(request, answer);
setState(ClientCCASessionState.IDLE);
}
else {
@@ -987,7 +987,7 @@
}
catch (Exception e) {
if(logger.isDebugEnabled()) {
- logger.debug("Failure handling failure message for Event " + event
+ " (" + eventType + ") and Request " + request, e);
+ logger.debug("Failure handling failure message for Event " +
answer + " (" + eventType + ") and Request " + request, e);
}
}
}