diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/DefaultExternalSourceDirectorySet.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/DefaultExternalSourceDirectorySet.java index 8121c0ccaa8a..d01a1e44e199 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/DefaultExternalSourceDirectorySet.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/DefaultExternalSourceDirectorySet.java @@ -27,7 +27,7 @@ import java.util.Set; * @author Vladislav.Soroka * @since 7/14/2014 */ -public class DefaultExternalSourceDirectorySet implements ExternalSourceDirectorySet { +public class DefaultExternalSourceDirectorySet implements ModifiableExternalSourceDirectorySet { private static final long serialVersionUID = 1L; @NotNull diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/ModifiableExternalSourceDirectorySet.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/ModifiableExternalSourceDirectorySet.java new file mode 100644 index 000000000000..c2d64755830a --- /dev/null +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/ModifiableExternalSourceDirectorySet.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.externalSystem.model; + +import java.io.File; + +/** + * @author Vladislav.Soroka + * @since 10/3/2014 + */ +public interface ModifiableExternalSourceDirectorySet extends ExternalSourceDirectorySet { + void setOutputDir(File outputPath); +} diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java index fd06a73d22f9..f7ec9c90a2e4 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java @@ -258,12 +258,7 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver buildDir = buildDir == null ? externalProject.getBuildDir() : buildDir; if (!inheritOutputDirs) { - boolean isInitialProjectDataModified = fixCompileOutputPaths(compileOutputPaths, externalProject); - if (isInitialProjectDataModified) { - final DataNode projectDataNode = ExternalSystemApiUtil.findParent(ideModule, ProjectKeys.PROJECT); - assert projectDataNode != null; - projectDataNode.createOrReplaceChild(ExternalProjectDataService.KEY, externalProject); - } + fixCompileOutputPaths(compileOutputPaths, externalProject); } } else { @@ -714,9 +709,8 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver return taskName.toLowerCase(Locale.ENGLISH).contains("idea"); } - private static boolean fixCompileOutputPaths(@NotNull Map compileOutputPaths, - @NotNull ExternalProject externalProject) { - boolean isInitialProjectDataModified = false; + private static void fixCompileOutputPaths(@NotNull Map compileOutputPaths, + @NotNull ExternalProject externalProject) { final File sourceCompileOutputPath = compileOutputPaths.get(ExternalSystemSourceType.SOURCE); if (sourceCompileOutputPath == null) { addCompileOutputPath(compileOutputPaths, externalProject, MAIN_SOURCE_SET, ExternalSystemSourceType.SOURCE); @@ -726,14 +720,12 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver final ExternalSourceSet mainSourceSet = externalProject.getSourceSets().get(MAIN_SOURCE_SET); if (mainSourceSet != null) { final ExternalSourceDirectorySet sourceDirectories = mainSourceSet.getSources().get(ExternalSystemSourceType.SOURCE); - if (sourceDirectories instanceof DefaultExternalSourceDirectorySet) { - ((DefaultExternalSourceDirectorySet)sourceDirectories).setOutputDir(sourceCompileOutputPath); - isInitialProjectDataModified = true; + if (sourceDirectories instanceof ModifiableExternalSourceDirectorySet) { + ((ModifiableExternalSourceDirectorySet)sourceDirectories).setOutputDir(sourceCompileOutputPath); } final ExternalSourceDirectorySet resourceDirectories = mainSourceSet.getSources().get(ExternalSystemSourceType.RESOURCE); - if (resourceDirectories instanceof DefaultExternalSourceDirectorySet) { - ((DefaultExternalSourceDirectorySet)resourceDirectories).setOutputDir(sourceCompileOutputPath); - isInitialProjectDataModified = true; + if (resourceDirectories instanceof ModifiableExternalSourceDirectorySet) { + ((ModifiableExternalSourceDirectorySet)resourceDirectories).setOutputDir(sourceCompileOutputPath); } } } @@ -749,18 +741,14 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver final ExternalSourceDirectorySet testDirectories = testSourceSet.getSources().get(ExternalSystemSourceType.TEST); if (testDirectories instanceof DefaultExternalSourceDirectorySet) { ((DefaultExternalSourceDirectorySet)testDirectories).setOutputDir(testCompileOutputPath); - isInitialProjectDataModified = true; } final ExternalSourceDirectorySet testResourceDirectories = testSourceSet.getSources().get(ExternalSystemSourceType.TEST_RESOURCE); if (testResourceDirectories instanceof DefaultExternalSourceDirectorySet) { ((DefaultExternalSourceDirectorySet)testResourceDirectories).setOutputDir(testCompileOutputPath); - isInitialProjectDataModified = true; } } } - - return isInitialProjectDataModified; } private static void addCompileOutputPath(@NotNull Map compileOutputPaths,