Author: athimel Date: 2014-04-03 16:54:06 +0200 (Thu, 03 Apr 2014) New Revision: 3039 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3039 Log: fixes #3078 Maje sure connection is released during isSchema[Exists|Empty] methods Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-04-03 13:02:42 UTC (rev 3038) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-04-03 14:54:06 UTC (rev 3039) @@ -54,6 +54,7 @@ import org.nuiton.topia.persistence.support.TopiaServiceSupport; import org.nuiton.topia.persistence.util.TopiaUtil; +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; /** @@ -270,6 +271,8 @@ public void close() { if (hibernateSessionFactory != null) { + Preconditions.checkState(!hibernateSessionFactory.isClosed()); + // close connection provider if possible (http://nuiton.org/issues/2757) ConnectionProvider service = getHibernateService(hibernateSessionFactory, ConnectionProvider.class); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-04-03 13:02:42 UTC (rev 3038) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-04-03 14:54:06 UTC (rev 3039) @@ -225,15 +225,14 @@ log.error("Cant connect to database", e); } catch (TopiaNotFoundException e) { log.error("Cant connect to database", e); + } finally { + try { + connectionProviderSupplier.close(); + } catch (IOException e) { + log.error("Cant close connection provider", e); + } } - // close connectionProviderSupplier - try { - connectionProviderSupplier.close(); - } catch (IOException e) { - log.error("Cant close connection provider", e); - } - return exist; } @@ -298,15 +297,14 @@ } catch (SQLException e) { log.error("Cant connect to database", e); + } finally { + try { + connectionProviderSupplier.close(); + } catch (IOException e) { + log.error("Cant close connection provider", e); + } } - // close connectionProviderSupplier - try { - connectionProviderSupplier.close(); - } catch (IOException e) { - log.error("Cant close connection provider", e); - } - return exist; } @@ -373,15 +371,14 @@ } catch (SQLException e) { log.error("Cant connect to database", e); + } finally { + try { + connectionProviderSupplier.close(); + } catch (IOException e) { + log.error("Cant close connection provider", e); + } } - // close connectionProviderSupplier - try { - connectionProviderSupplier.close(); - } catch (IOException e) { - log.error("Cant close connection provider", e); - } - return true; } @@ -449,15 +446,14 @@ } catch (SQLException e) { log.error("Cant connect to database", e); + } finally { + try { + connectionProviderSupplier.close(); + } catch (IOException e) { + log.error("Cant close connection provider", e); + } } - // close connectionProviderSupplier - try { - connectionProviderSupplier.close(); - } catch (IOException e) { - log.error("Cant close connection provider", e); - } - return true; }