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);
       }
     }
   }

Reply via email to