This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 133855
Collapse All | Expand All

(-)masterfs/src/org/netbeans/modules/masterfs/ProvidedExtensionsProxy.java (+90 lines)
Lines 296-301 Link Here
296
        return 0;
296
        return 0;
297
    }
297
    }
298
    
298
    
299
    @Override
300
    public void createdExternally(final FileObject fo) {
301
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
302
            AnnotationProvider provider = (AnnotationProvider) it.next();
303
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
304
            if (iListener instanceof ProvidedExtensions) {
305
                runCheckCode(new Runnable() {
306
                    public void run() {
307
                        ((ProvidedExtensions)iListener).createdExternally(fo);
308
                    }
309
                });
310
            }
311
        }
312
    }
313
314
    @Override
315
    public void deletedExternally(final FileObject fo) {
316
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
317
            AnnotationProvider provider = (AnnotationProvider) it.next();
318
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
319
            if (iListener instanceof ProvidedExtensions) {
320
                runCheckCode(new Runnable() {
321
                    public void run() {
322
                        ((ProvidedExtensions)iListener).deletedExternally(fo);
323
                    }
324
                });
325
            }
326
        }
327
    }
328
329
    @Override
330
    public void fileChanged(final FileObject fo) {
331
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
332
            AnnotationProvider provider = (AnnotationProvider) it.next();
333
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
334
            if (iListener instanceof ProvidedExtensions) {
335
                runCheckCode(new Runnable() {
336
                    public void run() {
337
                        ((ProvidedExtensions)iListener).fileChanged(fo);
338
                    }
339
                });
340
            }
341
        }
342
    }
343
344
    @Override
345
    public void beforeMove(final FileObject fo) {
346
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
347
            AnnotationProvider provider = (AnnotationProvider) it.next();
348
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
349
            if (iListener != null) {
350
                runCheckCode(new Runnable() {
351
                    public void run() {
352
                        iListener.beforeMove(fo);
353
                    }
354
                });
355
            }
356
        }
357
    }
358
359
    @Override
360
    public void moveSuccess(final FileObject fo) {
361
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
362
            AnnotationProvider provider = (AnnotationProvider) it.next();
363
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
364
            if (iListener != null) {
365
                runCheckCode(new Runnable() {
366
                    public void run() {
367
                        iListener.moveSuccess(fo);
368
                    }
369
                });
370
            }
371
        }
372
    }
373
374
    @Override
375
    public void moveFailure(final FileObject fo) {
376
        for (Iterator it = annotationProviders.iterator(); it.hasNext();) {
377
            AnnotationProvider provider = (AnnotationProvider) it.next();
378
            final InterceptionListener iListener = (provider != null) ?  provider.getInterceptionListener() : null;
379
            if (iListener != null) {
380
                runCheckCode(new Runnable() {
381
                    public void run() {
382
                        iListener.moveFailure(fo);
383
                    }
384
                });
385
            }
386
        }
387
   }
388
    
