diff --git a/platform/external-system-api/api-dump.txt b/platform/external-system-api/api-dump.txt index 3e356509f43a..9f916dfa8d98 100644 --- a/platform/external-system-api/api-dump.txt +++ b/platform/external-system-api/api-dump.txt @@ -335,6 +335,7 @@ com.intellij.openapi.externalSystem.importing.ImportSpec - a:getExternalSystemId():com.intellij.openapi.externalSystem.model.ProjectSystemId - a:getProgressExecutionMode():com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode - a:getProject():com.intellij.openapi.project.Project +- a:getUserData():com.intellij.openapi.util.UserDataHolderBase - a:getVmOptions():java.lang.String - a:isActivateBuildToolWindowOnFailure():Z - a:isActivateBuildToolWindowOnStart():Z @@ -356,6 +357,7 @@ c:com.intellij.openapi.externalSystem.importing.ImportSpecBuilder - use(com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode):com.intellij.openapi.externalSystem.importing.ImportSpecBuilder - usePreviewMode():com.intellij.openapi.externalSystem.importing.ImportSpecBuilder - withArguments(java.lang.String):com.intellij.openapi.externalSystem.importing.ImportSpecBuilder +- withUserData(com.intellij.openapi.util.UserDataHolderBase):com.intellij.openapi.externalSystem.importing.ImportSpecBuilder - withVmOptions(java.lang.String):com.intellij.openapi.externalSystem.importing.ImportSpecBuilder *:com.intellij.openapi.externalSystem.importing.ProjectResolverPolicy - java.io.Serializable diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpec.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpec.java index 47f5165e63c9..2e36e0ccd18c 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpec.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpec.java @@ -19,6 +19,7 @@ import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode; import com.intellij.openapi.externalSystem.service.project.ExternalProjectRefreshCallback; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.util.ThreeState; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -57,4 +58,7 @@ public interface ImportSpec { @Nullable String getArguments(); + + @Nullable + UserDataHolderBase getUserData(); } diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecBuilder.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecBuilder.java index 1dfc6ee1c720..b59259ae9b3a 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecBuilder.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecBuilder.java @@ -8,6 +8,7 @@ import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMo import com.intellij.openapi.externalSystem.service.project.ExternalProjectRefreshCallback; import com.intellij.openapi.externalSystem.service.project.ProjectDataManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.util.ThreeState; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -30,6 +31,7 @@ public class ImportSpecBuilder { @Nullable private String myArguments; private boolean myCreateDirectoriesForEmptyContentRoots; @Nullable private ProjectResolverPolicy myProjectResolverPolicy; + @Nullable private UserDataHolderBase myUserData; public ImportSpecBuilder(@NotNull Project project, @NotNull ProjectSystemId id) { myProject = project; @@ -107,6 +109,11 @@ public class ImportSpecBuilder { return this; } + public ImportSpecBuilder withUserData(@Nullable UserDataHolderBase userData) { + myUserData = userData; + return this; + } + public ImportSpec build() { ImportSpecImpl mySpec = new ImportSpecImpl(myProject, myExternalSystemId); mySpec.setProgressExecutionMode(myProgressExecutionMode); @@ -118,6 +125,7 @@ public class ImportSpecBuilder { mySpec.setArguments(myArguments); mySpec.setVmOptions(myVmOptions); mySpec.setProjectResolverPolicy(myProjectResolverPolicy); + mySpec.setUserData(myUserData); ExternalProjectRefreshCallback callback; if (myCallback != null) { callback = myCallback; @@ -141,6 +149,7 @@ public class ImportSpecBuilder { isActivateBuildToolWindowOnFailure = spec.isActivateBuildToolWindowOnFailure(); myArguments = spec.getArguments(); myVmOptions = spec.getVmOptions(); + myUserData = spec.getUserData(); } @ApiStatus.Internal diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecImpl.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecImpl.java index 254f42e8c873..306fa31cbbec 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecImpl.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/importing/ImportSpecImpl.java @@ -19,6 +19,7 @@ import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode; import com.intellij.openapi.externalSystem.service.project.ExternalProjectRefreshCallback; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.util.ThreeState; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -42,6 +43,7 @@ public final class ImportSpecImpl implements ImportSpec { @Nullable private String myArguments; @Nullable private ProjectResolverPolicy myProjectResolverPolicy; @Nullable private Runnable myRerunAction; + @Nullable private UserDataHolderBase myUserData; public ImportSpecImpl(@NotNull Project project, @NotNull ProjectSystemId id) { myProject = project; @@ -163,4 +165,13 @@ public final class ImportSpecImpl implements ImportSpec { public void setRerunAction(@Nullable Runnable rerunAction) { myRerunAction = rerunAction; } + + @Override + public @Nullable UserDataHolderBase getUserData() { + return myUserData; + } + + public void setUserData(@Nullable UserDataHolderBase userData) { + myUserData = userData; + } } diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/AbstractExternalSystemTask.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/AbstractExternalSystemTask.java index 9d5b3ec84b8b..d02fd43fe1f2 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/AbstractExternalSystemTask.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/AbstractExternalSystemTask.java @@ -14,9 +14,7 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemBundle; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.NlsContexts; -import com.intellij.openapi.util.ThrowableComputable; -import com.intellij.openapi.util.UserDataHolderBase; +import com.intellij.openapi.util.*; import com.intellij.util.ArrayUtil; import com.intellij.util.ThrowableRunnable; import org.jetbrains.annotations.ApiStatus; @@ -282,6 +280,18 @@ public abstract class AbstractExternalSystemTask extends UserDataHolderBase impl return String.format("%s task %s: %s", myExternalSystemId.getReadableName(), myId, myState); } + /** + * @see com.intellij.openapi.util.UserDataHolderBase#copyUserDataTo + */ + @ApiStatus.Internal + @SuppressWarnings({"unchecked", "rawtypes"}) + protected void putUserDataTo(@NotNull UserDataHolder dataHolder) { + var userMap = getUserMap(); + for (Key key : userMap.getKeys()) { + dataHolder.putUserData(key, userMap.get(key)); + } + } + @ApiStatus.Internal protected static @NotNull ExternalSystemTaskNotificationListener wrapWithListener( @NotNull ExternalSystemProgressNotificationManagerImpl manager diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemExecuteTaskTask.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemExecuteTaskTask.java index 573890f0280b..52e8b1f963ac 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemExecuteTaskTask.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemExecuteTaskTask.java @@ -120,17 +120,6 @@ public class ExternalSystemExecuteTaskTask extends AbstractExternalSystemTask { } } - /** - * @see com.intellij.openapi.util.UserDataHolderBase#copyUserDataTo - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - private void putUserDataTo(@NotNull UserDataHolder dataHolder) { - var userMap = getUserMap(); - for (Key key : userMap.getKeys()) { - dataHolder.putUserData(key, userMap.get(key)); - } - } - @Override protected boolean doCancel() throws Exception { var manager = ExternalSystemFacadeManager.getInstance(); diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemResolveProjectTask.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemResolveProjectTask.java index 4bfe6c1ae9f7..1d8cfb38cbef 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemResolveProjectTask.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/internal/ExternalSystemResolveProjectTask.java @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.UnindexedFilesScannerExecutor; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.execution.ParametersListUtil; @@ -62,6 +63,10 @@ public class ExternalSystemResolveProjectTask extends AbstractExternalSystemTask myVmOptions = importSpec.getVmOptions(); myArguments = importSpec.getArguments(); myResolverPolicy = importSpec instanceof ImportSpecImpl ? ((ImportSpecImpl)importSpec).getProjectResolverPolicy() : null; + UserDataHolderBase userData = importSpec.getUserData(); + if (userData != null) { + userData.copyUserDataTo(this); + } } @Override @@ -84,6 +89,8 @@ public class ExternalSystemResolveProjectTask extends AbstractExternalSystemTask settings.withArguments(ParametersListUtil.parse(myArguments)); } + putUserDataTo(settings); + TargetEnvironmentConfigurationProvider environmentConfigurationProvider = null; for (var executionAware : ExternalSystemExecutionAware.getExtensions(projectSystemId)) { if (environmentConfigurationProvider == null) {