From 1ec52766f09e12a453681f31ecb880d89d2781f8 Mon Sep 17 00:00:00 2001 From: Cherian Mathew Date: Fri, 2 Oct 2015 13:38:44 +0200 Subject: [PATCH] Change null session to singleton with no owner --- .../session/CdmEntitySessionManager.java | 15 +++++-- .../session/ICdmEntitySessionManager.java | 7 +++- .../taxeditor/session/NullSession.java | 2 +- .../mock/MockCdmEntitySessionManager.java | 11 ++++- .../preference/menu/CdmPreferencePage.java | 4 +- .../wizard/AvailableDistributionPage.java | 2 +- .../view/sessions/SessionsViewPart.java | 40 +++++++++++++------ 7 files changed, 59 insertions(+), 22 deletions(-) diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java index 5344a4800..84be7d871 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java @@ -62,12 +62,10 @@ public class CdmEntitySessionManager implements ICdmEntitySessionManager { } @Override - public ICdmEntitySession bindNullSession(ICdmEntitySessionEnabled sessionOwner) { + public ICdmEntitySession bindNullSession() { if(nullSession == null) { - nullSession = new NullSession(sessionOwner, this); - } else { - nullSession.setOwner(sessionOwner); + nullSession = new NullSession(null, this); } setActiveSession(nullSession); @@ -197,6 +195,15 @@ public class CdmEntitySessionManager implements ICdmEntitySessionManager { if(session != null) { session.dispose(); } + if(nullSession != null && nullSession.getOwner() == owner) { + nullSession = null; + } + notifyObservers(); + } + + @Override + public void disposeNullSession() { + nullSession = null; notifyObservers(); } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java index 27e23a02f..180000381 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java @@ -13,7 +13,7 @@ public interface ICdmEntitySessionManager { * @param sessionOwner * @return */ - public ICdmEntitySession bindNullSession(ICdmEntitySessionEnabled sessionOwner); + public ICdmEntitySession bindNullSession(); public abstract void bind(ICdmEntitySessionEnabled sessionOwner); @@ -72,4 +72,9 @@ public interface ICdmEntitySessionManager { */ public ICdmEntitySession getNullSession(); + /** + * + */ + public void disposeNullSession(); + } \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java index 130167c2c..65b8e7c24 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java @@ -141,7 +141,7 @@ public class NullSession implements ICdmEntitySession { */ @Override public void bind() { - cdmEntitySessionManager.bindNullSession(sessionOwner); + cdmEntitySessionManager.bindNullSession(); } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java index 081cffbcf..9eeabb7a5 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java @@ -122,7 +122,7 @@ public class MockCdmEntitySessionManager implements ICdmEntitySessionManager { * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#bindNullSession(eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled) */ @Override - public ICdmEntitySession bindNullSession(ICdmEntitySessionEnabled sessionOwner) { + public ICdmEntitySession bindNullSession() { return new MockCdmEntitySession(); } @@ -134,6 +134,15 @@ public class MockCdmEntitySessionManager implements ICdmEntitySessionManager { return new MockCdmEntitySession(); } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#disposeNullSession() + */ + @Override + public void disposeNullSession() { + // TODO Auto-generated method stub + + } + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java index 756d1461b..c52f69266 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java @@ -38,13 +38,13 @@ public abstract class CdmPreferencePage extends PreferencePage implements ICdmEn private void bindNullSession() { if(CdmStore.isActive()) { - CdmStore.getCurrentSessionManager().bindNullSession(this); + CdmStore.getCurrentSessionManager().bindNullSession(); } } protected void disposeNullSession() { if(CdmStore.isActive()) { - CdmStore.getCurrentSessionManager().dispose(this); + CdmStore.getCurrentSessionManager().disposeNullSession(); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java index 7a876f545..b53b064e5 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java @@ -63,7 +63,7 @@ public class AvailableDistributionPage extends WizardPage implements ICdmEntityS protected AvailableDistributionPage(String pageName) { super(pageName); // TODO check if configuration exists - CdmStore.getCurrentSessionManager().bindNullSession(this); + CdmStore.getCurrentSessionManager().bindNullSession(); } /* diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/sessions/SessionsViewPart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/sessions/SessionsViewPart.java index 07c94bbb8..9947664f6 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/sessions/SessionsViewPart.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/sessions/SessionsViewPart.java @@ -39,6 +39,7 @@ import eu.etaxonomy.taxeditor.remoting.cache.CdmRemoteCacheManager; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManagerObserver; +import eu.etaxonomy.taxeditor.session.NullSession; import eu.etaxonomy.taxeditor.store.CdmStore; /** @@ -259,18 +260,11 @@ public class SessionsViewPart extends ViewPart implements ICdmEntitySessionManag Collection sessions = cdmEntitySessionManager.getSessions(); txtNoOfSessions.setText(String.valueOf(sessions.size())); for(ICdmEntitySession session : sessions) { - if(session.getOwner() != null) { - TableItem item = new TableItem(tableSessions, SWT.NULL); - item.setText(session.getOwner().toString()); - String activePrefix = ""; - if(session.isActive()) { - activePrefix = "*"; - } - item.setText(0, activePrefix + session.getOwner().toString()); - LiveCacheStatistics cacheStatistics = session.getCacheStatistics(); - item.setText(1, getInMemoryStats(cacheStatistics)); - item.setText(2, getOnDiskStats(cacheStatistics)); - } + addSession(session); + } + ICdmEntitySession nullSession = cdmEntitySessionManager.getNullSession(); + if(nullSession != null) { + addSession(nullSession); } for (int i=0; i