mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
extract ExternalSystemTaskExecutionSettings.setFrom
This commit is contained in:
+28
-24
@@ -6,22 +6,20 @@ import com.intellij.openapi.externalSystem.model.ProjectSystemId;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.xmlb.annotations.Tag;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Keeps external system task execution parameters. Basically, this is a model class which holds data represented when
|
||||
* a user opens run configuration editor for corresponding external system.
|
||||
*
|
||||
* @author Denis Zhdanov
|
||||
* @since 24.05.13 12:20
|
||||
*/
|
||||
@Tag("ExternalSystemSettings")
|
||||
public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
@@ -29,21 +27,28 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
@NotNull @NonNls public static final String TAG_NAME = "ExternalSystemSettings";
|
||||
@NotNull @NonNls public static final Key<ParametersList> JVM_AGENT_SETUP_KEY = Key.create("jvmAgentSetup");
|
||||
|
||||
private List<String> myTaskNames = ContainerUtilRt.newArrayList();
|
||||
private List<String> myTaskDescriptions = ContainerUtilRt.newArrayList();
|
||||
@NotNull
|
||||
private List<String> myTaskNames = Collections.emptyList();
|
||||
@NotNull
|
||||
private List<String> myTaskDescriptions = Collections.emptyList();
|
||||
|
||||
@Nullable private String myExecutionName;
|
||||
private String myExternalSystemIdString;
|
||||
private String myExternalProjectPath;
|
||||
private String myVmOptions;
|
||||
private String myScriptParameters;
|
||||
private Map<String, String> myEnv = ContainerUtilRt.newHashMap();
|
||||
@NotNull
|
||||
private Map<String, String> myEnv = Collections.emptyMap();
|
||||
private boolean myPassParentEnvs = true;
|
||||
|
||||
public ExternalSystemTaskExecutionSettings() {
|
||||
}
|
||||
|
||||
private ExternalSystemTaskExecutionSettings(@NotNull ExternalSystemTaskExecutionSettings source) {
|
||||
setFrom(source);
|
||||
}
|
||||
|
||||
public void setFrom(@NotNull ExternalSystemTaskExecutionSettings source) {
|
||||
myExecutionName = source.myExecutionName;
|
||||
myExternalSystemIdString = source.myExternalSystemIdString;
|
||||
myExternalProjectPath = source.myExternalProjectPath;
|
||||
@@ -53,7 +58,7 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
myTaskNames = ContainerUtil.copyList(source.myTaskNames);
|
||||
myTaskDescriptions = ContainerUtil.copyList(source.myTaskDescriptions);
|
||||
|
||||
myEnv = source.myEnv == null ? null : new THashMap<>(source.myEnv);
|
||||
myEnv = source.myEnv.isEmpty() ? Collections.emptyMap() : new THashMap<>(source.myEnv);
|
||||
myPassParentEnvs = source.myPassParentEnvs;
|
||||
}
|
||||
|
||||
@@ -102,19 +107,21 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
myScriptParameters = scriptParameters;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<String> getTaskNames() {
|
||||
return myTaskNames;
|
||||
}
|
||||
|
||||
public void setTaskNames(List<String> taskNames) {
|
||||
public void setTaskNames(@NotNull List<String> taskNames) {
|
||||
myTaskNames = taskNames;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<String> getTaskDescriptions() {
|
||||
return myTaskDescriptions;
|
||||
}
|
||||
|
||||
public void setTaskDescriptions(List<String> taskDescriptions) {
|
||||
public void setTaskDescriptions(@NotNull List<String> taskDescriptions) {
|
||||
myTaskDescriptions = taskDescriptions;
|
||||
}
|
||||
|
||||
@@ -123,8 +130,8 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
return myEnv;
|
||||
}
|
||||
|
||||
public void setEnv(Map<String, String> env) {
|
||||
myEnv = env == null ? ContainerUtilRt.newHashMap() : env;
|
||||
public void setEnv(@NotNull Map<String, String> value) {
|
||||
myEnv = value;
|
||||
}
|
||||
|
||||
public boolean isPassParentEnvs() {
|
||||
@@ -135,6 +142,7 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
myPassParentEnvs = passParentEnvs;
|
||||
}
|
||||
|
||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||
@Override
|
||||
public ExternalSystemTaskExecutionSettings clone() {
|
||||
return new ExternalSystemTaskExecutionSettings(this);
|
||||
@@ -142,13 +150,13 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = myTaskNames != null ? myTaskNames.hashCode() : 0;
|
||||
int result = myTaskNames.hashCode();
|
||||
result = 31 * result + (myExecutionName != null ? myExecutionName.hashCode() : 0);
|
||||
result = 31 * result + (myExternalSystemIdString != null ? myExternalSystemIdString.hashCode() : 0);
|
||||
result = 31 * result + (myExternalProjectPath != null ? myExternalProjectPath.hashCode() : 0);
|
||||
result = 31 * result + (myVmOptions != null ? myVmOptions.hashCode() : 0);
|
||||
result = 31 * result + (myScriptParameters != null ? myScriptParameters.hashCode() : 0);
|
||||
result = 31 * result + (myEnv != null ? myEnv.hashCode() : 0);
|
||||
result = 31 * result + myEnv.hashCode();
|
||||
result = 31 * result + (myPassParentEnvs ? 1 : 0);
|
||||
return result;
|
||||
}
|
||||
@@ -160,33 +168,29 @@ public class ExternalSystemTaskExecutionSettings implements Cloneable {
|
||||
|
||||
ExternalSystemTaskExecutionSettings settings = (ExternalSystemTaskExecutionSettings)o;
|
||||
|
||||
if (myExecutionName != null ? !myExecutionName.equals(settings.myExecutionName) : settings.myExecutionName != null) {
|
||||
if (!Objects.equals(myExecutionName, settings.myExecutionName)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (myExternalProjectPath != null
|
||||
? !myExternalProjectPath.equals(settings.myExternalProjectPath)
|
||||
: settings.myExternalProjectPath != null)
|
||||
if (!Objects.equals(myExternalProjectPath, settings.myExternalProjectPath))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (myExternalSystemIdString != null
|
||||
? !myExternalSystemIdString.equals(settings.myExternalSystemIdString)
|
||||
: settings.myExternalSystemIdString != null)
|
||||
if (!Objects.equals(myExternalSystemIdString, settings.myExternalSystemIdString))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (myTaskNames != null ? !myTaskNames.equals(settings.myTaskNames) : settings.myTaskNames != null) return false;
|
||||
if (!Objects.equals(myTaskNames, settings.myTaskNames)) return false;
|
||||
if (StringUtil.isEmpty(myVmOptions) ^ StringUtil.isEmpty(settings.myVmOptions)) return false;
|
||||
if (StringUtil.isEmpty(myScriptParameters) ^ StringUtil.isEmpty(settings.myScriptParameters)) return false;
|
||||
if (myEnv != null ? !myEnv.equals(settings.myEnv) : settings.myEnv != null) return false;
|
||||
if (!Objects.equals(myEnv, settings.myEnv)) return false;
|
||||
if (myPassParentEnvs != settings.myPassParentEnvs) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return (myTaskNames == null ? "" : StringUtil.join(myTaskNames, " ")) +
|
||||
return StringUtil.join(myTaskNames, " ") +
|
||||
(StringUtil.isEmpty(myScriptParameters) ? "" : " " + myScriptParameters) +
|
||||
(StringUtil.isEmpty(myVmOptions) ? "" : " " + myVmOptions);
|
||||
}
|
||||
|
||||
+5
-19
@@ -1,18 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2013 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.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.externalSystem.service.execution;
|
||||
|
||||
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
|
||||
@@ -33,12 +19,13 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.ui.RawCommandLineEditor;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.GridBag;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Collections;
|
||||
|
||||
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.normalizePath;
|
||||
|
||||
@@ -146,8 +133,7 @@ public class ExternalSystemTaskSettingsControl implements ExternalSystemSettings
|
||||
myTasksTextField.setText(StringUtil.join(myOriginalSettings.getTaskNames(), " "));
|
||||
myVmOptionsEditor.setText(myOriginalSettings.getVmOptions());
|
||||
myArgumentsEditor.setText(myOriginalSettings.getScriptParameters());
|
||||
myEnvVariablesComponent.setEnvData(
|
||||
EnvironmentVariablesData.create(myOriginalSettings.getEnv(), myOriginalSettings.isPassParentEnvs()));
|
||||
myEnvVariablesComponent.setEnvData(EnvironmentVariablesData.create(myOriginalSettings.getEnv(), myOriginalSettings.isPassParentEnvs()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -177,7 +163,7 @@ public class ExternalSystemTaskSettingsControl implements ExternalSystemSettings
|
||||
settings.setVmOptions(myVmOptionsEditor.getText());
|
||||
settings.setScriptParameters(myArgumentsEditor.getText());
|
||||
settings.setPassParentEnvs(myEnvVariablesComponent.isPassParentEnvs());
|
||||
settings.setEnv(ContainerUtil.newHashMap(myEnvVariablesComponent.getEnvs()));
|
||||
settings.setEnv(myEnvVariablesComponent.getEnvs().isEmpty() ? Collections.emptyMap() : new THashMap<>(myEnvVariablesComponent.getEnvs()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-12
@@ -109,7 +109,7 @@ import java.util.function.Supplier;
|
||||
|
||||
import static com.intellij.openapi.externalSystem.settings.AbstractExternalSystemLocalSettings.SyncType.*;
|
||||
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.doWriteAction;
|
||||
import static com.intellij.util.containers.ContainerUtil.*;
|
||||
import static com.intellij.util.containers.ContainerUtil.list;
|
||||
|
||||
/**
|
||||
* @author Denis Zhdanov
|
||||
@@ -980,20 +980,13 @@ public class ExternalSystemUtil {
|
||||
@NotNull Project project,
|
||||
@NotNull ProjectSystemId externalSystemId) {
|
||||
AbstractExternalSystemTaskConfigurationType configurationType = findConfigurationType(externalSystemId);
|
||||
if (configurationType == null) return null;
|
||||
if (configurationType == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String name = AbstractExternalSystemTaskConfigurationType.generateName(project, taskSettings);
|
||||
RunnerAndConfigurationSettings settings = RunManager.getInstance(project).createRunConfiguration(name, configurationType.getFactory());
|
||||
ExternalSystemRunConfiguration runConfiguration = (ExternalSystemRunConfiguration)settings.getConfiguration();
|
||||
runConfiguration.getSettings().setExternalProjectPath(taskSettings.getExternalProjectPath());
|
||||
runConfiguration.getSettings().setTaskNames(newArrayList(taskSettings.getTaskNames()));
|
||||
runConfiguration.getSettings().setTaskDescriptions(newArrayList(taskSettings.getTaskDescriptions()));
|
||||
runConfiguration.getSettings().setVmOptions(taskSettings.getVmOptions());
|
||||
runConfiguration.getSettings().setScriptParameters(taskSettings.getScriptParameters());
|
||||
runConfiguration.getSettings().setPassParentEnvs(taskSettings.isPassParentEnvs());
|
||||
runConfiguration.getSettings().setEnv(newHashMap(taskSettings.getEnv()));
|
||||
runConfiguration.getSettings().setExecutionName(taskSettings.getExecutionName());
|
||||
|
||||
((ExternalSystemRunConfiguration)settings.getConfiguration()).getSettings().setFrom(taskSettings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
||||
@@ -2717,6 +2717,9 @@ public class ContainerUtil extends ContainerUtilRt {
|
||||
else if (list.size() == 1) {
|
||||
return new SmartList<T>(list.get(0));
|
||||
}
|
||||
else if (list.isEmpty()) {
|
||||
return new SmartList<T>();
|
||||
}
|
||||
else {
|
||||
return new ArrayList<T>(list);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiJavaModule;
|
||||
import com.intellij.task.ExecuteRunConfigurationTask;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashMap;
|
||||
import org.intellij.lang.annotations.Language;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -99,7 +99,7 @@ public class GradleApplicationEnvironmentProvider implements GradleExecutionEnvi
|
||||
|
||||
ExternalSystemTaskExecutionSettings taskSettings = new ExternalSystemTaskExecutionSettings();
|
||||
taskSettings.setPassParentEnvs(params.isPassParentEnvs());
|
||||
taskSettings.setEnv(ContainerUtil.newHashMap(params.getEnv()));
|
||||
taskSettings.setEnv(params.getEnv().isEmpty() ? Collections.emptyMap() : new THashMap<>(params.getEnv()));
|
||||
taskSettings.setExternalSystemIdString(GradleConstants.SYSTEM_ID.getId());
|
||||
String projectPath = GradleRunnerUtil.resolveProjectPath(module);
|
||||
taskSettings.setExternalProjectPath(projectPath);
|
||||
|
||||
+2
-16
@@ -1,18 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 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.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.plugins.gradle.importing;
|
||||
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
@@ -64,7 +50,7 @@ public class GradleEnvironmentTest extends GradleImportingTestCase {
|
||||
"Support for this is available in Gradle 3.5 and all later versions."));
|
||||
}
|
||||
|
||||
private void importAndRunTask(Map<String, String> passedEnv, StringBuilder gradleEnv) throws IOException {
|
||||
private void importAndRunTask(@NotNull Map<String, String> passedEnv, StringBuilder gradleEnv) throws IOException {
|
||||
importProject("task printEnv() {\n" +
|
||||
" doLast { println System.getenv().toMapString()}\n" +
|
||||
"}");
|
||||
|
||||
Reference in New Issue
Block a user