- implement JobLauncher in Core

- bundle resources in intellij-core-upsource
This commit is contained in:
Evgeny Pasynkov
2012-06-14 11:27:28 +02:00
parent e002004e4a
commit 2687ae1fa3
4 changed files with 62 additions and 8 deletions
+2
View File
@@ -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") {
@@ -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<T> thingProcessor) throws ProcessCanceledException;
public abstract Job<Void> submitToJobThread(int priority, @NotNull final Runnable action);
public abstract Job<Void> submitToJobThread(int priority, @NotNull final Runnable action, Consumer<Future> onDoneCallback);
public abstract Job<Void> submitToJobThread(int priority, @NotNull final Runnable action, @Nullable Consumer<Future> onDoneCallback);
public Job<Void> submitToJobThread(int priority, @NotNull final Runnable action) {
return submitToJobThread(priority, action, null);
}
}
@@ -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 <T> boolean invokeConcurrentlyUnderProgress(@NotNull List<T> things,
ProgressIndicator progress,
boolean failFastOnAcquireReadAction,
@NotNull Processor<T> thingProcessor) throws ProcessCanceledException {
for (T thing : things) {
if (!thingProcessor.process(thing))
return false;
}
return true;
}
@Override
public Job<Void> submitToJobThread(int priority, @NotNull Runnable action, Consumer<Future> 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() {
@@ -120,11 +120,6 @@ public class JobLauncherImpl extends JobLauncher {
});
}
@Override
public Job<Void> submitToJobThread(int priority, @NotNull final Runnable action) {
return submitToJobThread(priority, action, null);
}
@Override
public Job<Void> submitToJobThread(int priority, @NotNull final Runnable action, Consumer<Future> onDoneCallback) {
final JobImpl<Void> job = new JobImpl<Void>(priority, false);