299
    public static void checkReentrancy() {
389
    public static void checkReentrancy() {
300
        if (reentrantCheck.get() != null) {            
390
        if (reentrantCheck.get() != null) {            
301
            Logger.getLogger("org.netbeans.modules.masterfs.ProvidedExtensionsProxy").log(Level.INFO,"Unexpected reentrant call", new Throwable());//NOI18N
391
            Logger.getLogger("org.netbeans.modules.masterfs.ProvidedExtensionsProxy").log(Level.INFO,"Unexpected reentrant call", new Throwable());//NOI18N
(-)masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java (-32 / +14 lines)
Lines 83-89 Link Here
83
    private static final String PATH_SEPARATOR = File.separator;//NOI18N
83
    private static final String PATH_SEPARATOR = File.separator;//NOI18N
84
    private static final char EXT_SEP = '.';//NOI18N
84
    private static final char EXT_SEP = '.';//NOI18N
85
    private FileChangeListener versioningWeakListener;    
85
    private FileChangeListener versioningWeakListener;    
86
    private final FileChangeListener versioningListener = new FileChangeListenerForVersioning();
87
86
88
    //static fields 
87
    //static fields 
89
    static final long serialVersionUID = -1244650210876356809L;
88
    static final long serialVersionUID = -1244650210876356809L;
Lines 104-112 Link Here
104
    
103
    
105
    protected BaseFileObj(final File file, final FileNaming name) {
104
    protected BaseFileObj(final File file, final FileNaming name) {
106
        this.fileName = name;
105
        this.fileName = name;
107
        versioningWeakListener = WeakListeners.create(FileChangeListener.class, FileChangeListener.class, versioningListener, this);
108
        addFileChangeListener(versioningWeakListener);
109
110
    }
106
    }
111
       
107
       
112
    @Override
108
    @Override
Lines 217-227 Link Here
217
     
213
     
218
    @Override
214
    @Override
219
    public final FileObject move(FileLock lock, FileObject target, String name, String ext) throws IOException {
215
    public final FileObject move(FileLock lock, FileObject target, String name, String ext) throws IOException {
216
        ProvidedExtensions extensions = getProvidedExtensions();
217
        extensions.beforeMove(this);
218
        FileObject result = null;
219
        try {
220
        if (!checkLock(lock)) {
220
        if (!checkLock(lock)) {
221
            FSException.io("EXC_InvalidLock", lock, getPath()); // NOI18N
221
            FSException.io("EXC_InvalidLock", lock, getPath()); // NOI18N
222
        }
222
        }
223
        ProvidedExtensions extensions =  getProvidedExtensions();
223
224
        FileObject result = null;
225
        File to = (target instanceof FolderObj) ? new File(((BaseFileObj) target).getFileName().getFile(), FileInfo.composeName(name, ext)) :
224
        File to = (target instanceof FolderObj) ? new File(((BaseFileObj) target).getFileName().getFile(), FileInfo.composeName(name, ext)) :
226
            new File(FileUtil.toFile(target), FileInfo.composeName(name, ext));            
225
            new File(FileUtil.toFile(target), FileInfo.composeName(name, ext));            
227
        final IOHandler moveHandler = extensions.getMoveHandler(getFileName().getFile(), to);
226
        final IOHandler moveHandler = extensions.getMoveHandler(getFileName().getFile(), to);
Lines 242-247 Link Here
242
        }
241
        }
243
        
242
        
244
        FileUtil.copyAttributes(this, result);
243
        FileUtil.copyAttributes(this, result);
244
        } catch (IOException ioe) {
245
            extensions.moveFailure(this);
246
            throw ioe;
247
        }
248
        extensions.moveSuccess(this);
245
        return result;                        
249
        return result;                        
246
    }
250
    }
247
    
251
    
Lines 528-533 Link Here
528
    }
532
    }
529
533
530
    public final void fireFileChangedEvent(final boolean expected) {
534
    public final void fireFileChangedEvent(final boolean expected) {
535
        getProvidedExtensions().fileChanged(this);
536
531
        Statistics.StopWatch stopWatch = Statistics.getStopWatch(Statistics.LISTENERS_CALLS);
537
        Statistics.StopWatch stopWatch = Statistics.getStopWatch(Statistics.LISTENERS_CALLS);
532
        stopWatch.start();
538
        stopWatch.start();
533
        
539
        
Lines 617-622 Link Here
617
                    getProvidedExtensions().deleteFailure(BaseFileObj.this);
623
                    getProvidedExtensions().deleteFailure(BaseFileObj.this);
618
                    throw iex;
624
                    throw iex;
619
                }
625
                }
626
                getProvidedExtensions().deleteSuccess(BaseFileObj.this);
620
                return true;
627
                return true;
621
            }            
628
            }            
622
        };
629
        };
Lines 708-713 Link Here
708
            }
715
            }
709
            setValid(false);
716
            setValid(false);
710
            if (fire) {
717
            if (fire) {
718
                getProvidedExtensions().deletedExternally(this);
711
                fireFileDeletedEvent(expected);
719
                fireFileDeletedEvent(expected);
712
            }
720
            }
713
        } 
721
        } 
Lines 865-896 Link Here
865
        return getExistingParentFor(getFileName().getFile(), getFactory());
873
        return getExistingParentFor(getFileName().getFile(), getFactory());
866
    }
874
    }
867
    
875
    
868
    private final class FileChangeListenerForVersioning extends FileChangeAdapter {
869
        @Override
870
        public void fileDataCreated(FileEvent fe) {
871
            if (fe.getFile() == BaseFileObj.this) {
872
                getProvidedExtensions().createSuccess(fe.getFile());
873
            }
874
        }
875
876
        /**
877
         * Implements FileChangeListener.fileFolderCreated(FileEvent fe)
878
         */
879
        @Override
880
        public void fileFolderCreated(FileEvent fe) {
881
            if (fe.getFile() == BaseFileObj.this) {            
882
                getProvidedExtensions().createSuccess(fe.getFile());
883
            }
884
        }
885
886
        @Override
887
        public void fileDeleted(FileEvent fe) {
888
            if (fe.getFile() == BaseFileObj.this) {
889
                getProvidedExtensions().deleteSuccess(fe.getFile());
890
            }
891
        }        
892
    }    
