# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /data/work/src/netbeans-cdev # 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/ProvidedExtensionsProxy.java --- masterfs/src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java Locally Modified (Based On LOCAL) @@ -296,6 +296,96 @@ return 0; } + @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: masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java --- masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java Locally Modified (Based On LOCAL) @@ -83,7 +83,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; @@ -104,9 +103,6 @@ protected BaseFileObj(final File file, final FileNaming name) { this.fileName = name; - versioningWeakListener = WeakListeners.create(FileChangeListener.class, FileChangeListener.class, versioningListener, this); - addFileChangeListener(versioningWeakListener); - } @Override @@ -217,11 +213,14 @@ @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); @@ -242,6 +241,11 @@ } FileUtil.copyAttributes(this, result); + } catch (IOException ioe) { + extensions.moveFailure(this); + throw ioe; + } + extensions.moveSuccess(this); return result; } @@ -528,6 +532,8 @@ } public final void fireFileChangedEvent(final boolean expected) { + getProvidedExtensions().fileChanged(this); + Statistics.StopWatch stopWatch = Statistics.getStopWatch(Statistics.LISTENERS_CALLS); stopWatch.start(); @@ -617,6 +623,7 @@ getProvidedExtensions().deleteFailure(BaseFileObj.this); throw iex; } + getProvidedExtensions().deleteSuccess(BaseFileObj.this); return true; } }; @@ -708,6 +715,7 @@ } setValid(false); if (fire) { + getProvidedExtensions().deletedExternally(this); fireFileDeletedEvent(expected); } } @@ -865,32 +873,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: masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FolderObj.java --- masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FolderObj.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FolderObj.java Locally Modified (Based On LOCAL) @@ -190,7 +190,7 @@ } else { FSException.io("EXC_CannotCreateFolder", folder2Create.getName(), getPath());// NOI18N } - + getProvidedExtensions().createSuccess(retVal); return retVal; } @@ -275,7 +275,7 @@ } else { FSException.io("EXC_CannotCreateData", file2Create.getName(), getPath());// NOI18N } - + getProvidedExtensions().createSuccess(retVal); return retVal; } @@ -376,10 +376,12 @@ if (newChild.isFolder()) { if (fire) { + getProvidedExtensions().createdExternally(newChild); newChild.fireFileFolderCreatedEvent(expected); } } else { if (fire) { + getProvidedExtensions().createdExternally(newChild); newChild.fireFileDataCreatedEvent(expected); } } Index: masterfs/src/org/netbeans/modules/masterfs/providers/InterceptionListener.java --- masterfs/src/org/netbeans/modules/masterfs/providers/InterceptionListener.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/providers/InterceptionListener.java Locally Modified (Based On LOCAL) @@ -56,4 +56,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: masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java --- masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java Base (BASE) +++ masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java Locally Modified (Based On LOCAL) @@ -144,6 +144,18 @@ public void deleteFailure(FileObject fo) {} public void beforeDelete(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) {} + /** * Called by MasterFileSystem when FileObject is queried for writability with the * canWrite() method.