Author: bpoussin Date: 2014-04-03 18:26:54 +0200 (Thu, 03 Apr 2014) New Revision: 3927 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3927 Log: add hack to work with topia 2.8.1 Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-03 16:26:03 UTC (rev 3926) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-03 16:26:54 UTC (rev 3927) @@ -43,6 +43,16 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishRuntimeException; +import org.hibernate.SessionFactory; +import org.hibernate.internal.SessionFactoryImpl; +import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; +import org.hibernate.service.spi.Stoppable; +import org.nuiton.topia.framework.TopiaContextImpl; +//import org.hibernate.SessionFactory; +//import org.hibernate.internal.SessionFactoryImpl; +//import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; +//import org.hibernate.service.spi.Stoppable; +//import org.nuiton.topia.framework.TopiaContextImpl; /** * Class abstraite dont herite tous les storages qui on besoin d'un TopiaContext @@ -225,11 +235,32 @@ public void closeStorage() throws TopiaException { if (storage != null) { +// closeDatabase(); + Stoppable pool = getHibernatePool(); + storage.closeContext(); + if (pool != null) { + pool.stop(); + } storage = null; } } + protected Stoppable getHibernatePool() throws TopiaException { + Stoppable result = null; + if (storage instanceof TopiaContextImpl) { + SessionFactory factory = ((TopiaContextImpl)storage).getHibernateFactory(); + if(factory instanceof SessionFactoryImpl) { + SessionFactoryImpl sf = (SessionFactoryImpl)factory; + ConnectionProvider conn = sf.getConnectionProvider(); + if(conn instanceof Stoppable) { + result = (Stoppable)conn; + } + } + } + return result; + } + /* * @see fr.ifremer.isisfish.datastore.VersionStorage#delete(boolean) */ Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 16:26:03 UTC (rev 3926) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 16:26:54 UTC (rev 3927) @@ -749,11 +749,10 @@ File data = result.getDataBackupFile(); if (data.exists()) { - TopiaContext root = result.getStorage(); - TopiaContext tx = root.beginTransaction(); + TopiaContext tx = result.getStorage().beginTransaction(); tx.restore(data); tx.commitTransaction(); - root.closeContext(); + result.closeStorage(); } return result;
participants (1)
-
bpoussin@users.forge.codelutin.com