throw new Error("Failed to create advisory lock file "+_lock);
}
}
- return advisory.isLocked();
+ return (advisory!=null) && advisory.isLocked();
}
/**
* call to clear up a filelock file after its been made
*/
private void tidy() {
if (_lock!=null) {
- if ( advisory!=null)
+ if ( advisory!=null) {
+ advisory.target.deleteOnExit(); // release will null the target
advisory.release(true);
- advisory.target.deleteOnExit();
+ }
advisory=null;
_lock=null;
}
super(lockfile);
// try and get a lock.
try {
- _lock = new File(lockfile.getParentFile(), lockfile.getName()+"."+_LockSuffix);
+ _lock = make_lockForTarget(lockfile);
if (!ensureLockFile(block)) {
log.debug("Couldn't get lock on "+_lock);
tidy();
+ lockfile.getAbsolutePath(),e);
}
}
-
+ /**
+ *
+ * @param lockfile target of lock
+ * @return file object that will be locked for lockfile
+ */
+ private File make_lockForTarget(File lockfile) {
+ return new File(lockfile.getParentFile(), lockfile.getName()+"."+_LockSuffix);
+ }
private boolean openRaFile() throws IOException {
if (target==null)
return false;
log.debug("Failed to getRaChannel on target "+target);
return null;
}
+ public boolean isTargetLockFile(File afile) {
+ if (isLocked())
+ {
+ if (target.equals(afile) || make_lockForTarget(target).equals(afile))
+ return true;
+ }
+ return false;
+ }
}