diff -r 70132524f97c openide.filesystems/src/org/openide/filesystems/LocalFileSystem.java --- a/openide.filesystems/src/org/openide/filesystems/LocalFileSystem.java Tue Mar 24 13:58:11 2009 +0100 +++ b/openide.filesystems/src/org/openide/filesystems/LocalFileSystem.java Tue Mar 24 15:52:29 2009 +0100 @@ -679,6 +679,7 @@ fs.markUnimportant(name); } } + static int cnt; /** This class adds new virtual attribute "java.io.File". * Because of the fact that FileObjects of LocalFileSystem are convertable @@ -702,6 +703,8 @@ return lfs.getFile(name); } +// System.err.printf(" counts: %d name: %s attr: %s\n", cnt++, name, attrName); + return super.readAttribute(name, attrName); } } diff -r 70132524f97c openide.filesystems/src/org/openide/filesystems/MultiFileObject.java --- a/openide.filesystems/src/org/openide/filesystems/MultiFileObject.java Tue Mar 24 13:58:11 2009 +0100 +++ b/openide.filesystems/src/org/openide/filesystems/MultiFileObject.java Tue Mar 24 15:52:29 2009 +0100 @@ -717,7 +717,14 @@ * @param attrName name of the attribute * @return appropriate (serializable) value or null if the attribute is unset (or could not be properly restored for some reason) */ + private static int cnt; public Object getAttribute(String attrName) { + if (getFileSystem().isDefault()) { + int prev = LocalFileSystem.cnt; +// System.err.printf("query %d for %s\n", ++cnt, getPath()); + LocalFileSystem.cnt = prev; + } + // Performance optimization (avoid calling getPath() too many times): return getAttribute(attrName, getPath()); } @@ -797,7 +804,9 @@ // could only have been made on a writable filesystem to begin with. // Could skip all RO FSs but then multi-user installs would not work // quite right. - if ((prefixattr != null) && !(systems[i] instanceof XMLFileSystem)) { + if ((prefixattr != null) && !(systems[i] instanceof XMLFileSystem) + && !systems[i].isReadOnly() + ) { fo = systems[i].getRoot(); Object o = getAttribute(fo, prefixattr, ""); // NOI18N