From 2687ae1fa3e7eacdbe84813667f915207fdb699e Mon Sep 17 00:00:00 2001 From: Evgeny Pasynkov Date: Thu, 14 Jun 2012 11:27:28 +0200 Subject: [PATCH] - implement JobLauncher in Core - bundle resources in intellij-core-upsource --- build/scripts/layouts.gant | 2 + .../com/intellij/concurrency/JobLauncher.java | 8 ++- .../core/CoreApplicationEnvironment.java | 55 ++++++++++++++++++- .../intellij/concurrency/JobLauncherImpl.java | 5 -- 4 files changed, 62 insertions(+), 8 deletions(-) diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index 1790ca85e78d..cba7816b15ef 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -532,6 +532,8 @@ def layout_core_upsource(String home, String target) { module("projectModel-api") module("projectModel-impl") module("java-indexing-impl") + module("platform-resources") + module("platform-resources-en") } jar("annotations.jar") { diff --git a/platform/core-api/src/com/intellij/concurrency/JobLauncher.java b/platform/core-api/src/com/intellij/concurrency/JobLauncher.java index 844fd8cbe69d..b58921bd66f9 100644 --- a/platform/core-api/src/com/intellij/concurrency/JobLauncher.java +++ b/platform/core-api/src/com/intellij/concurrency/JobLauncher.java @@ -21,6 +21,7 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.util.Consumer; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.concurrent.Future; @@ -49,6 +50,9 @@ public abstract class JobLauncher { boolean failFastOnAcquireReadAction, @NotNull final Processor thingProcessor) throws ProcessCanceledException; - public abstract Job submitToJobThread(int priority, @NotNull final Runnable action); - public abstract Job submitToJobThread(int priority, @NotNull final Runnable action, Consumer onDoneCallback); + public abstract Job submitToJobThread(int priority, @NotNull final Runnable action, @Nullable Consumer onDoneCallback); + + public Job submitToJobThread(int priority, @NotNull final Runnable action) { + return submitToJobThread(priority, action, null); + } } diff --git a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java index 9581a190a341..b1d7f8dda27c 100644 --- a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java +++ b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java @@ -15,6 +15,8 @@ */ package com.intellij.core; +import com.intellij.concurrency.Job; +import com.intellij.concurrency.JobLauncher; import com.intellij.lang.*; import com.intellij.lang.impl.PsiBuilderFactoryImpl; import com.intellij.mock.MockApplication; @@ -50,12 +52,16 @@ import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry import com.intellij.psi.stubs.BinaryFileStubBuilders; import com.intellij.psi.stubs.CoreStubTreeLoader; import com.intellij.psi.stubs.StubTreeLoader; +import com.intellij.util.Consumer; import com.intellij.util.Function; +import com.intellij.util.Processor; import com.intellij.util.messages.impl.MessageBusImpl; import org.jetbrains.annotations.NotNull; import org.picocontainer.MutablePicoContainer; import java.lang.reflect.Modifier; +import java.util.List; +import java.util.concurrent.*; /** * @author yole @@ -108,7 +114,6 @@ public class CoreApplicationEnvironment { } ) ); - //registerApplicationComponent(VirtualFilePointerManager.class, new CoreVirtualFilePointerManager()); myApplication.registerService(VirtualFilePointerManager.class, new CoreVirtualFilePointerManager()); myApplication.registerService(DefaultASTFactory.class, new CoreASTFactory()); @@ -139,6 +144,54 @@ public class CoreApplicationEnvironment { }; } }; + + myApplication.registerService(JobLauncher.class, new JobLauncher() { + @Override + public boolean invokeConcurrentlyUnderProgress(@NotNull List things, + ProgressIndicator progress, + boolean failFastOnAcquireReadAction, + @NotNull Processor thingProcessor) throws ProcessCanceledException { + for (T thing : things) { + if (!thingProcessor.process(thing)) + return false; + } + return true; + } + + @Override + public Job submitToJobThread(int priority, @NotNull Runnable action, Consumer onDoneCallback) { + action.run(); + if (onDoneCallback != null) + onDoneCallback.consume(new Future() { + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return false; + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public boolean isDone() { + return true; + } + + @Override + public Object get() throws InterruptedException, ExecutionException { + return null; + } + + @Override + public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + return null; + } + }); + return null; + } + }); + } protected VirtualFileSystem createJarFileSystem() { diff --git a/platform/platform-impl/src/com/intellij/concurrency/JobLauncherImpl.java b/platform/platform-impl/src/com/intellij/concurrency/JobLauncherImpl.java index b859dce5c97f..e5910b81012e 100644 --- a/platform/platform-impl/src/com/intellij/concurrency/JobLauncherImpl.java +++ b/platform/platform-impl/src/com/intellij/concurrency/JobLauncherImpl.java @@ -120,11 +120,6 @@ public class JobLauncherImpl extends JobLauncher { }); } - @Override - public Job submitToJobThread(int priority, @NotNull final Runnable action) { - return submitToJobThread(priority, action, null); - } - @Override public Job submitToJobThread(int priority, @NotNull final Runnable action, Consumer onDoneCallback) { final JobImpl job = new JobImpl(priority, false);