Revision: 73e01c49d53c
Author:   [email protected] <[email protected]>
Date:     Mon Jan 21 03:49:14 2013
Log: Issue 18: CAP RA, Dialog never released if TIMEOUT event is filtered
http://code.google.com/p/jain-slee/source/detail?r=73e01c49d53c&repo=ss7

Modified:
/resources/cap/events/src/main/java/org/mobicents/slee/resource/cap/events/DialogTimeout.java /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/CAPResourceAdaptor.java /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/wrappers/CAPDialogWrapper.java

=======================================
--- /resources/cap/events/src/main/java/org/mobicents/slee/resource/cap/events/DialogTimeout.java Sat Sep 1 07:28:22 2012 +++ /resources/cap/events/src/main/java/org/mobicents/slee/resource/cap/events/DialogTimeout.java Mon Jan 21 03:49:14 2013
@@ -31,7 +31,7 @@
  */
 public class DialogTimeout extends CAPEvent {

-       private static final String EVENT_TYPE_NAME = "ss7.cap.DIALOG_TIMEOUT";
+       public static final String EVENT_TYPE_NAME = "ss7.cap.DIALOG_TIMEOUT";

        /**
         * @param capDialogWrapper
=======================================
--- /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/CAPResourceAdaptor.java Sat Jan 5 01:57:11 2013 +++ /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/CAPResourceAdaptor.java Mon Jan 21 03:49:14 2013
@@ -131,7 +131,6 @@
 import org.mobicents.slee.resource.cap.wrappers.CAPDialogWrapper;
 import org.mobicents.slee.resource.cap.wrappers.CAPProviderWrapper;

-
 /**
  *
  * @author amit bhayani
@@ -139,8 +138,8 @@
  * @author sergey vetyutnev
  *
  */
-public class CAPResourceAdaptor implements ResourceAdaptor, CAPDialogListener, CAPServiceCircuitSwitchedCallListener, CAPServiceGprsListener,
-               CAPServiceSmsListener {
+public class CAPResourceAdaptor implements ResourceAdaptor, CAPDialogListener, CAPServiceCircuitSwitchedCallListener,
+               CAPServiceGprsListener, CAPServiceSmsListener {
        /**
         * for all events we are interested in knowing when the event failed to 
be
         * processed
@@ -204,16 +203,35 @@

        }

- public void eventProcessingFailed(ActivityHandle arg0, FireableEventType arg1, Object arg2, Address arg3,
-                       ReceivableService arg4, int arg5, FailureReason arg6) {
-               // TODO Auto-generated method stub
+ public void eventProcessingFailed(ActivityHandle handle, FireableEventType eventType, Object event, + Address address, ReceivableService service, int flags, FailureReason reason) {
+               if (tracer.isFineEnabled())
+                       tracer.fine("eventProcessingFailed:" + eventType + ":" 
+ handle);
+               // used to inform the resource adaptor object that the 
specified Event
+               // could not be processed successfully by the SLEE.

+ if (eventType.getEventType().getName().equals(DialogTimeout.EVENT_TYPE_NAME)) {
+                       CAPDialogActivityHandle dah = (CAPDialogActivityHandle) 
handle;
+                       CAPDialogWrapper dw = dah.getActivity();
+                       if (dw != null)
+                               releaseDialog(dw);
+               }
        }

- public void eventProcessingSuccessful(ActivityHandle arg0, FireableEventType arg1, Object arg2, Address arg3,
-                       ReceivableService arg4, int arg5) {
-               // TODO Auto-generated method stub
+ public void eventProcessingSuccessful(ActivityHandle handle, FireableEventType eventType, Object event,
+                       Address address, ReceivableService service, int flags) {

+               if (tracer.isFineEnabled())
+                       tracer.fine("eventProcessingSuccessful:" + eventType + 
":" + handle);
+               // used to inform the resource adaptor object that the 
specified Event
+               // was processed successfully by the SLEE.
+
+ if (eventType.getEventType().getName().equals(DialogTimeout.EVENT_TYPE_NAME)) {
+                       CAPDialogActivityHandle dah = (CAPDialogActivityHandle) 
handle;
+                       CAPDialogWrapper dw = dah.getActivity();
+                       if (dw != null && !dw.checkDialogTimeoutProcKeeped())
+                               releaseDialog(dw);
+               }
        }

public void eventUnreferenced(ActivityHandle arg0, FireableEventType arg1, Object arg2, Address arg3,
@@ -221,6 +239,10 @@
                // TODO Auto-generated method stub

        }
+
+       private void releaseDialog(CAPDialogWrapper dw) {
+               dw.release();
+       }

        public Object getActivity(ActivityHandle handle) {
                return ((CAPDialogActivityHandle) handle).getActivity();
@@ -373,7 +395,17 @@
        /**
         * Private methods
         */
- private void fireEvent(String eventName, ActivityHandle handle, Object event) {
+
+       /**
+        * Filters the even and returns true if the event was fired
+        *
+        * @param eventName
+        * @param handle
+        * @param event
+        * @param flags
+        * @return
+        */
+ private boolean fireEvent(String eventName, ActivityHandle handle, Object event, int flags) {

FireableEventType eventID = eventIdCache.getEventId(this.resourceAdaptorContext.getEventLookupFacility(),
                                eventName);
@@ -382,10 +414,11 @@
                        if (tracer.isFineEnabled()) {
tracer.fine("Event " + (eventID == null ? "null" : eventID.getEventType()) + " filtered");
                        }
+                       return false;
                } else {

                        try {
-                               sleeEndpoint.fireEvent(handle, eventID, event, 
address, null);
+                               sleeEndpoint.fireEvent(handle, eventID, event, 
address, null, flags);
                        } catch (UnrecognizedActivityHandleException e) {
                                this.tracer.severe("Error while firing event", 
e);
                        } catch (IllegalEventException e) {
@@ -399,6 +432,7 @@
                        } catch (FireEventException e) {
                                this.tracer.severe("Error while firing event", 
e);
                        }
+                       return true;
                }
        }

@@ -407,17 +441,21 @@
        // /////////////////

private CAPDialogActivityHandle onEvent(String eventName, CAPDialogWrapper dw, CAPEvent event) {
+               return onEvent(eventName, dw, event, EventFlags.NO_FLAGS);
+       }
+
+ private CAPDialogActivityHandle onEvent(String eventName, CAPDialogWrapper dw, CAPEvent event, int flags) {
                if (dw == null) {
this.tracer.severe(String.format("Firing %s but CAPDialogWrapper userObject is null", eventName));
                        return null;
                }

                if (this.tracer.isFineEnabled()) {
-                       this.tracer
- .fine(String.format("Firing %s for DialogId=%d", eventName, dw.getWrappedDialog().getLocalDialogId())); + this.tracer.fine(String.format("Firing %s for DialogId=%d", eventName, dw.getWrappedDialog()
+                                       .getLocalDialogId()));
                }

-               this.fireEvent(eventName, dw.getActivityHandle(), event);
+               this.fireEvent(eventName, dw.getActivityHandle(), event, flags);
                return dw.getActivityHandle();
        }

@@ -452,14 +490,16 @@
public void onDialogProviderAbort(CAPDialog capDialog, PAbortCauseType abortCause) { CAPDialogWrapper capDialogWrapper = (CAPDialogWrapper) capDialog.getUserObject(); DialogProviderAbort dialogProviderAbort = new DialogProviderAbort(capDialogWrapper, abortCause); - CAPDialogActivityHandle handle = onEvent(dialogProviderAbort.getEventTypeName(), capDialogWrapper, dialogProviderAbort); + CAPDialogActivityHandle handle = onEvent(dialogProviderAbort.getEventTypeName(), capDialogWrapper,
+                               dialogProviderAbort);

                // End Activity
                // if (handle != null)
                // this.sleeEndpoint.endActivity(handle);
        }

- public void onDialogUserAbort(CAPDialog capDialog, CAPGeneralAbortReason generalReason, CAPUserAbortReason userReason) { + public void onDialogUserAbort(CAPDialog capDialog, CAPGeneralAbortReason generalReason,
+                       CAPUserAbortReason userReason) {
CAPDialogWrapper capDialogWrapper = (CAPDialogWrapper) capDialog.getUserObject(); DialogUserAbort dialogUserAbort = new DialogUserAbort(capDialogWrapper, generalReason, userReason); CAPDialogActivityHandle handle = onEvent(dialogUserAbort.getEventTypeName(), capDialogWrapper, dialogUserAbort);
@@ -481,21 +521,22 @@
                        CAPDialogWrapper capDialogWrapper = null;

                        if (capDialog instanceof CAPDialogCircuitSwitchedCall) {
- capDialogWrapper = new CAPDialogCircuitSwitchedCallWrapper((CAPDialogCircuitSwitchedCall) capDialog, activityHandle, this); + capDialogWrapper = new CAPDialogCircuitSwitchedCallWrapper((CAPDialogCircuitSwitchedCall) capDialog,
+                                               activityHandle, this);
                        } else if (capDialog instanceof CAPDialogGprs) {
capDialogWrapper = new CAPDialogGprsWrapper((CAPDialogGprs) capDialog, activityHandle, this);
                        } else if (capDialog instanceof CAPDialogSms) {
capDialogWrapper = new CAPDialogSmsWrapper((CAPDialogSms) capDialog, activityHandle, this);
                        } else {
- this.tracer.severe(String.format("Received onDialogRequest id=%d for unknown CAPDialog class=%s", capDialog.getLocalDialogId(),
-                                               
capDialog.getClass().getName()));
+ this.tracer.severe(String.format("Received onDialogRequest id=%d for unknown CAPDialog class=%s",
+                                               capDialog.getLocalDialogId(), 
capDialog.getClass().getName()));
                                return;
                        }

DialogRequest event = new DialogRequest(capDialogWrapper, capGprsReferenceNumber);
                        capDialog.setUserObject(capDialogWrapper);
                        this.startActivity(capDialogWrapper);
- this.fireEvent(event.getEventTypeName(), capDialogWrapper.getActivityHandle(), event); + this.fireEvent(event.getEventTypeName(), capDialogWrapper.getActivityHandle(), event, EventFlags.NO_FLAGS);

                } catch (Exception e) {
                        this.tracer.severe(String.format(
@@ -512,8 +553,7 @@

CAPDialogWrapper capDialogWrapper = (CAPDialogWrapper) capDialog.getUserObject();
                        DialogRelease dialogRelease = new 
DialogRelease(capDialogWrapper);
- CAPDialogActivityHandle handle = onEvent(dialogRelease.getEventTypeName(), capDialogWrapper,
-                                       dialogRelease);
+ CAPDialogActivityHandle handle = onEvent(dialogRelease.getEventTypeName(), capDialogWrapper, dialogRelease);

                        // End Activity
                        this.sleeEndpoint.endActivity(handle);
@@ -530,12 +570,35 @@
                if (this.tracer.isFineEnabled()) {
this.tracer.fine(String.format("Rx : onDialogTimeout for DialogId=%d", capDialog.getLocalDialogId()));
                }
+
+               capDialog.keepAlive();

CAPDialogWrapper capDialogWrapper = (CAPDialogWrapper) capDialog.getUserObject();
                DialogTimeout dt = new DialogTimeout(capDialogWrapper);
-               onEvent(dt.getEventTypeName(), capDialogWrapper, dt);
+
+               if (capDialogWrapper == null) {
+                       this.tracer
+ .severe(String.format("Firing %s but CAPDialogWrapper userObject is null", dt.getEventTypeName()));
+                       capDialog.release();
+                       return;
+               }
+
+               capDialogWrapper.startDialogTimeoutProc();
+
+               if (this.tracer.isFineEnabled()) {
+ this.tracer.fine(String.format("Firing %s for DialogId=%d", dt.getEventTypeName(), capDialogWrapper
+                                       
.getWrappedDialog().getLocalDialogId()));
+               }
+
+ boolean fired = fireEvent(dt.getEventTypeName(), capDialogWrapper.getActivityHandle(), dt, + (EventFlags.REQUEST_PROCESSING_SUCCESSFUL_CALLBACK | EventFlags.REQUEST_PROCESSING_FAILED_CALLBACK));
+
+               if (!fired) {
+                       // If event filtered out, lets release Dialog
+                       capDialogWrapper.release();
+               }
+
        }
-

        // ///////////////////////
        // Component callbacks //
@@ -562,7 +625,6 @@
        public void onCAPMessage(CAPMessage capMessage) {
                // TODO Auto-generated method stub
        }
-

        // ///////////////////////
        // Service: CircuitSwitchedCall
@@ -570,168 +632,207 @@

        @Override
        public void onInitialDPRequest(InitialDPRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
InitialDPRequestWrapper event = new InitialDPRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onRequestReportBCSMEventRequest(RequestReportBCSMEventRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - RequestReportBCSMEventRequestWrapper event = new RequestReportBCSMEventRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ RequestReportBCSMEventRequestWrapper event = new RequestReportBCSMEventRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onApplyChargingRequest(ApplyChargingRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ApplyChargingRequestWrapper event = new ApplyChargingRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onEventReportBCSMRequest(EventReportBCSMRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - EventReportBCSMRequestWrapper event = new EventReportBCSMRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ EventReportBCSMRequestWrapper event = new EventReportBCSMRequestWrapper(capDialogCircuitSwitchedCallWrapper,
+                               ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onContinueRequest(ContinueRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ContinueRequestWrapper event = new ContinueRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onApplyChargingReportRequest(ApplyChargingReportRequest 
ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - ApplyChargingReportRequestWrapper event = new ApplyChargingReportRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ ApplyChargingReportRequestWrapper event = new ApplyChargingReportRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onReleaseCallRequest(ReleaseCallRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ReleaseCallRequestWrapper event = new ReleaseCallRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onConnectRequest(ConnectRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ConnectRequestWrapper event = new ConnectRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onCallInformationRequestRequest(CallInformationRequestRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - CallInformationRequestRequestWrapper event = new CallInformationRequestRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ CallInformationRequestRequestWrapper event = new CallInformationRequestRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onCallInformationReportRequest(CallInformationReportRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - CallInformationReportRequestWrapper event = new CallInformationReportRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ CallInformationReportRequestWrapper event = new CallInformationReportRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onActivityTestRequest(ActivityTestRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ActivityTestRequestWrapper event = new ActivityTestRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onActivityTestResponse(ActivityTestResponse ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ActivityTestResponseWrapper event = new ActivityTestResponseWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onAssistRequestInstructionsRequest(AssistRequestInstructionsRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - AssistRequestInstructionsRequestWrapper event = new AssistRequestInstructionsRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ AssistRequestInstructionsRequestWrapper event = new AssistRequestInstructionsRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onEstablishTemporaryConnectionRequest(EstablishTemporaryConnectionRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - EstablishTemporaryConnectionRequestWrapper event = new EstablishTemporaryConnectionRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ EstablishTemporaryConnectionRequestWrapper event = new EstablishTemporaryConnectionRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onDisconnectForwardConnectionRequest(DisconnectForwardConnectionRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - DisconnectForwardConnectionRequestWrapper event = new DisconnectForwardConnectionRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ DisconnectForwardConnectionRequestWrapper event = new DisconnectForwardConnectionRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onConnectToResourceRequest(ConnectToResourceRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - ConnectToResourceRequestWrapper event = new ConnectToResourceRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ ConnectToResourceRequestWrapper event = new ConnectToResourceRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onResetTimerRequest(ResetTimerRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
ResetTimerRequestWrapper event = new ResetTimerRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onFurnishChargingInformationRequest(FurnishChargingInformationRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - FurnishChargingInformationRequestWrapper event = new FurnishChargingInformationRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ FurnishChargingInformationRequestWrapper event = new FurnishChargingInformationRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onSendChargingInformationRequest(SendChargingInformationRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - SendChargingInformationRequestWrapper event = new SendChargingInformationRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ SendChargingInformationRequestWrapper event = new SendChargingInformationRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onSpecializedResourceReportRequest(SpecializedResourceReportRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - SpecializedResourceReportRequestWrapper event = new SpecializedResourceReportRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ SpecializedResourceReportRequestWrapper event = new SpecializedResourceReportRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onPlayAnnouncementRequest(PlayAnnouncementRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - PlayAnnouncementRequestWrapper event = new PlayAnnouncementRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ PlayAnnouncementRequestWrapper event = new PlayAnnouncementRequestWrapper(capDialogCircuitSwitchedCallWrapper,
+                               ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onPromptAndCollectUserInformationRequest(PromptAndCollectUserInformationRequest ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - PromptAndCollectUserInformationRequestWrapper event = new PromptAndCollectUserInformationRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ PromptAndCollectUserInformationRequestWrapper event = new PromptAndCollectUserInformationRequestWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
public void onPromptAndCollectUserInformationResponse(PromptAndCollectUserInformationResponse ind) { - CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); - PromptAndCollectUserInformationResponseWrapper event = new PromptAndCollectUserInformationResponseWrapper(capDialogCircuitSwitchedCallWrapper, ind); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
+ PromptAndCollectUserInformationResponseWrapper event = new PromptAndCollectUserInformationResponseWrapper(
+                               capDialogCircuitSwitchedCallWrapper, ind);
onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }

        @Override
        public void onCancelRequest(CancelRequest ind) {
- CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind.getCAPDialog().getUserObject(); + CAPDialogCircuitSwitchedCallWrapper capDialogCircuitSwitchedCallWrapper = (CAPDialogCircuitSwitchedCallWrapper) ind
+                               .getCAPDialog().getUserObject();
CancelRequestWrapper event = new CancelRequestWrapper(capDialogCircuitSwitchedCallWrapper, ind); onEvent(event.getEventTypeName(), capDialogCircuitSwitchedCallWrapper, event);
        }
=======================================
--- /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/wrappers/CAPDialogWrapper.java Sat Jan 5 01:57:11 2013 +++ /resources/cap/ra/src/main/java/org/mobicents/slee/resource/cap/wrappers/CAPDialogWrapper.java Mon Jan 21 03:49:14 2013
@@ -41,6 +41,7 @@
 /**
  *
  * @author sergey vetyutnev
+ * @author amit bhayani
  *
  */
public abstract class CAPDialogWrapper<T extends CAPDialog> implements CAPDialog {
@@ -48,6 +49,8 @@
        protected CAPDialogActivityHandle activityHandle;
        protected final CAPResourceAdaptor ra;
        protected T wrappedDialog;
+
+       private boolean keepedTimeout;

public CAPDialogWrapper(T wrappedDialog, CAPDialogActivityHandle activityHandle, CAPResourceAdaptor ra) {
                this.wrappedDialog = wrappedDialog;
@@ -113,9 +116,18 @@
        }

        public void keepAlive() {
-               this.wrappedDialog.keepAlive();
+//             this.wrappedDialog.keepAlive();
+               this.keepedTimeout = true;
        }

+       public void startDialogTimeoutProc() {
+               this.keepedTimeout = false;
+       }
+
+       public boolean checkDialogTimeoutProcKeeped() {
+               return this.keepedTimeout;
+       }
+
        public void release() {
                this.wrappedDialog.release();
        }

Reply via email to