Author: tchemit Date: 2014-02-08 16:51:31 +0100 (Sat, 08 Feb 2014) New Revision: 1583 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1583 Log: fixes #4325: [TECHNIQUE] il est possible de lancer plusieurs cessions d'Allegro sur une machine Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2014-02-08 15:35:04 UTC (rev 1582) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2014-02-08 15:51:31 UTC (rev 1583) @@ -293,6 +293,14 @@ */ private File lock; + /** + * Flag to know if context was already closed. Can happen when you close nicely the application, the shutdown hook + * must then not close a second time this context. + * + * @since 3.2 + */ + private boolean closed; + public static TuttiUIContext newContext(TuttiConfiguration config) { Preconditions.checkNotNull(config); Preconditions.checkState(applicationContext == null, @@ -409,10 +417,9 @@ @Override public void run() { - if (log.isInfoEnabled()) { - log.info("Close context on shutdown"); + if (!closed) { + close(); } - close(); } })); @@ -579,6 +586,11 @@ @Override public void close() { + if (log.isInfoEnabled()) { + log.info("Closing application context..."); + } + Preconditions.checkState(!closed, "Application was already closed."); + try { // Clear data references messageNotifiers.clear(); @@ -606,10 +618,14 @@ } setActionUI(null); } finally { + closed = true; if (lock != null) { // destroy lock ApplicationIOUtil.deleteFile(lock, "Could not delete lock file"); + if (log.isInfoEnabled()) { + log.info("Delete lock file: " + lock); + } } } }