Skip to content

Commit 8b5381f

Browse files
committed
Valhalla compatibility
Changes required for minimal value object compatibility. NB starts and projects load.
1 parent d753c90 commit 8b5381f

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

platform/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObjectFactory.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,15 @@
5656
* @author Radek Matous
5757
*/
5858
public final class FileObjectFactory {
59-
public static final Map<File, FileObjectFactory> AllFactories = new HashMap<File, FileObjectFactory>();
59+
public static final Map<File, FileObjectFactory> AllFactories = new HashMap<>();
6060
public static boolean WARNINGS = true;
61+
62+
/// identity object used as key in WeakHashMap
63+
private record Key(int id) {}
64+
6165
//@GuardedBy("allIBaseLock")
62-
final Map<Integer, Object> allIBaseFileObjects = new WeakHashMap<Integer, Object>();
66+
final Map<Key, Object> allIBaseFileObjects = new WeakHashMap<>();
67+
6368
final ReadWriteLock allIBaseLock = new ReentrantReadWriteLock();
6469
private BaseFileObj root;
6570
private static final Logger LOG_REFRESH = Logger.getLogger("org.netbeans.modules.masterfs.REFRESH"); // NOI18N
@@ -604,14 +609,14 @@ public static boolean isParentOf(final File dir, final File file) {
604609
}
605610

606611
public final void rename(Set<BaseFileObj> changeId) {
607-
final Map<Integer, Object> toRename = new HashMap<Integer, Object>();
612+
final Map<Key, Object> toRename = new HashMap<>();
608613
allIBaseLock.writeLock().lock();
609614
try {
610-
final Iterator<Map.Entry<Integer, Object>> it = allIBaseFileObjects.entrySet().iterator();
615+
final Iterator<Map.Entry<Key, Object>> it = allIBaseFileObjects.entrySet().iterator();
611616
while (it.hasNext()) {
612-
Map.Entry<Integer, Object> entry = it.next();
617+
Map.Entry<Key, Object> entry = it.next();
613618
final Object obj = entry.getValue();
614-
final Integer key = entry.getKey();
619+
final Key key = entry.getKey();
615620
if (!(obj instanceof List<?>)) {
616621
@SuppressWarnings("unchecked")
617622
final WeakReference<BaseFileObj> ref = (WeakReference<BaseFileObj>) obj;
@@ -633,8 +638,8 @@ public final void rename(Set<BaseFileObj> changeId) {
633638
}
634639
}
635640

636-
for (Map.Entry<Integer, Object> entry : toRename.entrySet()) {
637-
Integer key = entry.getKey();
641+
for (Map.Entry<Key, Object> entry : toRename.entrySet()) {
642+
Key key = entry.getKey();
638643
Object previous = allIBaseFileObjects.remove(key);
639644
if (previous instanceof List<?>) {
640645
List<?> list = (List<?>) previous;
@@ -655,7 +660,7 @@ public final BaseFileObj getCachedOnly(final File file) {
655660
}
656661
public final BaseFileObj getCachedOnly(final File file, boolean checkExtension) {
657662
BaseFileObj retval;
658-
final Integer id = NamingFactory.createID(file);
663+
final Key id = new Key(NamingFactory.createID(file));
659664
allIBaseLock.readLock().lock();
660665
try {
661666
final Object value = allIBaseFileObjects.get(id);
@@ -701,15 +706,16 @@ private static BaseFileObj getReference(final List<?> list, final File file) {
701706
private BaseFileObj putInCache(final BaseFileObj newValue, final Integer id) {
702707
allIBaseLock.writeLock().lock();
703708
try {
709+
Key key = new Key(id);
704710
final WeakReference<BaseFileObj> newRef = new WeakReference<BaseFileObj>(newValue);
705-
final Object listOrReference = allIBaseFileObjects.put(id, newRef);
711+
final Object listOrReference = allIBaseFileObjects.put(key, newRef);
706712

707713
if (listOrReference != null) {
708714
if (listOrReference instanceof List<?>) {
709715
@SuppressWarnings("unchecked")
710716
List<Reference<BaseFileObj>> list = (List<Reference<BaseFileObj>>) listOrReference;
711717
list.add(newRef);
712-
allIBaseFileObjects.put(id, listOrReference);
718+
allIBaseFileObjects.put(key, listOrReference);
713719
} else {
714720
assert (listOrReference instanceof WeakReference<?>);
715721
@SuppressWarnings("unchecked")
@@ -720,7 +726,7 @@ private BaseFileObj putInCache(final BaseFileObj newValue, final Integer id) {
720726
final List<Reference<BaseFileObj>> l = new ArrayList<Reference<BaseFileObj>>();
721727
l.add(oldRef);
722728
l.add(newRef);
723-
allIBaseFileObjects.put(id, l);
729+
allIBaseFileObjects.put(key, l);
724730
}
725731
}
726732
}

0 commit comments

Comments
 (0)