diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java index 607a26f3ba2166176d90aa00fa55c754a1d6c97f..ed4c5e5240cf5305eb7890d48e38ced44f6d7965 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java @@ -80,14 +80,16 @@ public class PermanentDatabaseLevelCache extends XmlParser implements PermanentD @Override public CacheQuery call() throws Exception { - logger.debug("Query task call"); - dbUtils.createSessionForCurrentThread(); - logger.debug("Query task session started"); - CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); - logger.debug("Query task data retrieved"); - dbUtils.closeSessionForCurrentThread(); - logger.debug("Query task return"); - return entry; + logger.debug("Query task call"); + try { + dbUtils.createSessionForCurrentThread(); + logger.debug("Query task session started"); + CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); + logger.debug("Query task data retrieved"); + return entry; + } finally { + dbUtils.closeSessionForCurrentThread(); + } } } @@ -227,26 +229,29 @@ public class PermanentDatabaseLevelCache extends XmlParser implements PermanentD @Override public CacheQuery call() throws Exception { - logger.debug("Add task call"); - dbUtils.createSessionForCurrentThread(); - CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); - - if (entry == null) { - entry = new CacheQuery(); - entry.setQuery((String) query); - entry.setAccessed(Calendar.getInstance()); - } else { - entry.setAccessed(Calendar.getInstance()); - } - entry.setValue(value); - entry.setType(type); - Calendar expires = Calendar.getInstance(); - expires.add(Calendar.DAY_OF_MONTH, type.getValidity()); - entry.setExpires(expires); - - getCacheQueryDao().add(entry); - dbUtils.closeSessionForCurrentThread(); - return entry; + logger.debug("Add task call"); + try { + dbUtils.createSessionForCurrentThread(); + CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); + + if (entry == null) { + entry = new CacheQuery(); + entry.setQuery((String) query); + entry.setAccessed(Calendar.getInstance()); + } else { + entry.setAccessed(Calendar.getInstance()); + } + entry.setValue(value); + entry.setType(type); + Calendar expires = Calendar.getInstance(); + expires.add(Calendar.DAY_OF_MONTH, type.getValidity()); + entry.setExpires(expires); + + getCacheQueryDao().add(entry); + return entry; + } finally { + dbUtils.closeSessionForCurrentThread(); + } } } @@ -290,13 +295,16 @@ public class PermanentDatabaseLevelCache extends XmlParser implements PermanentD @Override public CacheQuery call() throws Exception { logger.debug("Remove task call"); - dbUtils.createSessionForCurrentThread(); - CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); - if (entry != null) { - getCacheQueryDao().delete(entry); - } - dbUtils.closeSessionForCurrentThread(); - return entry; + try { + dbUtils.createSessionForCurrentThread(); + CacheQuery entry = getCacheQueryDao().getByQuery((String) query, type); + if (entry != null) { + getCacheQueryDao().delete(entry); + } + return entry; + } finally { + dbUtils.closeSessionForCurrentThread(); + } } }