From c40aa7b3e4af1e91aa60a0eaa66e499140fb25fd Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 24 Mar 2010 08:38:16 +0000 Subject: [PATCH] [LMS-1453] improved workaround SVN: 15247 --- .../openbis/generic/server/business/bo/ExternalDataBO.java | 2 ++ .../cisd/openbis/generic/server/dataaccess/IGenericDAO.java | 2 ++ .../server/dataaccess/db/AbstractGenericEntityDAO.java | 6 ++++++ .../generic/server/business/bo/ExternalDataBOTest.java | 1 + 4 files changed, 11 insertions(+) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBO.java index ea7cb64615b..275d609a057 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBO.java @@ -657,6 +657,8 @@ public class ExternalDataBO extends AbstractExternalDataBusinessObject implement public void updateStatus(String dataSetCode, DataSetArchivizationStatus newStatus) { + // WORKAROUND: clearing session solved StaleObjectStateException problem + getExternalDataDAO().clearSession(); loadByCode(dataSetCode, false, true); externalData.setStatus(newStatus); validateAndSave(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IGenericDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IGenericDAO.java index a61e24f477e..5127f4c70b8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IGenericDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IGenericDAO.java @@ -84,4 +84,6 @@ public interface IGenericDAO<T extends IIdHolder> */ public List<T> listAllEntities() throws DataAccessException; + public void clearSession(); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java index 285e7fa794b..74c19b0ee30 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java @@ -161,4 +161,10 @@ public abstract class AbstractGenericEntityDAO<T extends IIdHolder> extends Abst { return cast(getHibernateTemplate().loadAll(getEntityClass())); } + + public void clearSession() + { + getHibernateTemplate().clear(); + } + } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBOTest.java index 4692f599194..8dc6b0c3ff5 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataBOTest.java @@ -294,6 +294,7 @@ public class ExternalDataBOTest extends AbstractBOTest context.checking(new Expectations() { { + one(externalDataDAO).clearSession(); one(externalDataDAO).tryToFindFullDataSetByCode(dataSet.getCode(), false, true); will(returnValue(dataSet)); one(externalDataDAO).validateAndSaveUpdatedEntity(dataSet); -- GitLab