Index: FileLock.java =================================================================== RCS file: /cvs/openide/src/org/openide/filesystems/FileLock.java,v retrieving revision 1.11 diff -c -r1.11 FileLock.java *** FileLock.java 3 Dec 2002 14:11:45 -0000 1.11 --- FileLock.java 24 Mar 2004 14:16:15 -0000 *************** *** 36,42 **** /** Determines if lock is locked or if it was released. */ private boolean locked = true; ! // =============================================================================== // This part of code could be used for monitoring of closing file streams. /* public static java.util.HashMap locks = new java.util.HashMap(); --- 36,42 ---- /** Determines if lock is locked or if it was released. */ private boolean locked = true; ! private Exception lockedByTrace = new Exception() ; // =============================================================================== // This part of code could be used for monitoring of closing file streams. /* public static java.util.HashMap locks = new java.util.HashMap(); *************** *** 73,78 **** --- 73,79 ---- * for some reason failed to. */ public void finalize () { + lockedByTrace.printStackTrace(System.err); releaseLock (); } Index: MultiFileObject.java =================================================================== RCS file: /cvs/openide/src/org/openide/filesystems/MultiFileObject.java,v retrieving revision 1.117 diff -c -r1.117 MultiFileObject.java *** MultiFileObject.java 10 Mar 2004 18:28:14 -0000 1.117 --- MultiFileObject.java 24 Mar 2004 14:16:15 -0000 *************** *** 1427,1443 **** public void releaseLock () { if (this.isValid()) { ! super.releaseLock(); ! ! Iterator it = map.values().iterator(); ! while (it.hasNext()) { ! FileLock l = (FileLock)it.next (); ! l.releaseLock (); } - map.clear (); ! // clears the reference to this lock from the file object ! MultiFileObject.this.lock = null; } } --- 1427,1449 ---- public void releaseLock () { if (this.isValid()) { ! FileLock currentLock = null; ! if (lock != null) { ! currentLock = (FileLock)lock.get(); } ! super.releaseLock(); ! if (currentLock == this) { ! Iterator it = map.values().iterator(); ! while (it.hasNext()) { ! FileLock l = (FileLock)it.next (); ! l.releaseLock (); ! } ! map.clear (); ! ! // clears the reference to this lock from the file object ! MultiFileObject.this.lock = null; ! } } }