From d68c74805fb906685a2fbc19607ab729bc036a53 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Thu, 21 Apr 2016 08:48:24 +0200 Subject: [PATCH] fix for #5710 reset the terms when changing the datasource in remoting --- .../taxeditor/store/CdmStoreConnector.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java index df9ef6e91..9520f97bc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java @@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.store; +import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.concurrent.CancellationException; @@ -30,6 +31,7 @@ import eu.etaxonomy.cdm.config.CdmSourceException; import eu.etaxonomy.cdm.config.ICdmSource; import eu.etaxonomy.cdm.database.DbSchemaValidation; import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.metadata.CdmMetaData; import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; import eu.etaxonomy.cdm.model.name.Rank; @@ -227,6 +229,8 @@ class CdmStoreConnector extends Job { CdmStore.getLoginManager().doAuthenticate(loginDialog.getUsername(), loginDialog.getPassword()); loginDialog.onComplete(); CdmStore.getContextManager().notifyContextStart(); + getInstance(Rank.class).resetTerms(); + getInstance(NomenclaturalStatusType.class).resetTerms(); Rank.initDefaultTerms(); NomenclaturalStatusType.initDefaultTerms(); } catch(CdmAuthenticationException cae) { @@ -253,6 +257,23 @@ class CdmStoreConnector extends Job { } } + /** + * Returns a new instance for the given class by using the default constructor. + * The constructor must be declared but can be unaccessible (e.g. private) + * @param termClass + * @return + */ + private T getInstance(Class termClass) { + try { + Constructor c = ((Class)termClass).getDeclaredConstructor(); + c.setAccessible(true); + T termInstance = c.newInstance(); + return termInstance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + private ICdmApplicationConfiguration getApplicationController(ICdmSource cdmSource, CdmProgressMonitorAdapter subprogressMonitor) { if(cdmSource instanceof ICdmDataSource) { -- 2.34.1