# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /space/work/auui/openide/masterfs # 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: apichanges.xml *** /space/work/auui/openide/masterfs/apichanges.xml Base (1.6) --- /space/work/auui/openide/masterfs/apichanges.xml Locally Modified (Based On 1.6) *************** *** 23,28 **** --- 23,49 ---- MasterFileSystem API + + + ProvidedExtensions.fileLock and ProvidedExtensions.fileUnlock was added. + + + + + +

+ ProvidedExtensions.fileLock which is called after + MasterFileSystem locks FileObject +

+

+ ProvidedExtensions.fileUnlock which is called after + FileObject is unlocked. +

+
+ + +
+ ProvidedExtensions.beforeChange was added. Index: src/org/netbeans/modules/masterfs/Delegate.java *** /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/Delegate.java Base (1.25) --- /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/Delegate.java Locally Modified (Based On 1.25) *************** *** 313,318 **** --- 313,319 ---- } } } + mfo.getExtensions().fileUnlocked(mfo); } private FileLock getCurrentLock () { Index: src/org/netbeans/modules/masterfs/MasterFileObject.java *** /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/MasterFileObject.java Base (1.63) --- /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/MasterFileObject.java Locally Modified (Based On 1.63) *************** *** 163,169 **** * Implements abstract FileObject.lock() */ public FileLock lock() throws IOException { ! return getDelegate().lock(); } /** --- 163,171 ---- * Implements abstract FileObject.lock() */ public FileLock lock() throws IOException { ! FileLock retval = getDelegate().lock(); ! getExtensions().fileLocked(this); ! return retval; } /** *************** *** 964,970 **** return getExtensions().getDeleteHandler(f); } ! private static ProvidedExtensions getExtensions() { return ((MasterFileSystem.StatusImpl)MasterFileSystem.getDefault().getStatus()).getExtensions(); } --- 966,972 ---- return getExtensions().getDeleteHandler(f); } ! static ProvidedExtensions getExtensions() { return ((MasterFileSystem.StatusImpl)MasterFileSystem.getDefault().getStatus()).getExtensions(); } Index: src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java *** /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java Base (1.5) --- /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java Locally Modified (Based On 1.5) *************** *** 125,128 **** --- 125,146 ---- * @since 1.10 */ public void beforeChange(FileObject fo) {} + + /* + * Called by MasterFileSystem after FileObject + * is locked + * @see org.openide.filesystems.FileObject#lock + * @param fo file which was locked + * @since 1.11 + */ + public void fileLocked(FileObject fo) {} + + /* + * Called by MasterFileSystem after FileLock + * is released + * @see org.openide.filesystems.FileLock#releaseLock + * @param fo file which FileLock was released + * @since 1.11 + */ + public void fileUnlocked(FileObject fo) {} } Index: src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java *** /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java Base (1.5) --- /space/work/auui/openide/masterfs/src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java Locally Modified (Based On 1.5) *************** *** 147,153 **** --- 147,174 ---- } } } + + public void fileLocked(FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener instanceof ProvidedExtensions) { + ((ProvidedExtensions)iListener).fileLocked(fo); } + } + } + + public void fileUnlocked(FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener instanceof ProvidedExtensions) { + ((ProvidedExtensions)iListener).fileUnlocked(fo); + } + } + } + } Index: test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java *** /space/work/auui/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java Base (1.7) --- /space/work/auui/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java Locally Modified (Based On 1.7) *************** *** 83,88 **** --- 83,105 ---- super(testName); } + public void testImplsFileLock() throws IOException { + FileObject fo = FileUtil.toFileObject(getWorkDir()); + assertNotNull(fo); + assertNotNull(iListener); + FileObject toLock = fo.createData(getName()); + assertNotNull(toLock); + assertEquals(0, iListener.implsFileLockCalls); + FileLock fLock = toLock.lock(); + try { + assertTrue(fLock.isValid()); + assertEquals(0, iListener.implsFileUnlockCalls); + assertEquals(1, iListener.implsFileLockCalls); + } finally { + fLock.releaseLock(); + assertEquals(1, iListener.implsFileUnlockCalls); + } + } public void testImplsBeforeChange() throws IOException { FileObject fo = FileUtil.toFileObject(getWorkDir()); *************** *** 398,403 **** --- 415,422 ---- private int renameImplCalls; private int implsBeforeChangeCalls; private int implsCreateSuccessCalls; + private int implsFileLockCalls; + private int implsFileUnlockCalls; private static boolean implsMoveRetVal = true; private static boolean implsRenameRetVal = true; *************** *** 412,419 **** --- 431,450 ---- renameImplCalls = 0; implsBeforeChangeCalls = 0; implsCreateSuccessCalls = 0; + implsFileLockCalls = 0; } + public void fileLocked(FileObject fo) { + super.fileLocked(fo); + implsFileLockCalls++; + } + + public void fileUnlocked(FileObject fo) { + super.fileUnlocked(fo); + implsFileUnlockCalls++; + } + + public void createSuccess(FileObject fo) { super.createSuccess(fo); implsCreateSuccessCalls++;