Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew M Finkbeiner2013-08-27 20:50:10 +0000
committerdonald.g.dunne2013-08-28 21:01:29 +0000
commit8b94e69572b6dfe2e6d2929938e7c7c3b4e23833 (patch)
tree4971b6483de12f43eb0ef81df6efb8a886712024
parent32d4d47f30c0a1df19893ba90c9a68869322ea54 (diff)
downloadorg.eclipse.osee-8b94e69572b6dfe2e6d2929938e7c7c3b4e23833.tar.gz
org.eclipse.osee-8b94e69572b6dfe2e6d2929938e7c7c3b4e23833.tar.xz
org.eclipse.osee-8b94e69572b6dfe2e6d2929938e7c7c3b4e23833.zip
bug[ats_LBJF4]: Cleanup listner on dispose
-rw-r--r--plugins/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/message/data/MessageData.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/plugins/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/message/data/MessageData.java b/plugins/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/message/data/MessageData.java
index d6cd00747ac..f0e12f72c95 100644
--- a/plugins/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/message/data/MessageData.java
+++ b/plugins/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/message/data/MessageData.java
@@ -197,14 +197,29 @@ public abstract class MessageData implements DataReaderListener, DataWriterListe
public abstract void visit(IMessageDataVisitor visitor);
public void dispose() {
+
+ try{
+ Message[] msgs = messages.get();
+ for (int i = 0; i < msgs.length; i++){
+ Message local = msgs[i];
+ if(local != null){
+ local.removePreMessageDisposeListener(disposeListener);
+ }
+ }
+ } catch (Throwable th){
+ OseeLog.log(getClass(), Level.SEVERE, "failed to remove message dispose listener.", th);
+ }
messages.clear();
if (writer != null) {
writer.getPublisher().deleteDataWriter(writer);
+ writer.dispose(this, null);
writer = null;
} else if (reader != null && reader.getSubscriber() != null) {
reader.getSubscriber().deleteDataReader(reader);
+ reader.dispose();
+ reader = null;
}
- reader = null;
+ disposeListener = null;
}
public void copyData(int destOffset, byte[] data, int srcOffset, int length) {
@@ -549,7 +564,7 @@ public abstract class MessageData implements DataReaderListener, DataWriterListe
}
}
- private final IMessageDisposeListener disposeListener = new IMessageDisposeListener() {
+ private IMessageDisposeListener disposeListener = new IMessageDisposeListener() {
@Override
public void onPreDispose(Message message) {

Back to the top