mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[external system api][IDEA-349510] added a way to pass user data into ExternalSystemExecutionSettings
GitOrigin-RevId: a127d9836e052649b2f13ff1f28eee8e842913ac
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a257802046
commit
cf76e7437a
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user