# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: E:\hg\core-main\masterfs\src\org\netbeans\modules\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: filebasedfs/fileobjects/BaseFileObj.java --- filebasedfs/fileobjects/BaseFileObj.java Base (BASE) +++ filebasedfs/fileobjects/BaseFileObj.java Locally Modified (Based On LOCAL) @@ -80,7 +80,6 @@ private static final String PATH_SEPARATOR = File.separator;//NOI18N private static final char EXT_SEP = '.';//NOI18N private FileChangeListener versioningWeakListener; - private final FileChangeListener versioningListener = new FileChangeListenerForVersioning(); //static fields static final long serialVersionUID = -1244650210876356809L; @@ -101,9 +100,6 @@ protected BaseFileObj(final File file, final FileNaming name) { this.fileName = name; - versioningWeakListener = (FileChangeListener) WeakListeners.create(FileChangeListener.class, FileChangeListener.class, versioningListener, this); - addFileChangeListener(versioningWeakListener); - } @Override @@ -212,11 +208,13 @@ @Override public final FileObject move(FileLock lock, FileObject target, String name, String ext) throws IOException { + ProvidedExtensions extensions = getProvidedExtensions(); + extensions.beforeMove(this); + FileObject result = null; + try { if (!checkLock(lock)) { FSException.io("EXC_InvalidLock", lock, getPath()); // NOI18N } - ProvidedExtensions extensions = getProvidedExtensions(); - FileObject result = null; File to = (target instanceof FolderObj) ? new File(((BaseFileObj) target).getFileName().getFile(), FileInfo.composeName(name, ext)) : new File(FileUtil.toFile(target), FileInfo.composeName(name, ext)); final IOHandler moveHandler = extensions.getMoveHandler(getFileName().getFile(), to); @@ -237,6 +235,11 @@ } FileUtil.copyAttributes(this, result); + } catch (IOException ioe) { + extensions.moveFailure(this); + throw ioe; + } + extensions.moveSuccess(this); return result; } @@ -492,6 +495,8 @@ } public final void fireFileChangedEvent(final boolean expected) { + getProvidedExtensions().fileChanged(this); + Statistics.StopWatch stopWatch = Statistics.getStopWatch(Statistics.LISTENERS_CALLS); stopWatch.start(); @@ -581,6 +586,7 @@ getProvidedExtensions().deleteFailure(BaseFileObj.this); throw iex; } + getProvidedExtensions().deleteSuccess(BaseFileObj.this); return true; } }; @@ -668,6 +674,7 @@ } setValid(false); if (fire) { + getProvidedExtensions().deletedExternally(this); fireFileDeletedEvent(expected); } } @@ -823,32 +830,6 @@ return getExistingParentFor(getFileName().getFile(), getFactory()); } - private final class FileChangeListenerForVersioning extends FileChangeAdapter { - @Override - public void fileDataCreated(FileEvent fe) { - if (fe.getFile() == BaseFileObj.this) { - getProvidedExtensions().createSuccess(fe.getFile()); - } - } - - /** - * Implements FileChangeListener.fileFolderCreated(FileEvent fe) - */ - @Override - public void fileFolderCreated(FileEvent fe) { - if (fe.getFile() == BaseFileObj.this) { - getProvidedExtensions().createSuccess(fe.getFile()); - } - } - - @Override - public void fileDeleted(FileEvent fe) { - if (fe.getFile() == BaseFileObj.this) { - getProvidedExtensions().deleteSuccess(fe.getFile()); - } - } - } - private static class FileEventImpl extends FileEvent implements Enumeration { private FileEventImpl next; public boolean hasMoreElements() { Index: filebasedfs/fileobjects/FolderObj.java --- filebasedfs/fileobjects/FolderObj.java Base (BASE) +++ filebasedfs/fileobjects/FolderObj.java Locally Modified (Based On LOCAL) @@ -62,6 +62,7 @@ import org.netbeans.modules.masterfs.filebasedfs.naming.NamingFactory; import org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager; import org.netbeans.modules.masterfs.providers.ProvidedExtensions; +import org.openide.filesystems.FileUtil; /** * @author rm111737 @@ -173,7 +174,7 @@ } else { FSException.io("EXC_CannotCreateFolder", folder2Create.getName(), getPath());// NOI18N } - + getProvidedExtensions().createSuccess(retVal); return retVal; } @@ -258,7 +259,7 @@ } else { FSException.io("EXC_CannotCreateData", file2Create.getName(), getPath());// NOI18N } - + getProvidedExtensions().createSuccess(retVal); return retVal; } @@ -355,10 +356,12 @@ if (newChild.isFolder()) { if (fire) { + getProvidedExtensions().createdExternally(newChild); newChild.fireFileFolderCreatedEvent(expected); } } else { if (fire) { + getProvidedExtensions().createdExternally(newChild); newChild.fireFileDataCreatedEvent(expected); } } Index: ProvidedExtensionsProxy.java --- ProvidedExtensionsProxy.java Base (BASE) +++ ProvidedExtensionsProxy.java Locally Modified (Based On LOCAL) @@ -249,6 +249,96 @@ } } + @Override + public void createdExternally(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener instanceof ProvidedExtensions) { + runCheckCode(new Runnable() { + public void run() { + ((ProvidedExtensions)iListener).createdExternally(fo); + } + }); + } + } + } + + @Override + public void deletedExternally(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener instanceof ProvidedExtensions) { + runCheckCode(new Runnable() { + public void run() { + ((ProvidedExtensions)iListener).deletedExternally(fo); + } + }); + } + } + } + + @Override + public void fileChanged(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener instanceof ProvidedExtensions) { + runCheckCode(new Runnable() { + public void run() { + ((ProvidedExtensions)iListener).fileChanged(fo); + } + }); + } + } + } + + @Override + public void beforeMove(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener != null) { + runCheckCode(new Runnable() { + public void run() { + iListener.beforeMove(fo); + } + }); + } + } + } + + @Override + public void moveSuccess(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener != null) { + runCheckCode(new Runnable() { + public void run() { + iListener.moveSuccess(fo); + } + }); + } + } + } + + @Override + public void moveFailure(final FileObject fo) { + for (Iterator it = annotationProviders.iterator(); it.hasNext();) { + AnnotationProvider provider = (AnnotationProvider) it.next(); + final InterceptionListener iListener = (provider != null) ? provider.getInterceptionListener() : null; + if (iListener != null) { + runCheckCode(new Runnable() { + public void run() { + iListener.moveFailure(fo); + } + }); + } + } + } + public static void checkReentrancy() { if (reentrantCheck.get() != null) { Logger.getLogger("org.netbeans.modules.masterfs.ProvidedExtensionsProxy").log(Level.INFO,"Unexpected reentrant call", new Throwable());//NOI18N Index: providers/InterceptionListener.java --- providers/InterceptionListener.java Base (BASE) +++ providers/InterceptionListener.java Locally Modified (Based On LOCAL) @@ -53,4 +53,7 @@ void beforeDelete(org.openide.filesystems.FileObject fo); void deleteSuccess(org.openide.filesystems.FileObject fo); void deleteFailure(org.openide.filesystems.FileObject fo); + void beforeMove(org.openide.filesystems.FileObject fo); + void moveSuccess(org.openide.filesystems.FileObject fo); + void moveFailure(org.openide.filesystems.FileObject fo); } Index: providers/ProvidedExtensions.java --- providers/ProvidedExtensions.java Base (BASE) +++ providers/ProvidedExtensions.java Locally Modified (Based On LOCAL) @@ -176,4 +176,18 @@ * @since 1.11 */ public void fileUnlocked(FileObject fo) {} + + + public void createdExternally(FileObject fo) {} + + public void deletedExternally(FileObject fo) {} + + public void fileChanged(FileObject fo) {} + + public void beforeMove(FileObject fo) {} + + public void moveSuccess(FileObject fo) {} + + public void moveFailure(FileObject fo) {} + }