Index: tools/src/org/netbeans/modules/xml/tools/generator/SAXGeneratorSupport.java =================================================================== RCS file: /cvs/xml/tools/src/org/netbeans/modules/xml/tools/generator/SAXGeneratorSupport.java,v retrieving revision 1.5 diff -u -r1.5 SAXGeneratorSupport.java --- tools/src/org/netbeans/modules/xml/tools/generator/SAXGeneratorSupport.java 15 Jan 2002 14:31:57 -0000 1.5 +++ tools/src/org/netbeans/modules/xml/tools/generator/SAXGeneratorSupport.java 15 Jan 2002 16:30:32 -0000 @@ -401,47 +401,40 @@ file = folder.createData(name, ext); return DataObject.find(file); - } else if ( file.isVirtual() ) { - // FileObject represents virtual file (not available), - + } else if ( file.isVirtual() || overwrite) { + // isVirtual: + // FileObject represents virtual file (not available), + // so it is important to delete such virtual file + // and create real one. + // overwrite: + // make backup of original file + FileSystem fs = folder.getFileSystem(); - final FileObject virtFile = file; + final FileObject tempFile = file; fs.runAtomicAction (new FileSystem.AtomicAction () { - public void run () throws IOException { - // so it is important to delete such virtual file - // and create real one. - virtFile.delete(); - folder.createData (name, ext); + + if ( (overwrite == true ) && + (tempFile.isVirtual() == false) ) { + // Make copy of original not virtual file + + for (int i = 1; true; i++) { + if (tempFile.existsExt (ext + i) == false) { + tempFile.copy (folder, name, ext + i); + break; + } + } + } + + tempFile.delete(); + folder.createData (name, ext); } }); file = folder.getFileObject (name, ext); - return DataObject.find (file); - - } else if (overwrite) { // backup it - - FileLock lock = null; - try { - lock = file.lock(); - for (int i = 1; true; i++) { - if (file.existsExt(ext + i) == false) { - file.move(lock, folder, name, ext + i); - break; - } - } - - file = folder.createData(name, ext); - - } catch (IOException ex) { - // can not move -> do not back up - } finally { - if (lock != null) lock.releaseLock(); - } - - return DataObject.find(file); + return DataObject.find (file); } else { return null;