893
        
894
    private static class FileEventImpl extends FileEvent implements Enumeration<FileEvent> {
876
    private static class FileEventImpl extends FileEvent implements Enumeration<FileEvent> {
895
        private FileEventImpl next;
877
        private FileEventImpl next;
896
        public boolean hasMoreElements() {
878
        public boolean hasMoreElements() {
(-)masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FolderObj.java (-2 / +4 lines)
Lines 190-196 Link Here
190
        } else {
190
        } else {
191
            FSException.io("EXC_CannotCreateFolder", folder2Create.getName(), getPath());// NOI18N                           
191
            FSException.io("EXC_CannotCreateFolder", folder2Create.getName(), getPath());// NOI18N                           
192
        }
192
        }
193
193
        getProvidedExtensions().createSuccess(retVal);
194
        return retVal;
194
        return retVal;
195
    }
195
    }
196
196
Lines 275-281 Link Here
275
        } else {
275
        } else {
276
            FSException.io("EXC_CannotCreateData", file2Create.getName(), getPath());// NOI18N
276
            FSException.io("EXC_CannotCreateData", file2Create.getName(), getPath());// NOI18N
277
        }
277
        }
278
278
        getProvidedExtensions().createSuccess(retVal);
279
        return retVal;
279
        return retVal;
280
    }
280
    }
281
281
Lines 376-385 Link Here
376
376
377
                if (newChild.isFolder()) {
377
                if (newChild.isFolder()) {
378
                    if (fire) {
378
                    if (fire) {
379
                        getProvidedExtensions().createdExternally(newChild);
379
                        newChild.fireFileFolderCreatedEvent(expected);
380
                        newChild.fireFileFolderCreatedEvent(expected);
380
                    }
381
                    }
381
                } else {
382
                } else {
382
                    if (fire) {
383
                    if (fire) {
384
                        getProvidedExtensions().createdExternally(newChild);
383
                        newChild.fireFileDataCreatedEvent(expected);
385
                        newChild.fireFileDataCreatedEvent(expected);
384
                    }
386
                    }
385
                }
387
                }
(-)masterfs/src/org/netbeans/modules/masterfs/providers/InterceptionListener.java (+3 lines)
Lines 56-59 Link Here
56
    void beforeDelete(org.openide.filesystems.FileObject fo);
56
    void beforeDelete(org.openide.filesystems.FileObject fo);
57
    void deleteSuccess(org.openide.filesystems.FileObject fo);
57
    void deleteSuccess(org.openide.filesystems.FileObject fo);
58
    void deleteFailure(org.openide.filesystems.FileObject fo);    
58
    void deleteFailure(org.openide.filesystems.FileObject fo);    
59
    void beforeMove(org.openide.filesystems.FileObject fo);
60
    void moveSuccess(org.openide.filesystems.FileObject fo);
61
    void moveFailure(org.openide.filesystems.FileObject fo);
59
}
62
}
(-)masterfs/src/org/netbeans/modules/masterfs/providers/ProvidedExtensions.java (+12 lines)
Lines 144-149 Link Here
144
    public void deleteFailure(FileObject fo) {}
144
    public void deleteFailure(FileObject fo) {}
145
    public void beforeDelete(FileObject fo) {}
145
    public void beforeDelete(FileObject fo) {}
146
146
147
    public void createdExternally(FileObject fo) {}
148
149
    public void deletedExternally(FileObject fo) {}
150
151
    public void fileChanged(FileObject fo) {}
152
153
    public void beforeMove(FileObject fo) {}
154
155
    public void moveSuccess(FileObject fo) {}
156
157
    public void moveFailure(FileObject fo) {}
158
147
    /**
159
    /**
148
     * Called by <code>MasterFileSystem</code> when <code>FileObject</code> is queried for writability with the
160
     * Called by <code>MasterFileSystem</code> when <code>FileObject</code> is queried for writability with the
149
     * canWrite() method.
161
     * canWrite() method.

Return to bug 133855