From: Fredrik Tolf Date: Fri, 10 Nov 2023 16:27:54 +0000 (+0100) Subject: Allow updated jagidir modules to be formally disposed. X-Git-Url: http://git.dolda2000.com/gitweb/?a=commitdiff_plain;h=54de0442296cdb195759d1f3ed56f77f77348bf0;p=jagi.git Allow updated jagidir modules to be formally disposed. --- diff --git a/src/jagi/fs/Compiler.java b/src/jagi/fs/Compiler.java index 60a1c24..b277e00 100644 --- a/src/jagi/fs/Compiler.java +++ b/src/jagi/fs/Compiler.java @@ -3,12 +3,14 @@ package jagi.fs; import jagi.*; import java.util.*; import java.util.regex.*; +import java.util.logging.*; import java.nio.file.*; import java.nio.file.attribute.*; import java.io.*; import java.net.*; public class Compiler { + private static final Logger log = Logger.getLogger("jagi-fs"); private final Map files = new HashMap<>(); private final Map libs = new HashMap<>(); private final Collection searchpath = new ArrayList<>(); @@ -323,8 +325,16 @@ public class Compiler { synchronized(this) { FileTime mtime = Files.getLastModifiedTime(name); if((this.mtime == null) || (this.mtime.compareTo(mtime) < 0)) { - mod = new Module(name); + Module pmod = this.mod; + this.mod = new Module(name); this.mtime = mtime; + if(pmod instanceof AutoCloseable) { + try { + ((AutoCloseable)pmod).close(); + } catch(Exception e) { + log.log(Level.WARNING, String.format("Error when disposing updated module %s", pmod.file), e); + } + } } } }