From 3f69e0236ba7cd97b28d45aa0ccbd259da0efc3e Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 23 Mar 2015 14:13:35 +0300 Subject: [PATCH] use more conventional API --- .../SmartPointerManagerImpl.java | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index 8e46b571bdc3..fad454ab3a79 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -46,13 +46,6 @@ public class SmartPointerManagerImpl extends SmartPointerManager { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl"); private static final Object lock = new Object(); private static final ReferenceQueue ourQueue = new ReferenceQueue(); - @SuppressWarnings("unused") private static final LowMemoryWatcher ourWatcher = LowMemoryWatcher.register(new Runnable() { - @Override - public void run() { - processQueue(); - } - }); - private final Project myProject; private final Key> POINTERS_KEY; private final Key POINTERS_ARE_FASTENED_KEY; @@ -61,18 +54,24 @@ public class SmartPointerManagerImpl extends SmartPointerManager { myProject = project; POINTERS_KEY = Key.create("SMART_POINTERS for "+project); POINTERS_ARE_FASTENED_KEY = Key.create("SMART_POINTERS_ARE_FASTENED for "+project); + LowMemoryWatcher.register(new Runnable() { + @Override + public void run() { + processQueue(); + } + }, project); } - private static void processQueue() { + private void processQueue() { while (true) { PointerReference reference = (PointerReference)ourQueue.poll(); if (reference == null) break; synchronized (lock) { - Set pointers = reference.file.getUserData(reference.key); + Set pointers = reference.file.getUserData(POINTERS_KEY); if (pointers != null) { pointers.remove(reference); if (pointers.isEmpty()) { - reference.file.putUserData(reference.key, null); + reference.file.putUserData(POINTERS_KEY, null); } } } @@ -217,7 +216,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { pointers = ContainerUtil.newTroveSet(); // we synchronise access anyway containingFile.putUserData(POINTERS_KEY, pointers); } - pointers.add(new PointerReference(pointer, containingFile, ourQueue, POINTERS_KEY)); + pointers.add(new PointerReference(pointer, containingFile)); if (areBeltsFastened(containingFile)) { pointer.fastenBelt(0, null); @@ -295,7 +294,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { file.putUserData(POINTERS_ARE_FASTENED_KEY, null); return fastened; } - private boolean areBeltsFastened(VirtualFile file) { + private boolean areBeltsFastened(@NotNull VirtualFile file) { return file.getUserData(POINTERS_ARE_FASTENED_KEY) == Boolean.TRUE; } @@ -305,17 +304,12 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } private static class PointerReference extends WeakReference { + @NotNull private final VirtualFile file; - private final Key> key; - public PointerReference(SmartPointerEx pointer, - VirtualFile containingFile, - ReferenceQueue queue, - Key> key) { - super(pointer, queue); + private PointerReference(@NotNull SmartPointerEx pointer, @NotNull VirtualFile containingFile) { + super(pointer, ourQueue); file = containingFile; - this.key = key; } } - }