From cce27a11ee86ca8dfd45ef35ebd5699e85a451e0 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 2 Oct 2012 17:52:33 +0400 Subject: [PATCH] cleanup --- .../actions/ShowUsagesTableCellRenderer.java | 3 +- .../src/com/intellij/util/Alarm.java | 120 +++++++++--------- .../util/concurrency/QueueProcessor.java | 19 ++- .../com/intellij/util/ConcurrencyUtil.java | 2 +- 4 files changed, 78 insertions(+), 66 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java index 591b19dbf544..7bf0d165fea5 100644 --- a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java @@ -33,6 +33,7 @@ import com.intellij.usages.impl.UsageViewImpl; import com.intellij.usages.rules.UsageInFile; import com.intellij.util.ui.EmptyIcon; import com.intellij.util.ui.UIUtil; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.table.TableCellRenderer; @@ -44,7 +45,7 @@ import java.awt.*; class ShowUsagesTableCellRenderer implements TableCellRenderer { private final UsageViewImpl myUsageView; - ShowUsagesTableCellRenderer(UsageViewImpl usageView) { + ShowUsagesTableCellRenderer(@NotNull UsageViewImpl usageView) { myUsageView = usageView; } diff --git a/platform/platform-api/src/com/intellij/util/Alarm.java b/platform/platform-api/src/com/intellij/util/Alarm.java index 7ae9c25ee9fd..41289e0f4247 100644 --- a/platform/platform-api/src/com/intellij/util/Alarm.java +++ b/platform/platform-api/src/com/intellij/util/Alarm.java @@ -56,6 +56,7 @@ public class Alarm implements Disposable { private JComponent myActivationComponent; + @Override public void dispose() { myDisposed = true; cancelAllRequests(); @@ -85,6 +86,7 @@ public class Alarm implements Disposable { this(threadToUse, null); LOG.assertTrue(threadToUse != ThreadToUse.OWN_THREAD, "You must provide parent Disposable for ThreadToUse.OWN_THREAD Alarm"); } + public Alarm(@NotNull ThreadToUse threadToUse, Disposable parentDisposable) { myThreadToUse = threadToUse; myExecutorService = threadToUse == ThreadToUse.OWN_THREAD ? new MyExecutor() : ourSharedExecutorService; @@ -94,7 +96,7 @@ public class Alarm implements Disposable { } } - public void addRequest(final Runnable request, final int delay, boolean runWithActiveFrameOnly) { + public void addRequest(@NotNull final Runnable request, final int delay, boolean runWithActiveFrameOnly) { if (runWithActiveFrameOnly && !ApplicationManager.getApplication().isActive()) { final MessageBus bus = ApplicationManager.getApplication().getMessageBus(); final MessageBusConnection connection = bus.connect(this); @@ -114,35 +116,35 @@ public class Alarm implements Disposable { } } - public void addRequest(final Runnable request, long delayMillis) { + public void addRequest(@NotNull Runnable request, long delayMillis) { _addRequest(request, delayMillis, myThreadToUse == ThreadToUse.SWING_THREAD ? ModalityState.current() : null); } - public void addRequest(final Runnable request, int delayMillis) { + public void addRequest(@NotNull Runnable request, int delayMillis) { _addRequest(request, delayMillis, myThreadToUse == ThreadToUse.SWING_THREAD ? ModalityState.current() : null); } - public void addComponentRequest(Runnable request, int delay) { + public void addComponentRequest(@NotNull Runnable request, int delay) { assert myActivationComponent != null; _addRequest(request, delay, ModalityState.stateForComponent(myActivationComponent)); } - public void addComponentRequest(Runnable request, long delayMillis) { + public void addComponentRequest(@NotNull Runnable request, long delayMillis) { assert myActivationComponent != null; _addRequest(request, delayMillis, ModalityState.stateForComponent(myActivationComponent)); } - public void addRequest(final Runnable request, int delayMillis, @Nullable final ModalityState modalityState) { + public void addRequest(@NotNull Runnable request, int delayMillis, @Nullable final ModalityState modalityState) { LOG.assertTrue(myThreadToUse == ThreadToUse.SWING_THREAD); _addRequest(request, delayMillis, modalityState); } - public void addRequest(final Runnable request, long delayMillis, @Nullable final ModalityState modalityState) { + public void addRequest(@NotNull Runnable request, long delayMillis, @Nullable final ModalityState modalityState) { LOG.assertTrue(myThreadToUse == ThreadToUse.SWING_THREAD); _addRequest(request, delayMillis, modalityState); } - private void _addRequest(final Runnable request, long delayMillis, ModalityState modalityState) { + private void _addRequest(@NotNull Runnable request, long delayMillis, ModalityState modalityState) { synchronized (LOCK) { LOG.assertTrue(!myDisposed, "Already disposed"); final Request requestToSchedule = new Request(request, modalityState, delayMillis); @@ -158,7 +160,7 @@ public class Alarm implements Disposable { } } - private void _add(final Request requestToSchedule) { + private void _add(@NotNull Request requestToSchedule) { final ScheduledFuture future = JobScheduler.getScheduler().schedule(requestToSchedule, requestToSchedule.myDelay, TimeUnit.MILLISECONDS); requestToSchedule.setFuture(future); myRequests.add(requestToSchedule); @@ -172,7 +174,7 @@ public class Alarm implements Disposable { myPendingRequests.clear(); } - public boolean cancelRequest(Runnable request) { + public boolean cancelRequest(@NotNull Runnable request) { synchronized (LOCK) { cancelRequest(request, myRequests); cancelRequest(request, myPendingRequests); @@ -180,7 +182,7 @@ public class Alarm implements Disposable { } } - private void cancelRequest(final Runnable request, final List list) { + private void cancelRequest(@NotNull Runnable request, @NotNull List list) { for (int i = list.size()-1; i>=0; i--) { Request r = list.get(i); if (r.getTask() == request) { @@ -198,7 +200,7 @@ public class Alarm implements Disposable { } } - private int cancelAllRequests(final List list) { + private int cancelAllRequests(@NotNull List list) { int count = 0; for (Request request : list) { count++; @@ -229,60 +231,63 @@ public class Alarm implements Disposable { private Future myFuture; private final long myDelay; - private Request(final Runnable task, final ModalityState modalityState, long delayMillis) { + private Request(@NotNull Runnable task, @Nullable ModalityState modalityState, long delayMillis) { myTask = task; myModalityState = modalityState; myDelay = delayMillis; } + @Override public void run() { try { - if (!myDisposed) { - synchronized (LOCK) { - if (myTask == null) return; - } + if (myDisposed) { + return; + } + synchronized (LOCK) { + if (myTask == null) return; + } - final Runnable scheduledTask = new Runnable() { - public void run() { - final Runnable task; - synchronized (LOCK) { - task = myTask; - if (task == null) return; - myTask = null; + final Runnable scheduledTask = new Runnable() { + @Override + public void run() { + final Runnable task; + synchronized (LOCK) { + task = myTask; + if (task == null) return; + myTask = null; - myRequests.remove(Request.this); - } - - if (myThreadToUse == ThreadToUse.SWING_THREAD && !isEdt()) { - try { - SwingUtilities.invokeAndWait(task); - } - catch (Exception e) { - LOG.error(e); - } - } - else { - try { - task.run(); - } - catch (Exception e) { - LOG.error(e); - } - } + myRequests.remove(Request.this); } - }; - if (myModalityState != null) { - final Application app = ApplicationManager.getApplication(); - if (app != null) { - app.invokeLater(scheduledTask, myModalityState); + if (myThreadToUse == ThreadToUse.SWING_THREAD && !isEdt()) { + try { + SwingUtilities.invokeAndWait(task); + } + catch (Exception e) { + LOG.error(e); + } } else { - SwingUtilities.invokeLater(scheduledTask); + try { + task.run(); + } + catch (Exception e) { + LOG.error(e); + } } } + }; + + if (myModalityState == null) { + myFuture = myExecutorService.submit(scheduledTask); + } + else { + final Application app = ApplicationManager.getApplication(); + if (app != null) { + app.invokeLater(scheduledTask, myModalityState); + } else { - myFuture = myExecutorService.submit(scheduledTask); + SwingUtilities.invokeLater(scheduledTask); } } } @@ -295,7 +300,7 @@ public class Alarm implements Disposable { return myTask; } - public void setFuture(final ScheduledFuture future) { + public void setFuture(@NotNull ScheduledFuture future) { myFuture = future; } @@ -316,10 +321,12 @@ public class Alarm implements Disposable { public Alarm setActivationComponent(@NotNull final JComponent component) { myActivationComponent = component; new UiNotifyConnector(component, new Activatable() { + @Override public void showNotify() { flushPending(); } + @Override public void hideNotify() { } }); @@ -334,12 +341,7 @@ public class Alarm implements Disposable { private class MyExecutor extends AbstractExecutorService { private final AtomicBoolean isShuttingDown = new AtomicBoolean(); - private final QueueProcessor myProcessor = new QueueProcessor(new Consumer() { - @Override - public void consume(Runnable runnable) { - runnable.run(); - } - }); + private final QueueProcessor myProcessor = QueueProcessor.createRunnableQueueProcessor(); @Override public void shutdown() { @@ -363,12 +365,12 @@ public class Alarm implements Disposable { } @Override - public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + public boolean awaitTermination(long timeout, @NotNull TimeUnit unit) throws InterruptedException { throw new UnsupportedOperationException(); } @Override - public void execute(Runnable command) { + public void execute(@NotNull Runnable command) { myProcessor.add(command); } } diff --git a/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java b/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java index 16d99c82b211..0688214c0ae1 100644 --- a/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java +++ b/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java @@ -38,13 +38,12 @@ import java.util.Map; * @param type of queue elements. */ public class QueueProcessor { + private static final Logger LOG = Logger.getInstance("#com.intellij.util.concurrency.QueueProcessor"); public static enum ThreadToUse { AWT, POOLED } - private static final Logger LOG = Logger.getInstance("#com.intellij.util.concurrency.QueueProcessor"); - private final PairConsumer myProcessor; private final LinkedList myQueue = new LinkedList(); private final Runnable myContinuationContext = new Runnable() { @@ -87,6 +86,16 @@ public class QueueProcessor { this(wrappingProcessor(processor), autostart, ThreadToUse.POOLED, deathCondition); } + @NotNull + public static QueueProcessor createRunnableQueueProcessor() { + return new QueueProcessor(new Consumer() { + @Override + public void consume(Runnable runnable) { + runnable.run(); + } + }); + } + @NotNull private static PairConsumer wrappingProcessor(@NotNull final Consumer processor) { return new PairConsumer() { @@ -146,15 +155,15 @@ public class QueueProcessor { doAdd(t, false); } - public void add(T element) { + public void add(@NotNull T element) { doAdd(element, false); } - public void addFirst(T element) { + public void addFirst(@NotNull T element) { doAdd(element, true); } - private void doAdd(T element, boolean atHead) { + private void doAdd(@NotNull T element, boolean atHead) { synchronized (myQueue) { if (atHead) { myQueue.addFirst(element); diff --git a/platform/util/src/com/intellij/util/ConcurrencyUtil.java b/platform/util/src/com/intellij/util/ConcurrencyUtil.java index 74c78ec42308..aa06a44156e6 100644 --- a/platform/util/src/com/intellij/util/ConcurrencyUtil.java +++ b/platform/util/src/com/intellij/util/ConcurrencyUtil.java @@ -93,7 +93,7 @@ public class ConcurrencyUtil { } @NotNull - public static ThreadPoolExecutor newSingleThreadExecutor(@NotNull final String threadFactoryName, final int threadPriority) { + public static ThreadPoolExecutor newSingleThreadExecutor(@NonNls @NotNull final String threadFactoryName, final int threadPriority) { return new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), new ThreadFactory() {