? 43189.diff ? a.diff ? actions/src/org/openide/resources Index: loaders/src/org/openide/loaders/DataFolder.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/loaders/DataFolder.java,v retrieving revision 1.30 diff -u -r1.30 DataFolder.java --- loaders/src/org/openide/loaders/DataFolder.java 5 Aug 2004 12:36:01 -0000 1.30 +++ loaders/src/org/openide/loaders/DataFolder.java 17 Aug 2004 10:17:24 -0000 @@ -21,6 +21,7 @@ import java.io.File; import java.lang.ref.*; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.*; import javax.swing.Action; import javax.swing.UIManager; @@ -34,9 +35,11 @@ import org.openide.filesystems.*; import org.openide.util.HelpCtx; import org.openide.nodes.*; +import org.openide.options.SystemOption; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.RequestProcessor; +import org.openide.util.SharedClassObject; /** A folder containing data objects. * Is actually itself a data object, whose primary (and only) file object @@ -147,6 +150,27 @@ throw new IllegalArgumentException ("Not folder: " + fo); // NOI18N } list = reassignList (fo, attach); + + // if this is not DefaultFS then start listening on IDESettings + try { + if (!isDefaultFS()) { + initGlobalSorting(); + if (ideSettings != null && getSortingMethod != null) { + ideSettings.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + if ("sorting".equals(evt.getPropertyName())) { //NOI18N + list.changeComparator(); + firePropertyChange (PROP_SORT_MODE, null, null); + } + } + }); + } + } + } catch (IOException e) { + ErrorManager.getDefault().log(ErrorManager.WARNING, e.toString()); + // OK, no sorting + } + } /** Attaches a listener to the folder list, removes any previous one if registered. @@ -191,6 +215,9 @@ * @exception IOException if the mode cannot be set */ public synchronized final void setSortMode (SortMode mode) throws IOException { + if (!isDefaultFS()) { + throw new IOException("Order can be set only on DefaultFileSystem DataFolders."); // NOI18N + } SortMode old = getOrder ().getSortMode (); getOrder ().setSortMode (mode); firePropertyChange (PROP_SORT_MODE, old, getOrder ().getSortMode ()); @@ -218,10 +245,61 @@ * */ public synchronized final void setOrder (DataObject[] arr) throws IOException { + if (!isDefaultFS()) { + throw new IOException("Order can be set only on DefaultFileSystem DataFolders."); // NOI18N + } getOrder ().setOrder (arr); firePropertyChange (PROP_ORDER, null, null); } + + private boolean isDefaultFS() throws IOException { + return getPrimaryFile().getFileSystem().equals(Repository.getDefault().getDefaultFileSystem()); + } + + // XXX: find IDESettings and read the global sort mode. + // Ugly, but there is no other way. Should be resolved once + // we have Settings API. + static SortMode getGlobalSorting() { + try { + if (ideSettings != null && getSortingMethod != null) { + return (SortMode)getSortingMethod.invoke(ideSettings, new Object[0]); + } + } catch (Exception e) { + // ignore, default sorting will be used + ErrorManager.getDefault().log(ErrorManager.WARNING, e.toString()); + } + return SortMode.FOLDER_NAMES; + } + + // XXX: find IDESettings and read the global sort mode. + // Ugly, but there is no other way. Should be resolved once + // we have Settings API. + static synchronized void initGlobalSorting() { + try { + if (!globalSortingInitialized) { + globalSortingInitialized = true; + ClassLoader l = (ClassLoader) Lookup.getDefault().lookup(ClassLoader.class); + Class clazz = l.loadClass("org.netbeans.core.IDESettings"); // NOI18N + ideSettings = (SystemOption)SharedClassObject.findObject(clazz, true); + if (ideSettings != null) { + getSortingMethod = clazz.getMethod("getSorting", null); // NOI18N + assert getSortingMethod != null; + } + } + } catch (Exception e) { + ErrorManager.getDefault().notify(e); + } + } + // IDESettings instance + private static SystemOption ideSettings; + + // IDESettings.getSortingMethod() method + private static Method getSortingMethod; + + // was IDESettings already initialized? + private static boolean globalSortingInitialized = false; + /** Getter for order object. * @return order of children */ @@ -1128,6 +1206,14 @@ */ protected Sheet createSheet () { Sheet s = super.createSheet (); + try { + if (!DataFolder.this.isDefaultFS()) { + return s; + } + } catch (IOException ex) { + // something wrong: disable sorting + return s; + } Sheet.Set ss = new Sheet.Set (); ss.setName (SET_SORTING); Index: loaders/src/org/openide/loaders/DataShadow.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/loaders/DataShadow.java,v retrieving revision 1.11 diff -u -r1.11 DataShadow.java --- loaders/src/org/openide/loaders/DataShadow.java 9 Jun 2004 20:33:52 -0000 1.11 +++ loaders/src/org/openide/loaders/DataShadow.java 17 Aug 2004 10:17:24 -0000 @@ -34,9 +34,17 @@ import org.openide.util.MutexException; /** Default implementation of a shortcut to another data object. -* Since 1.13 it extends MultiDataObject. -* @author Jan Jancura, Jaroslav Tulach -*/ + * Since 1.13 it extends MultiDataObject. + *

Usage deprecation: usage of DataShadow on + * non-DefaultFileSystem is deprecated. Also a DataShadow on DefaultFileSystem + * can point only to file/folder on DefaultFileSystem. The main usage of + * DataShadow on client filesystems was in old project system which is now + * replaced by buildsystem. If there is somebody who still need this + * functionality they should think about Datasystems independent solution, + * because #1) Datasystems are planned for redesign and #2) after Settings + * API is implemented the DataShadow will be fully deprecated. + * @author Jan Jancura, Jaroslav Tulach + */ public class DataShadow extends MultiDataObject implements DataObject.Container { /** generated Serialized Version UID */ static final long serialVersionUID = 6305590675982925167L; @@ -238,6 +246,15 @@ private void init(DataObject original) { if (original == null) throw new IllegalArgumentException(); + try { + if (!original.getPrimaryFile().getFileSystem().equals( + Repository.getDefault().getDefaultFileSystem())) { + ErrorManager.getDefault().log(ErrorManager.WARNING, "Usage of " + + "DataShadow on non-DefaultFileSystem was deprecated. Found: "+this); // NOI18N + } + } catch (FileStateInvalidException e) { + ErrorManager.getDefault().log(ErrorManager.WARNING, e.toString()); + } setOriginal (original); enqueueDataShadow(this); } @@ -391,6 +408,7 @@ */ protected static DataObject deserialize (FileObject fileObject) throws java.io.IOException { URL url = readURL(fileObject); + checkDeprecatedUsage(fileObject, url); FileObject fo = URLMapper.findFileObject(url); if (fo == null) { throw new java.io.FileNotFoundException (url.toExternalForm()); @@ -398,6 +416,14 @@ return DataObject.find (fo); } + private static void checkDeprecatedUsage(FileObject fo, URL u) { + if (u != null && (!u.getProtocol().startsWith("nbfs"))) { + ErrorManager.getDefault().log(ErrorManager.WARNING, "Found " + // NOI18N + "DataShadow which points to a non-DefaultFileSystem file. " + // NOI18N + "Such a usage was deprecated. It is "+fo+" and it points to "+u); // NOI18N + } + } + static URL readURL(final FileObject f) throws IOException { if ( f.getSize() == 0 ) { Object fileName = f.getAttribute ("originalFile"); // NOI18N @@ -562,6 +588,7 @@ private void tryUpdate() throws IOException { URL url = readURL(getPrimaryFile ()); + checkDeprecatedUsage(getPrimaryFile(), url); if (url.equals(original.getPrimaryFile().getURL())) { return; } Index: loaders/src/org/openide/loaders/FolderComparator.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/loaders/FolderComparator.java,v retrieving revision 1.5 diff -u -r1.5 FolderComparator.java --- loaders/src/org/openide/loaders/FolderComparator.java 21 Mar 2004 17:15:36 -0000 1.5 +++ loaders/src/org/openide/loaders/FolderComparator.java 17 Aug 2004 10:17:24 -0000 @@ -13,6 +13,9 @@ package org.openide.loaders; +import java.io.InvalidObjectException; +import java.io.ObjectStreamException; +import java.io.Serializable; import java.util.*; import org.openide.filesystems.FileObject; @@ -23,7 +26,7 @@ * Compares objects in a folder. * @author Jaroslav Tulach, Jesse Glick */ -class FolderComparator extends DataFolder.SortMode implements Comparator { +class FolderComparator extends DataFolder.SortMode implements Comparator, Serializable { /** modes */ public static final int NONE = 0; public static final int NAMES = 1; @@ -37,6 +40,7 @@ /** by folders, then size */ public static final int SIZE = 5; + private static final long serialVersionUID = 3328227315468795461L; /** mode to use */ private int mode; @@ -211,4 +215,17 @@ } } + private Object readResolve() throws ObjectStreamException { + switch (mode) { + case NONE: return DataFolder.SortMode.NONE; + case NAMES: return DataFolder.SortMode.NAMES; + case CLASS: return DataFolder.SortMode.CLASS; + case FOLDER_NAMES: return DataFolder.SortMode.FOLDER_NAMES; + case LAST_MODIFIED: return DataFolder.SortMode.LAST_MODIFIED; + case SIZE: return DataFolder.SortMode.SIZE; + default: + throw new InvalidObjectException("Cannot deserialize FolderComparator for mode "+mode); // NOI18N + } + } + } Index: loaders/src/org/openide/loaders/FolderList.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/loaders/FolderList.java,v retrieving revision 1.9 diff -u -r1.9 FolderList.java --- loaders/src/org/openide/loaders/FolderList.java 9 Jun 2004 20:26:39 -0000 1.9 +++ loaders/src/org/openide/loaders/FolderList.java 17 Aug 2004 10:17:24 -0000 @@ -262,7 +262,7 @@ /** Setter for sort mode. */ - private synchronized void changeComparator () { + synchronized void changeComparator () { final boolean LOG = err.isLoggable(ErrorManager.INFORMATIONAL); if (LOG) err.log ("changeComparator on " + folder); final RequestProcessor.Task previous = comparatorTask; @@ -813,7 +813,7 @@ */ private void fireChildrenChange (Collection add, Collection removed) { if (pcs != null) { - if (!add.isEmpty() || !removed.isEmpty()) { + if ((!add.isEmpty() || !removed.isEmpty()) && !add.equals(removed)) { pcs.firePropertyChange (PROP_CHILDREN, null, null); } } Index: loaders/src/org/openide/loaders/FolderOrder.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/loaders/FolderOrder.java,v retrieving revision 1.4 diff -u -r1.4 FolderOrder.java --- loaders/src/org/openide/loaders/FolderOrder.java 7 Jun 2004 08:28:09 -0000 1.4 +++ loaders/src/org/openide/loaders/FolderOrder.java 17 Aug 2004 10:17:24 -0000 @@ -18,6 +18,7 @@ import java.io.IOException; import java.util.*; +import org.openide.ErrorManager; import org.openide.filesystems.*; import org.openide.loaders.DataFolder.SortMode; @@ -27,7 +28,7 @@ * * @author Jaroslav Tulach */ -final class FolderOrder extends Object implements Comparator { +class FolderOrder extends Object implements Comparator { /** Separator of names of two files. The first file should be before * the second one in partial ordering */ @@ -207,7 +208,7 @@ /** Stores the order to files. */ - public void write () throws IOException { + private void write () throws IOException { // Let it throw the IOException: //if (folder.getFileSystem ().isReadOnly ()) return; // cannot write to read-only FS if (order == null) { @@ -393,6 +394,15 @@ * @return the order */ public static FolderOrder findFor (FileObject folder) { + try { + if (!folder.getFileSystem().equals(Repository.getDefault().getDefaultFileSystem())) { + return getGlobalOrdering(); + } + } catch (FileStateInvalidException ex) { + // something wrong, return global order + ErrorManager.getDefault().log(ErrorManager.WARNING, ex.toString()); + return getGlobalOrdering(); + } FolderOrder order = null; synchronized (map) { Reference ref = (Reference)map.get (folder); @@ -411,7 +421,40 @@ return order; } } + + private static FolderOrder globalFolderOrder; + + private static synchronized FolderOrder getGlobalOrdering() { + if (globalFolderOrder == null) { + globalFolderOrder = new GlobalFolderOrder(); + } + return globalFolderOrder; + } + + private static class GlobalFolderOrder extends FolderOrder { + + private GlobalFolderOrder() { + super(null); + DataFolder.initGlobalSorting(); + } + + public void setSortMode(SortMode mode) throws IOException { + // ignore + } + + public SortMode getSortMode() { + return DataFolder.getGlobalSorting(); + } + + public void setOrder(DataObject[] arr) throws IOException { + // ignore + } - + public Map getOrderingConstraints(Collection objects) { + // ignore + return null; + } + + } } Index: test/cfg-unit.xml =================================================================== RCS file: /cvs/openide/test/cfg-unit.xml,v retrieving revision 1.118 diff -u -r1.118 cfg-unit.xml --- test/cfg-unit.xml 16 Aug 2004 15:06:02 -0000 1.118 +++ test/cfg-unit.xml 17 Aug 2004 10:17:26 -0000 @@ -208,6 +208,19 @@ + + + + + + + + + + + + + Index: test/unit/src/org/openide/loaders/DataFolderSetOrderTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/DataFolderSetOrderTest.java,v retrieving revision 1.2 diff -u -r1.2 DataFolderSetOrderTest.java --- test/unit/src/org/openide/loaders/DataFolderSetOrderTest.java 24 Feb 2004 12:05:55 -0000 1.2 +++ test/unit/src/org/openide/loaders/DataFolderSetOrderTest.java 17 Aug 2004 10:17:26 -0000 @@ -16,19 +16,21 @@ import org.openide.filesystems.*; import java.beans.*; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import junit.framework.AssertionFailedError; import org.netbeans.junit.*; +import org.openide.modules.ModuleInfo; +import org.openide.util.Lookup; /** Does a change in order on folder fire the right properties? * * @author Jaroslav Tulach */ -public class DataFolderSetOrderTest extends NbTestCase -implements PropertyChangeListener { +public class DataFolderSetOrderTest extends NbTestCase { private DataFolder aa; private DataFolder bb; private ArrayList events = new ArrayList (); @@ -38,61 +40,38 @@ super (name); } - public static void main (String[] args) throws Exception { - junit.textui.TestRunner.run(new NbTestSuite (DataFolderSetOrderTest.class)); - } - - /** If execution fails we wrap the exception with - * new log message. - */ - protected void runTest () throws Throwable { - ErrManager.messages.append ("Starting test "); - ErrManager.messages.append (getName ()); - ErrManager.messages.append ('\n'); - - try { - super.runTest (); - } catch (AssertionFailedError ex) { - AssertionFailedError ne = new AssertionFailedError (ex.getMessage () + " Log:\n" + ErrManager.messages); - ne.setStackTrace (ex.getStackTrace ()); - throw ne; - } - } - protected void setUp () throws Exception { - System.setProperty("org.openide.util.Lookup", "org.openide.loaders.DataFolderSetOrderTest$Lkp"); - assertNotNull ("ErrManager has to be in lookup", org.openide.util.Lookup.getDefault ().lookup (ErrManager.class)); - if (previous != null) { previous.waitFinished (); } + clearWorkDir(); + + AddLoaderManuallyHid.addRemoveLoader(DataLoader.getLoader(DataObjectInvalidationTest.SlowDataLoader.class), true); - TestUtilHid.destroyLocalFileSystem (getName()); + TestUtils.initDefaultFS(this); String fsstruct [] = new String [] { "AA/X.txt", "AA/Y.txt", "BB/X.slow", }; + TestUtils.createFilesOnDefaultFS(fsstruct); - FileSystem lfs = TestUtilHid.createLocalFileSystem (getName (), fsstruct); + FileSystem lfs = Repository.getDefault().getDefaultFileSystem(); + aa = DataFolder.findFolder (lfs.getRoot().getFileObject("AA")); + bb = DataFolder.findFolder (lfs.getRoot().getFileObject("BB")); + aa.addPropertyChangeListener (new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + events.add(evt.getPropertyName()); + } - aa = DataFolder.findFolder (lfs.findResource ("AA")); - bb = DataFolder.findFolder (lfs.findResource ("BB")); - - aa.addPropertyChangeListener (this); + }); } protected void tearDown () throws Exception { - final DataLoader l = DataLoader.getLoader(DataObjectInvalidationTest.SlowDataLoader.class); - - aa.removePropertyChangeListener (this); + AddLoaderManuallyHid.addRemoveLoader(DataLoader.getLoader(DataObjectInvalidationTest.SlowDataLoader.class), false); } private void makeFolderRecognizerBusy () throws Exception { - if (getName().indexOf ("Busy") < 0) { - return; - } - final DataLoader l = DataLoader.getLoader(DataObjectInvalidationTest.SlowDataLoader.class); synchronized (l) { // this will trigger bb.getChildren @@ -109,14 +88,16 @@ // now the folder recognizer is blocked at least for 2s } - private void doTest () throws Exception { + private void doTest(boolean slow) throws Exception { DataObject[] arr = aa.getChildren (); assertEquals ("Two objects", 2, arr.length); ArrayList l = new ArrayList (Arrays.asList (arr)); java.util.Collections.reverse (l); - assertEquals ("No changes yet", 0, events.size ()); - makeFolderRecognizerBusy (); + assertEquals ("No changes yet "+events, 0, events.size ()); + if (slow) { + makeFolderRecognizerBusy(); + } aa.setOrder ((DataObject[])l.toArray (new DataObject[0])); DataObject[] narr = aa.getChildren (); @@ -133,100 +114,12 @@ } public void testReorderWithoutChecksWhenFolderReconizerIsBusy () throws Exception { - doTest (); + doTest(true); } public void testReorderWithoutChecks () throws Exception { - doTest (); + doTest(false); } - public void propertyChange (PropertyChangeEvent evt) { - events.add (evt.getPropertyName ()); - } - - // - // Our fake lookup - // - public static final class Lkp extends org.openide.util.lookup.AbstractLookup { - public Lkp () { - this (new org.openide.util.lookup.InstanceContent ()); - } - - private Lkp (org.openide.util.lookup.InstanceContent ic) { - super (ic); - ic.add (new ErrManager ()); - ic.add (new Pool ()); - } - } - // - // Logging support - // - public static final class ErrManager extends org.openide.ErrorManager { - public static final StringBuffer messages = new StringBuffer (); - - private String prefix; - - public ErrManager () { - this (null); - } - public ErrManager (String prefix) { - this.prefix = prefix; - } - - public Throwable annotate (Throwable t, int severity, String message, String localizedMessage, Throwable stackTrace, java.util.Date date) { - return t; - } - - public Throwable attachAnnotations (Throwable t, org.openide.ErrorManager.Annotation[] arr) { - return t; - } - - public org.openide.ErrorManager.Annotation[] findAnnotations (Throwable t) { - return null; - } - - public org.openide.ErrorManager getInstance (String name) { - if ( - name.startsWith ("org.openide.loaders.FolderList") -// || name.startsWith ("org.openide.loaders.FolderInstance") - ) { - return new ErrManager ('[' + name + ']'); - } else { - // either new non-logging or myself if I am non-logging - return new ErrManager (); - } - } - - public void log (int severity, String s) { - if (prefix != null) { - messages.append (prefix); - messages.append (s); - messages.append ('\n'); - } - } - - public void notify (int severity, Throwable t) { - log (severity, t.getMessage ()); - } - - public boolean isNotifiable (int severity) { - return prefix != null; - } - - public boolean isLoggable (int severity) { - return prefix != null; - } - - } // end of ErrManager - - private static final class Pool extends DataLoaderPool { - - protected java.util.Enumeration loaders () { - return new org.openide.util.enum.SingletonEnumeration ( - DataLoader.getLoader(DataObjectInvalidationTest.SlowDataLoader.class) - ); - } - - } // end of Pool } Index: test/unit/src/org/openide/loaders/DataFolderTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/DataFolderTest.java,v retrieving revision 1.21 diff -u -r1.21 DataFolderTest.java --- test/unit/src/org/openide/loaders/DataFolderTest.java 16 May 2003 12:08:44 -0000 1.21 +++ test/unit/src/org/openide/loaders/DataFolderTest.java 17 Aug 2004 10:17:26 -0000 @@ -171,15 +171,14 @@ /** Tests whether children are updated immediatelly. */ public void testOrderInAtomicAction () throws Exception { + clearWorkDir(); + TestUtils.initDefaultFS(this); String fsstruct [] = new String [] { "AA/", }; + TestUtils.createFilesOnDefaultFS(fsstruct); - TestUtilHid.destroyLocalFileSystem (getName()); - FileSystem lfs = TestUtilHid.createLocalFileSystem (getName (), fsstruct); - - - DataFolder df = DataFolder.findFolder (lfs.findResource ("AA")); + DataFolder df = DataFolder.findFolder (Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("AA")); int expected = 0; int count = 5; @@ -243,20 +242,16 @@ * layers on system filesystem. */ public void testOrderWhenAttributeIsChanged () throws Exception { -// if (System.getProperty("netbeans.user") == null) -// fail("Test can't run in this environment, use -Dxtest.mode=ide"); - + clearWorkDir(); + TestUtils.initDefaultFS(this); String fsstruct [] = new String [] { "AA/AAA/", "AA/BBB/", "AA/CCC/" }; + TestUtils.createFilesOnDefaultFS(fsstruct); + DataFolder df = DataFolder.findFolder (Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("AA")); - TestUtilHid.destroyLocalFileSystem (getName()); - FileSystem lfs = TestUtilHid.createLocalFileSystem (getName (), fsstruct); - - - DataFolder df = DataFolder.findFolder (lfs.findResource ("AA")); DataObject[] arr = df.getChildren (); String append = ""; @@ -294,17 +289,16 @@ } public void testOrderWhenSet () throws Exception { + clearWorkDir(); + TestUtils.initDefaultFS(this); String fsstruct [] = new String [] { "AA/AAA/", "AA/BBB/", "AA/CCC/" }; + TestUtils.createFilesOnDefaultFS(fsstruct); + DataFolder df = DataFolder.findFolder (Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("AA")); - TestUtilHid.destroyLocalFileSystem (getName()); - FileSystem lfs = TestUtilHid.createLocalFileSystem (getName (), fsstruct); - - - DataFolder df = DataFolder.findFolder (lfs.findResource ("AA")); DataObject[] arr = df.getChildren (); DataObject[] rev = new DataObject [arr.length]; @@ -323,7 +317,10 @@ assertChildrenArrays ("", arr, df.getChildren (), false); } + // XXX: rewrite this test somehow. only DefaultFS can be ordered now + /* public void testOrderWhenMultiFileSystemSetDelegatesIsCalled () throws Exception { + clearWorkDir(); String fsstruct [] = new String [] { "AA/AAA/", "AA/BBB/", @@ -371,40 +368,40 @@ assertTrue(l.gotSomething()); //System.out.println("df " + df.getPrimaryFile ().getAttribute (DataFolder.EA_ORDER)); assertChildrenArrays ("", arr, df.getChildren (), false); - } + }*/ // #13820: public void testOrderWhenFileRenamed() throws Exception { - TestUtilHid.destroyLocalFileSystem(getName()); - FileSystem fs = TestUtilHid.createLocalFileSystem(getName(), new String[] { + clearWorkDir(); + TestUtils.initDefaultFS(this); + String fsstruct [] = new String [] { "folder/a1/", "folder/b2/", "folder/c3/", - }); - DataFolder folder = DataFolder.findFolder(fs.findResource("folder")); + }; + TestUtils.createFilesOnDefaultFS(fsstruct); + DataFolder folder = DataFolder.findFolder (Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("folder")); + assertEquals("initial order is alphabetical", "a1/b2/c3", childrenOrder(folder)); OrderListener l = new OrderListener(); folder.addPropertyChangeListener(l); - DataObject.find(fs.findResource("folder/b2")).rename("d4"); + DataObject.find(Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("folder/b2")).rename("d4"); assertTrue("Renaming a file fires PROP_CHILDREN on folder", l.gotSomething()); assertEquals("order after rename is still alphabetical", "a1/c3/d4", childrenOrder(folder)); } public void testSortMode() throws Exception { - TestUtilHid.destroyLocalFileSystem(getName()); - FileSystem fs = TestUtilHid.createLocalFileSystem(getName(), new String[] { - "folder/a/", - "folder/b.xml", - "folder/c/", - "folder/e.xml", - "folder/d.instance", - }); - assertTrue(fs.findResource("folder/a").isFolder()); - assertTrue(fs.findResource("folder/b.xml").isData()); - assertTrue(fs.findResource("folder/c").isFolder()); - assertTrue(fs.findResource("folder/e.xml").isData()); - assertTrue(fs.findResource("folder/d.instance").isData()); - DataFolder folder = DataFolder.findFolder(fs.findResource("folder")); + clearWorkDir(); + TestUtils.initDefaultFS(this); + String fsstruct [] = new String [] { + "folder2/a/", + "folder2/b.xml", + "folder2/c/", + "folder2/e.xml", + "folder2/d.instance", + }; + TestUtils.createFilesOnDefaultFS(fsstruct); + DataFolder folder = DataFolder.findFolder (Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("folder2")); assertEquals("initial order is alphabetical, folders first", "a/c/b.xml/d.instance/e.xml", childrenOrder(folder)); folder.setSortMode(DataFolder.SortMode.NAMES); assertEquals("next order is alphabetical", "a/b.xml/c/d.instance/e.xml", childrenOrder(folder)); Index: test/unit/src/org/openide/loaders/DataShadowBrokenSlownessTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/DataShadowBrokenSlownessTest.java,v retrieving revision 1.2 diff -u -r1.2 DataShadowBrokenSlownessTest.java --- test/unit/src/org/openide/loaders/DataShadowBrokenSlownessTest.java 12 May 2004 10:25:08 -0000 1.2 +++ test/unit/src/org/openide/loaders/DataShadowBrokenSlownessTest.java 17 Aug 2004 10:17:26 -0000 @@ -20,7 +20,6 @@ import java.util.Enumeration; import org.openide.nodes.Node; import org.openide.cookies.InstanceCookie; -import org.openide.filesystems.Repository; import org.netbeans.junit.*; import org.openide.filesystems.*; @@ -51,15 +50,18 @@ } protected void setUp() throws Exception { - TestUtilHid.destroyLocalFileSystem(getName()); - lfs = TestUtilHid.createLocalFileSystem(getName(), new String[] { + TestUtils.initDefaultFS(this); +// TestUtilHid.destroyLocalFileSystem(getName()); + String[] fsstruct = { "shadows/", "brokenshadows", "folder/original.txt", "folder/orig.txt", "modify/" - }); - Repository.getDefault ().addFileSystem (lfs); + }; + TestUtils.createFilesOnDefaultFS(fsstruct); + lfs = Repository.getDefault().getDefaultFileSystem(); +// Repository.getDefault ().addFileSystem (lfs); int count = getNumber ().intValue (); @@ -125,8 +127,11 @@ protected void tearDown() throws Exception { long now = System.currentTimeMillis (); - Repository.getDefault ().removeFileSystem (lfs); - TestUtilHid.destroyLocalFileSystem(getName()); +// Repository.getDefault ().removeFileSystem (lfs); +// TestUtilHid.destroyLocalFileSystem(getName()); +// TestUtils.destroyDefaultFS(this); + lfs.findResource("shadows").delete(); + lfs.getRoot().createFolder("shadows"); times.put (getNumber (), new Long (now - time)); Index: test/unit/src/org/openide/loaders/DataShadowSlowness39981Test.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/DataShadowSlowness39981Test.java,v retrieving revision 1.2 diff -u -r1.2 DataShadowSlowness39981Test.java --- test/unit/src/org/openide/loaders/DataShadowSlowness39981Test.java 12 May 2004 10:25:08 -0000 1.2 +++ test/unit/src/org/openide/loaders/DataShadowSlowness39981Test.java 17 Aug 2004 10:17:26 -0000 @@ -20,7 +20,6 @@ import java.util.Enumeration; import org.openide.nodes.Node; import org.openide.cookies.InstanceCookie; -import org.openide.filesystems.Repository; import org.netbeans.junit.*; import org.openide.filesystems.*; @@ -53,15 +52,17 @@ } protected void setUp() throws Exception { - TestUtilHid.destroyLocalFileSystem(getName()); - lfs = TestUtilHid.createLocalFileSystem(getName(), new String[] { + TestUtils.initDefaultFS(this); + String[] fsstruct = { "shadows/", "brokenshadows", "folder/original.txt", "folder/orig.txt", "modify/" - }); - Repository.getDefault ().addFileSystem (lfs); + }; + TestUtils.createFilesOnDefaultFS(fsstruct); + lfs = Repository.getDefault().getDefaultFileSystem(); +// Repository.getDefault ().addFileSystem (lfs); int count = getNumber ().intValue (); @@ -127,8 +128,10 @@ protected void tearDown() throws Exception { long now = System.currentTimeMillis (); - Repository.getDefault ().removeFileSystem (lfs); - TestUtilHid.destroyLocalFileSystem(getName()); +// Repository.getDefault ().removeFileSystem (lfs); +// TestUtilHid.destroyLocalFileSystem(getName()); + lfs.findResource("shadows").delete(); + lfs.getRoot().createFolder("shadows"); times.put (getNumber (), new Long (now - time)); Index: test/unit/src/org/openide/loaders/DataShadowTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/DataShadowTest.java,v retrieving revision 1.8 diff -u -r1.8 DataShadowTest.java --- test/unit/src/org/openide/loaders/DataShadowTest.java 28 Jul 2004 14:21:49 -0000 1.8 +++ test/unit/src/org/openide/loaders/DataShadowTest.java 17 Aug 2004 10:17:26 -0000 @@ -46,8 +46,15 @@ } protected void setUp() throws Exception { - lfs = Repository.getDefault ().getDefaultFileSystem (); - FileObject fo = FileUtil.createData (lfs.getRoot (), getName () + "/folder/original.txt"); + TestUtils.initDefaultFS(this); + String[] fsstruct = { + "folder/original.txt", + "folder/orig.txt", + "modify/" + }; + TestUtils.createFilesOnDefaultFS(fsstruct); + lfs = Repository.getDefault().getDefaultFileSystem(); + FileObject fo = lfs.findResource("folder/original.txt"); assertNotNull(fo); original = DataObject.find (fo); assertFalse ("Just to be sure that this is not shadow", original instanceof DataShadow); @@ -56,8 +63,6 @@ assertNotNull(fo); assertTrue (fo.isFolder ()); folder = DataFolder.findFolder (fo); - - Repository.getDefault ().addFileSystem (lfs); } protected void tearDown() throws Exception { @@ -153,7 +158,7 @@ shade = null; assertGC ("Shadow can disappear", ref); - original.rename ("newname"); + original.rename ("newname2.txt"); DataObject obj = DataObject.find (primary); Index: test/unit/src/org/openide/loaders/InstanceDataObjectTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/loaders/InstanceDataObjectTest.java,v retrieving revision 1.31 diff -u -r1.31 InstanceDataObjectTest.java --- test/unit/src/org/openide/loaders/InstanceDataObjectTest.java 13 Aug 2004 16:43:59 -0000 1.31 +++ test/unit/src/org/openide/loaders/InstanceDataObjectTest.java 17 Aug 2004 10:17:27 -0000 @@ -129,7 +129,7 @@ try { final FileObject primary = ido.getPrimaryFile(); System.err.println("Deleting file=" + primary); - primary.delete(primary.lock()); + primary.delete(); // XXX Testing the case event is fired. // l.propertyChange(new PropertyChangeEvent( Index: test/unit/src/org/openide/loaders/TestUtils.java =================================================================== RCS file: test/unit/src/org/openide/loaders/TestUtils.java diff -N test/unit/src/org/openide/loaders/TestUtils.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ test/unit/src/org/openide/loaders/TestUtils.java 17 Aug 2004 10:17:27 -0000 @@ -0,0 +1,51 @@ +/* + * Sun Public License Notice + * + * The contents of this file are subject to the Sun Public License + * Version 1.0 (the "License"). You may not use this file except in + * compliance with the License. A copy of the License is available at + * http://www.sun.com/ + * + * The Original Code is NetBeans. The Initial Developer of the Original + * Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun + * Microsystems, Inc. All Rights Reserved. + */ + +package org.openide.loaders; + +import org.netbeans.junit.NbTestCase; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.filesystems.Repository; +import org.openide.modules.ModuleInfo; +import org.openide.util.Lookup; + +/** Misc utilities for easier testing. + * @author David Konecny + */ +public final class TestUtils { + + private TestUtils() {} + + public static void initDefaultFS(NbTestCase test) throws Exception { + System.setProperty("netbeans.user", test.getWorkDir().getAbsolutePath()); +// System.out.println(">>>>>"+test.getWorkDir().getAbsolutePath()); + Lookup.getDefault().lookup(ModuleInfo.class); + } + + public static void createFilesOnDefaultFS(String[] files) throws Exception { + FileObject folder = Repository.getDefault().getDefaultFileSystem().getRoot(); + for (int i=0; i