diff options
author | Andrew M Finkbeiner | 2013-08-27 20:50:10 +0000 |
---|---|---|
committer | donald.g.dunne | 2013-08-28 21:01:29 +0000 |
commit | 8b94e69572b6dfe2e6d2929938e7c7c3b4e23833 (patch) | |
tree | 4971b6483de12f43eb0ef81df6efb8a886712024 | |
parent | 32d4d47f30c0a1df19893ba90c9a68869322ea54 (diff) | |
download | org.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.java | 19 |
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) { |