/** Creates order for given folder object. * @param f the folder * @return the order */ public static FolderOrder findFor (FileObject folder) { FolderOrder order = null; synchronized (map) { Reference ref = (Reference)map.get (folder); order = ref == null ? null : (FolderOrder)ref.get (); if (order == null) { order = new FolderOrder (folder); order.previous = knownOrders.get(folder); order.doRead(order.previous); map.put (folder, new SoftReference (order)); } } // always reread the order from disk, so it is uptodate synchronized (order) { order.read (); return order; } }