# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /data/work/src/netbeans-cm # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObj.java --- masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObj.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObj.java Locally Modified (Based On LOCAL) @@ -62,6 +62,7 @@ import org.netbeans.modules.masterfs.filebasedfs.utils.FileInfo; import org.netbeans.modules.masterfs.filebasedfs.utils.Utils; import org.netbeans.modules.masterfs.providers.ProvidedExtensions; +import org.openide.filesystems.FileAlreadyLockedException; import org.openide.filesystems.FileLock; import org.openide.filesystems.FileObject; import org.openide.util.Enumerations; @@ -348,20 +349,42 @@ return Enumerations.empty(); } - @Override + public boolean isLocked() { + FileLock fLock = null; + try { + fLock = lockImpl(false); + } catch (FileAlreadyLockedException fax) { + return true; + } catch (IOException ex) { + return false; + } finally { + if (fLock != null) { + fLock.releaseLock(); + } + } + return fLock == null; + } + + @Override public final FileLock lock() throws IOException { + return lockImpl(true); + } + + private FileLock lockImpl(boolean notifyExtension) throws IOException { final File me = getFileName().getFile(); if (!getProvidedExtensions().canWrite(me)) { FSException.io("EXC_CannotLock", me); } try { LockForFile result = LockForFile.tryLock(me); - try { - getProvidedExtensions().fileLocked(this); - } catch (IOException ex) { - result.releaseLock(false); - throw ex; + if(notifyExtension) { + try { + getProvidedExtensions().fileLocked(this); + } catch (IOException ex) { + result.releaseLock(false); + throw ex; + } } return result; } catch (FileNotFoundException ex) { @@ -381,7 +404,7 @@ throw fex; } } - + final boolean checkLock(final FileLock lock) throws IOException { final File f = getFileName().getFile(); return ((lock instanceof LockForFile) && Utils.equals(((LockForFile) lock).getFile(), f));