mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
jps: use correct classloader to load extensions and services
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package org.jetbrains.jps.incremental;
|
||||
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.jps.idea.OwnServiceLoader;
|
||||
import org.jetbrains.jps.service.JpsServiceManager;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -25,9 +25,7 @@ public class BuilderRegistry {
|
||||
myModuleLevelBuilders.put(category, new ArrayList<ModuleLevelBuilder>());
|
||||
}
|
||||
|
||||
final OwnServiceLoader<BuilderService> loader = OwnServiceLoader.load(BuilderService.class);
|
||||
|
||||
for (BuilderService service : loader) {
|
||||
for (BuilderService service : JpsServiceManager.getInstance().getExtensions(BuilderService.class)) {
|
||||
myProjectLevelBuilders.addAll(service.createProjectLevelBuilders());
|
||||
final List<? extends ModuleLevelBuilder> moduleLevelBuilders = service.createModuleLevelBuilders();
|
||||
for (ModuleLevelBuilder builder : moduleLevelBuilders) {
|
||||
|
||||
+2
-2
@@ -5,13 +5,13 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ClassMap;
|
||||
import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.idea.OwnServiceLoader;
|
||||
import org.jetbrains.jps.incremental.artifacts.instructions.ArtifactCompilerInstructionCreator;
|
||||
import org.jetbrains.jps.incremental.artifacts.instructions.ArtifactInstructionsBuilderContext;
|
||||
import org.jetbrains.jps.model.artifact.JpsArtifact;
|
||||
import org.jetbrains.jps.model.artifact.elements.*;
|
||||
import org.jetbrains.jps.model.java.JpsProductionModuleOutputPackagingElement;
|
||||
import org.jetbrains.jps.model.java.JpsTestModuleOutputPackagingElement;
|
||||
import org.jetbrains.jps.service.JpsServiceManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -42,7 +42,7 @@ public class LayoutElementBuildersRegistry {
|
||||
for (LayoutElementBuilderService<?> builder : standardBuilders) {
|
||||
myBuilders.put(builder.getElementClass(), builder);
|
||||
}
|
||||
for (LayoutElementBuilderService builder : OwnServiceLoader.load(LayoutElementBuilderService.class)) {
|
||||
for (LayoutElementBuilderService builder : JpsServiceManager.getInstance().getExtensions(LayoutElementBuilderService.class)) {
|
||||
myBuilders.put(builder.getElementClass(), builder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public abstract class JpsServiceManager {
|
||||
private static final JpsServiceManager INSTANCE;
|
||||
|
||||
static {
|
||||
INSTANCE = ServiceLoader.load(JpsServiceManager.class).iterator().next();
|
||||
INSTANCE = ServiceLoader.load(JpsServiceManager.class, JpsServiceManager.class.getClassLoader()).iterator().next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class JpsServiceManagerImpl extends JpsServiceManager {
|
||||
//noinspection unchecked
|
||||
T service = (T)myServices.get(serviceClass);
|
||||
if (service == null) {
|
||||
final Iterator<T> iterator = ServiceLoader.load(serviceClass).iterator();
|
||||
final Iterator<T> iterator = ServiceLoader.load(serviceClass, serviceClass.getClassLoader()).iterator();
|
||||
if (!iterator.hasNext()) {
|
||||
throw new ServiceConfigurationError("Implementation for " + serviceClass + " not found");
|
||||
}
|
||||
@@ -37,7 +37,7 @@ public class JpsServiceManagerImpl extends JpsServiceManager {
|
||||
public <T> Iterable<T> getExtensions(Class<T> extensionClass) {
|
||||
List<?> cached = myExtensions.get(extensionClass);
|
||||
if (cached == null) {
|
||||
final ServiceLoader<T> loader = ServiceLoader.load(extensionClass);
|
||||
final ServiceLoader<T> loader = ServiceLoader.load(extensionClass, extensionClass.getClassLoader());
|
||||
List<T> extensions = new ArrayList<T>();
|
||||
for (T t : loader) {
|
||||
extensions.add(t);
|
||||
|
||||
@@ -12,6 +12,20 @@ public class IdeaProjectLoader {
|
||||
private ProjectLoadingErrorReporter errorReporter
|
||||
private final XmlParser xmlParser = new XmlParser(false, false)
|
||||
|
||||
public static String guessHome(Script script) {
|
||||
File home = new File(script["gant.file"].substring("file:".length()))
|
||||
|
||||
while (home != null) {
|
||||
if (home.isDirectory()) {
|
||||
if (new File(home, ".idea").exists()) return home.getCanonicalPath()
|
||||
}
|
||||
|
||||
home = home.getParentFile()
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
public static ProjectMacroExpander loadFromPath(Project project, String path, Map<String, String> pathVariables) {
|
||||
return loadFromPath(project, path, pathVariables, "")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user