refactoring dependencies

This commit is contained in:
Eugene Zhuravlev
2012-05-20 15:43:58 +02:00
parent 8b2ef0ea9f
commit 987ea370f0
8 changed files with 13 additions and 33 deletions
+1 -3
View File
@@ -28,11 +28,9 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="jna" level="project" />
<orderEntry type="library" name="Guava" level="project" />
<orderEntry type="module" module-name="java-runtime" scope="RUNTIME" />
<orderEntry type="library" name="Log4J" level="project" />
<orderEntry type="library" name="JUnit4" level="project" />
<orderEntry type="library" scope="TEST" name="JUnit4" level="project" />
<orderEntry type="module-library" scope="TEST">
<library>
<CLASSES>
@@ -4,8 +4,6 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.jps.idea.OwnServiceLoader;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Eugene Zhuravlev
@@ -17,7 +15,6 @@ public class BuilderRegistry {
}
private final Map<BuilderCategory, List<ModuleLevelBuilder>> myModuleLevelBuilders = new HashMap<BuilderCategory, List<ModuleLevelBuilder>>();
private final List<ProjectLevelBuilder> myProjectLevelBuilders = new ArrayList<ProjectLevelBuilder>();
private ExecutorService myTasksExecutor;
public static BuilderRegistry getInstance() {
return Holder.ourInstance;
@@ -27,19 +24,12 @@ public class BuilderRegistry {
for (BuilderCategory category : BuilderCategory.values()) {
myModuleLevelBuilders.put(category, new ArrayList<ModuleLevelBuilder>());
}
final Runtime runtime = Runtime.getRuntime();
myTasksExecutor = Executors.newFixedThreadPool(runtime.availableProcessors());
runtime.addShutdownHook(new Thread() {
public void run() {
myTasksExecutor.shutdown();
}
});
final OwnServiceLoader<BuilderService> loader = OwnServiceLoader.load(BuilderService.class);
for (BuilderService service : loader) {
myProjectLevelBuilders.addAll(service.createProjectLevelBuilders());
final List<? extends ModuleLevelBuilder> moduleLevelBuilders = service.createModuleLevelBuilders(myTasksExecutor);
final List<? extends ModuleLevelBuilder> moduleLevelBuilders = service.createModuleLevelBuilders();
for (ModuleLevelBuilder builder : moduleLevelBuilders) {
myModuleLevelBuilders.get(builder.getCategory()).add(builder);
}
@@ -73,9 +63,4 @@ public class BuilderRegistry {
public List<ProjectLevelBuilder> getProjectLevelBuilders() {
return myProjectLevelBuilders;
}
public void shutdown() {
myTasksExecutor.shutdown();
}
}
@@ -4,14 +4,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutorService;
/**
* @author nik
*/
public abstract class BuilderService {
@NotNull
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders(ExecutorService executorService) {
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() {
return Collections.emptyList();
}
@@ -1,12 +1,12 @@
package org.jetbrains.jps.incremental;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.api.SharedThreadPool;
import org.jetbrains.jps.incremental.java.JavaBuilder;
import org.jetbrains.jps.incremental.resources.ResourcesBuilder;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
/**
* @author nik
@@ -14,7 +14,7 @@ import java.util.concurrent.ExecutorService;
public class JavaBuilderService extends BuilderService {
@NotNull
@Override
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders(ExecutorService executorService) {
return Arrays.asList(new JavaBuilder(executorService), new ResourcesBuilder());
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() {
return Arrays.asList(new JavaBuilder(SharedThreadPool.INSTANCE), new ResourcesBuilder());
}
}
@@ -16,7 +16,7 @@ import java.util.*;
*/
public class Utils {
public static final Key<Map<String, Collection<String>>> REMOVED_SOURCES_KEY = Key.create("_removed_sources_");
private static volatile File ourSystemRoot = new File(System.getProperty("user.home", ".jps-server"));
private static volatile File ourSystemRoot = new File(System.getProperty("user.home", ".idea-build"));
private Utils() {
}
@@ -45,7 +45,7 @@ import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.URL;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
/**
@@ -73,12 +73,12 @@ public class JavaBuilder extends ModuleLevelBuilder {
};
private static final Key<Callbacks.Backend> DELTA_MAPPINGS_CALLBACK_KEY = Key.create("_dependency_data_");
private final ExecutorService myTaskRunner;
private final Executor myTaskRunner;
private int myTasksInProgress = 0;
private final Object myCounterLock = new Object();
private final List<ClassPostProcessor> myClassProcessors = new ArrayList<ClassPostProcessor>();
public JavaBuilder(ExecutorService tasksExecutor) {
public JavaBuilder(Executor tasksExecutor) {
super(BuilderCategory.TRANSLATOR);
myTaskRunner = tasksExecutor;
//add here class processors in the sequence they should be executed
@@ -434,7 +434,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
synchronized (myCounterLock) {
myTasksInProgress++;
}
myTaskRunner.submit(new Runnable() {
myTaskRunner.execute(new Runnable() {
public void run() {
try {
taskRunnable.run();
@@ -7,7 +7,6 @@ import org.jetbrains.jps.incremental.ProjectLevelBuilder;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
/**
* @author Eugene.Kudelevsky
@@ -15,7 +14,7 @@ import java.util.concurrent.ExecutorService;
public class AndroidBuilderService extends BuilderService {
@NotNull
@Override
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders(ExecutorService executorService) {
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() {
return Arrays.asList(new AndroidSourceGeneratingBuilder(),
new AndroidLibraryPackagingBuilder());
}
@@ -21,7 +21,6 @@ import org.jetbrains.jps.incremental.ModuleLevelBuilder;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
/**
* @author peter
@@ -29,7 +28,7 @@ import java.util.concurrent.ExecutorService;
public class GroovyBuilderService extends BuilderService {
@NotNull
@Override
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders(ExecutorService executorService) {
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() {
return Arrays.asList(new GroovyBuilder(true),
new GroovyBuilder(false));
}