summaryrefslogtreecommitdiff
path: root/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java')
-rw-r--r--plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java55
1 files changed, 32 insertions, 23 deletions
diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java
index 71fcdeb482c4..64a3805223d7 100644
--- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java
+++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java
@@ -17,9 +17,10 @@ package org.jetbrains.plugins.gradle.tooling.builder;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
-import org.gradle.api.artifacts.ResolutionStrategy;
+import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.plugins.ide.idea.IdeaPlugin;
import org.gradle.plugins.ide.idea.model.Dependency;
+import org.gradle.plugins.ide.idea.model.IdeaModule;
import org.gradle.plugins.ide.idea.model.ModuleLibrary;
import org.gradle.plugins.ide.idea.model.Path;
import org.gradle.util.GradleVersion;
@@ -31,7 +32,6 @@ import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder;
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService;
import org.jetbrains.plugins.gradle.tooling.internal.BuildScriptClasspathModelImpl;
import org.jetbrains.plugins.gradle.tooling.internal.ClasspathEntryModelImpl;
-import org.jetbrains.plugins.gradle.tooling.internal.ConfigurationDelegate;
import java.io.File;
import java.util.*;
@@ -43,6 +43,10 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class ModelBuildScriptClasspathBuilderImpl implements ModelBuilderService {
+ private static final String COMPILE_SCOPE = "COMPILE";
+ private static final String PLUS_CONFIGURATION = "plus";
+ private static final String MINUS_CONFIGURATION = "minus";
+ private static final String CLASSPATH_CONFIGURATION_NAME = "classpath";
private final Map<String, BuildScriptClasspathModelImpl> cache = new ConcurrentHashMap<String, BuildScriptClasspathModelImpl>();
@Override
@@ -72,44 +76,49 @@ public class ModelBuildScriptClasspathBuilderImpl implements ModelBuilderService
}
}
}
- Configuration configuration = project.getBuildscript().getConfigurations().findByName("classpath");
- if (configuration == null) return null;
-
- final ResolutionStrategy resolutionStrategy = configuration.getResolutionStrategy();
- configuration = new ConfigurationDelegate(configuration.copy()) {
- @Override
- public ResolutionStrategy getResolutionStrategy() {
- return resolutionStrategy;
- }
- };
+ Configuration classpathConfiguration = project.getBuildscript().getConfigurations().findByName(CLASSPATH_CONFIGURATION_NAME);
+ if (classpathConfiguration == null) return null;
+
+ final Configuration configuration;
+ final IdeaModule ideaModule = ideaPlugin.getModel().getModule();
+ final ConfigurationContainer configurations = ideaModule.getProject().getConfigurations();
+
+ if (classpathConfiguration.getState() == Configuration.State.UNRESOLVED) {
+ configuration = classpathConfiguration;
+ configurations.add(configuration);
+ }
+ else {
+ configuration = configurations.maybeCreate(UUID.randomUUID().toString());
+ configuration.getDependencies().addAll(classpathConfiguration.getAllDependencies());
+ configuration.getArtifacts().addAll(classpathConfiguration.getAllArtifacts());
+ }
Collection<Configuration> plusConfigurations = Collections.singletonList(configuration);
final Map<String, Map<String, Collection<Configuration>>> scopes =
- new HashMap<String, Map<String, Collection<Configuration>>>(ideaPlugin.getModel().getModule().getScopes());
+ new HashMap<String, Map<String, Collection<Configuration>>>(ideaModule.getScopes());
Map<String, Map<String, Collection<Configuration>>> buildScriptScope = new HashMap<String, Map<String, Collection<Configuration>>>();
Map<String, Collection<Configuration>> plusConfiguration = new HashMap<String, Collection<Configuration>>();
- plusConfiguration.put("plus", plusConfigurations);
- if (scopes.get("COMPILE") != null) {
- plusConfiguration.put("minus", scopes.get("COMPILE").get("plus"));
+ plusConfiguration.put(PLUS_CONFIGURATION, plusConfigurations);
+ if (scopes.get(COMPILE_SCOPE) != null) {
+ plusConfiguration.put(MINUS_CONFIGURATION, scopes.get(COMPILE_SCOPE).get(PLUS_CONFIGURATION));
}
- buildScriptScope.put("COMPILE", plusConfiguration);
- ideaPlugin.getModel().getModule().setScopes(buildScriptScope);
- ideaPlugin.getModel().getModule().getProject().getConfigurations().add(configuration);
- final Set<Dependency> buildScriptDependencies = ideaPlugin.getModel().getModule().resolveDependencies();
+ buildScriptScope.put(COMPILE_SCOPE, plusConfiguration);
+ ideaModule.setScopes(buildScriptScope);
+ final Set<Dependency> buildScriptDependencies = ideaModule.resolveDependencies();
for (Dependency dependency : buildScriptDependencies) {
if (dependency instanceof ModuleLibrary) {
ModuleLibrary moduleLibrary = (ModuleLibrary)dependency;
- if ("COMPILE".equals(moduleLibrary.getScope())) {
+ if (COMPILE_SCOPE.equals(moduleLibrary.getScope())) {
buildScriptClasspath.add(new ClasspathEntryModelImpl(
convert(moduleLibrary.getClasses()), convert(moduleLibrary.getSources()), convert(moduleLibrary.getJavadoc())));
}
}
}
- ideaPlugin.getModel().getModule().setScopes(scopes);
- ideaPlugin.getModel().getModule().getProject().getConfigurations().remove(configuration);
+ ideaModule.setScopes(scopes);
+ configurations.remove(configuration);
}
cache.put(project.getPath(), buildScriptClasspath);