mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Python remote interpreters refactored. Common code moved to remote-sdk-api and remote-sdk-impl modules.
This commit is contained in:
+3
-3
@@ -1,7 +1,7 @@
|
||||
package com.jetbrains.python.run;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.jetbrains.python.debugger.remote.PyPathMappingSettings;
|
||||
import com.intellij.util.PathMappingSettings;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -41,7 +41,7 @@ public interface AbstractPythonRunConfigurationParams {
|
||||
void setEnvs(final Map<String, String> envs);
|
||||
|
||||
@Nullable
|
||||
PyPathMappingSettings getMappingSettings();
|
||||
PathMappingSettings getMappingSettings();
|
||||
|
||||
void setMappingSettings(@Nullable PyPathMappingSettings mappingSettings);
|
||||
void setMappingSettings(@Nullable PathMappingSettings mappingSettings);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.ui.CollectionComboBoxModel;
|
||||
import com.intellij.ui.RawCommandLineEditor;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.jetbrains.python.debugger.remote.PyPathMappingSettings;
|
||||
import com.intellij.util.PathMappingSettings;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -158,12 +158,12 @@ public class PyPluginCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PyPathMappingSettings getMappingSettings() {
|
||||
public PathMappingSettings getMappingSettings() {
|
||||
return null; //TODO: implement for plugin
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMappingSettings(@Nullable PyPathMappingSettings mappingSettings) {
|
||||
public void setMappingSettings(@Nullable PathMappingSettings mappingSettings) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<orderEntry type="module" module-name="xml" />
|
||||
<orderEntry type="module" module-name="relaxng" scope="RUNTIME" />
|
||||
<orderEntry type="library" name="XmlRPC" level="project" />
|
||||
<orderEntry type="module" module-name="remote-sdk-api" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<orderEntry type="module" module-name="relaxng" scope="RUNTIME" />
|
||||
<orderEntry type="library" name="Velocity" level="project" />
|
||||
<orderEntry type="module" module-name="python-helpers" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="remote-sdk-api" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<orderEntry type="module" module-name="ChromeConnector" />
|
||||
<orderEntry type="module" module-name="FirefoxConnector" />
|
||||
<orderEntry type="module" module-name="python-openapi" exported="" />
|
||||
<orderEntry type="module" module-name="remote-sdk-api" />
|
||||
</component>
|
||||
<component name="copyright">
|
||||
<Base>
|
||||
|
||||
@@ -42,15 +42,15 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IJSwingUtilities;
|
||||
import com.intellij.util.net.NetUtils;
|
||||
import com.jetbrains.django.run.Runner;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteInterpreterException;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSdkData;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSshProcess;
|
||||
import com.jetbrains.python.PythonHelpersLocator;
|
||||
import com.jetbrains.python.console.completion.PydevConsoleElement;
|
||||
import com.jetbrains.python.console.parsing.PythonConsoleData;
|
||||
import com.jetbrains.python.console.pydev.ConsoleCommunication;
|
||||
import com.jetbrains.python.debugger.PySourcePosition;
|
||||
import com.jetbrains.python.remote.PyRemoteInterpreterException;
|
||||
import com.jetbrains.python.remote.PyRemoteSshProcess;
|
||||
import com.jetbrains.python.remote.PythonRemoteInterpreterManager;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.run.PythonCommandLineState;
|
||||
import com.jetbrains.python.run.PythonTracebackFilter;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
@@ -215,7 +215,7 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory<PythonC
|
||||
return createRemoteConsoleProcess(manager, myCommandLineArgumentsProvider.getArguments(),
|
||||
myCommandLineArgumentsProvider.getAdditionalEnvs());
|
||||
}
|
||||
catch (final PyRemoteInterpreterException e) {
|
||||
catch (final RemoteInterpreterException e) {
|
||||
throw new ExecutionException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
@@ -236,13 +236,13 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory<PythonC
|
||||
}
|
||||
|
||||
private Process createRemoteConsoleProcess(PythonRemoteInterpreterManager manager, String[] command, Map<String, String> envs)
|
||||
throws PyRemoteInterpreterException, ExecutionException {
|
||||
PythonRemoteSdkAdditionalData data = (PythonRemoteSdkAdditionalData)mySdk.getSdkAdditionalData();
|
||||
throws RemoteInterpreterException, ExecutionException {
|
||||
RemoteSdkData data = (RemoteSdkData)mySdk.getSdkAdditionalData();
|
||||
|
||||
GeneralCommandLine commandLine = new GeneralCommandLine(command);
|
||||
commandLine.setEnvParams(envs);
|
||||
|
||||
commandLine.getParametersList().set(1, PythonRemoteInterpreterManager.toSystemDependent(new File(data.getPyCharmHelpersPath(),
|
||||
commandLine.getParametersList().set(1, PythonRemoteInterpreterManager.toSystemDependent(new File(data.getHelpersPath(),
|
||||
PYDEV_PYDEVCONSOLE_PY)
|
||||
.getPath(),
|
||||
PySourcePosition.isWindowsPath(
|
||||
@@ -253,7 +253,7 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory<PythonC
|
||||
myCommandLine = commandLine.getCommandLineString();
|
||||
|
||||
|
||||
PyRemoteSshProcess remoteProcess =
|
||||
RemoteSshProcess remoteProcess =
|
||||
manager.createRemoteProcess(getProject(), data, commandLine, false);
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.xdebugger.*;
|
||||
import com.intellij.xdebugger.breakpoints.XBreakpoint;
|
||||
import com.intellij.xdebugger.breakpoints.XBreakpointHandler;
|
||||
@@ -27,11 +26,11 @@ import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider;
|
||||
import com.intellij.xdebugger.frame.XValueChildrenList;
|
||||
import com.intellij.xdebugger.stepping.XSmartStepIntoHandler;
|
||||
import com.jetbrains.django.util.DjangoUtil;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteProcessHandlerBase;
|
||||
import com.jetbrains.python.console.pydev.PydevCompletionVariant;
|
||||
import com.jetbrains.python.debugger.django.DjangoExceptionBreakpointHandler;
|
||||
import com.jetbrains.python.debugger.pydev.*;
|
||||
import com.jetbrains.python.debugger.remote.vfs.PyRemotePositionConverter;
|
||||
import com.jetbrains.python.remote.PyRemoteProcessHandlerBase;
|
||||
import com.jetbrains.python.run.PythonProcessHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -90,8 +89,8 @@ public class PyDebugProcess extends XDebugProcess implements IPyDebugProcess, Pr
|
||||
if (myProcessHandler != null) {
|
||||
myProcessHandler.addProcessListener(this);
|
||||
}
|
||||
if (processHandler instanceof PyRemoteProcessHandlerBase) {
|
||||
myPositionConverter = new PyRemotePositionConverter(this, ((PyRemoteProcessHandlerBase)processHandler).getMappingSettings());
|
||||
if (processHandler instanceof RemoteProcessHandlerBase) {
|
||||
myPositionConverter = new PyRemotePositionConverter(this, ((RemoteProcessHandlerBase)processHandler).getMappingSettings());
|
||||
}
|
||||
else {
|
||||
myPositionConverter = new PyLocalPositionConverter();
|
||||
@@ -233,8 +232,8 @@ public class PyDebugProcess extends XDebugProcess implements IPyDebugProcess, Pr
|
||||
|
||||
@Override
|
||||
public int handleDebugPort(int localPort) throws IOException {
|
||||
if (myProcessHandler instanceof PyRemoteProcessHandlerBase) {
|
||||
PyRemoteProcessHandlerBase remoteProcessHandler = (PyRemoteProcessHandlerBase)myProcessHandler;
|
||||
if (myProcessHandler instanceof RemoteProcessHandlerBase) {
|
||||
RemoteProcessHandlerBase remoteProcessHandler = (RemoteProcessHandlerBase)myProcessHandler;
|
||||
try {
|
||||
Pair<String, Integer> remoteSocket = remoteProcessHandler.obtainRemoteSocket();
|
||||
remoteProcessHandler.addRemoteForwarding(remoteSocket.getSecond(), localPort);
|
||||
|
||||
@@ -34,15 +34,15 @@ import com.intellij.util.Function;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import com.intellij.util.net.HttpConfigurable;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteFile;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteInterpreterException;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSdkData;
|
||||
import com.jetbrains.python.PythonHelpersLocator;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.PyListLiteralExpression;
|
||||
import com.jetbrains.python.psi.PyStringLiteralExpression;
|
||||
import com.jetbrains.python.remote.PyRemoteInterpreterException;
|
||||
import com.jetbrains.python.remote.PythonRemoteInterpreterManager;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.remote.RemoteFile;
|
||||
import com.jetbrains.python.remote.*;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -609,9 +609,9 @@ public class PyPackageManagerImpl extends PyPackageManager {
|
||||
private String getHelperPath(String helper) {
|
||||
String helperPath;
|
||||
final SdkAdditionalData sdkData = mySdk.getSdkAdditionalData();
|
||||
if (sdkData instanceof PythonRemoteSdkAdditionalData) {
|
||||
final PythonRemoteSdkAdditionalData remoteSdkData = (PythonRemoteSdkAdditionalData)sdkData;
|
||||
helperPath = new RemoteFile(remoteSdkData.getPyCharmHelpersPath(),
|
||||
if (sdkData instanceof RemoteSdkData) {
|
||||
final RemoteSdkData remoteSdkData = (RemoteSdkData)sdkData;
|
||||
helperPath = new RemoteFile(remoteSdkData.getHelpersPath(),
|
||||
helper).getPath();
|
||||
}
|
||||
else {
|
||||
@@ -626,8 +626,8 @@ public class PyPackageManagerImpl extends PyPackageManager {
|
||||
@Nullable String parentDir)
|
||||
throws PyExternalProcessException {
|
||||
final SdkAdditionalData sdkData = mySdk.getSdkAdditionalData();
|
||||
if (sdkData instanceof PythonRemoteSdkAdditionalData) {
|
||||
final PythonRemoteSdkAdditionalData remoteSdkData = (PythonRemoteSdkAdditionalData)sdkData;
|
||||
if (sdkData instanceof RemoteSdkData) {
|
||||
final RemoteSdkData remoteSdkData = (RemoteSdkData)sdkData;
|
||||
final PythonRemoteInterpreterManager manager = PythonRemoteInterpreterManager.getInstance();
|
||||
if (manager != null) {
|
||||
final List<String> cmdline = new ArrayList<String>();
|
||||
@@ -649,7 +649,7 @@ public class PyPackageManagerImpl extends PyPackageManager {
|
||||
while (true);
|
||||
return processOutput;
|
||||
}
|
||||
catch (PyRemoteInterpreterException e) {
|
||||
catch (RemoteInterpreterException e) {
|
||||
throw new PyExternalProcessException(ERROR_INVALID_SDK, helperPath, args, "Error running SDK: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.util.PlatformUtils;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PythonModuleTypeBase;
|
||||
import com.jetbrains.python.debugger.remote.PyPathMappingSettings;
|
||||
import com.intellij.util.PathMappingSettings;
|
||||
import com.jetbrains.python.sdk.PythonEnvUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jdom.Element;
|
||||
@@ -40,7 +40,7 @@ public abstract class AbstractPythonRunConfiguration<T extends AbstractRunConfig
|
||||
private String myWorkingDirectory = "";
|
||||
private String mySdkHome = "";
|
||||
private boolean myUseModuleSdk;
|
||||
protected PyPathMappingSettings myMappingSettings;
|
||||
protected PathMappingSettings myMappingSettings;
|
||||
|
||||
public AbstractPythonRunConfiguration(final String name, final RunConfigurationModule module, final ConfigurationFactory factory) {
|
||||
super(name, module, factory);
|
||||
@@ -51,11 +51,11 @@ public abstract class AbstractPythonRunConfiguration<T extends AbstractRunConfig
|
||||
return getValidModules(getProject());
|
||||
}
|
||||
|
||||
public PyPathMappingSettings getMappingSettings() {
|
||||
public PathMappingSettings getMappingSettings() {
|
||||
return myMappingSettings;
|
||||
}
|
||||
|
||||
public void setMappingSettings(PyPathMappingSettings mappingSettings) {
|
||||
public void setMappingSettings(PathMappingSettings mappingSettings) {
|
||||
myMappingSettings = mappingSettings;
|
||||
}
|
||||
|
||||
@@ -193,10 +193,10 @@ public abstract class AbstractPythonRunConfiguration<T extends AbstractRunConfig
|
||||
myUseModuleSdk = Boolean.parseBoolean(JDOMExternalizerUtil.readField(element, "IS_MODULE_SDK"));
|
||||
getConfigurationModule().readExternal(element);
|
||||
|
||||
Element settingsElement = element.getChild(PyPathMappingSettings.class.getSimpleName());
|
||||
Element settingsElement = element.getChild(PathMappingSettings.class.getSimpleName());
|
||||
if (settingsElement != null) {
|
||||
setMappingSettings(
|
||||
XmlSerializer.deserialize(settingsElement, PyPathMappingSettings.class));
|
||||
XmlSerializer.deserialize(settingsElement, PathMappingSettings.class));
|
||||
}
|
||||
|
||||
// extension settings:
|
||||
|
||||
@@ -29,14 +29,14 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteInterpreterException;
|
||||
import com.jetbrains.python.console.PyDebugConsoleBuilder;
|
||||
import com.jetbrains.python.debugger.PyDebugRunner;
|
||||
import com.jetbrains.python.debugger.PyDebuggerSettings;
|
||||
import com.jetbrains.python.facet.LibraryContributingFacet;
|
||||
import com.jetbrains.python.facet.PythonPathContributingFacet;
|
||||
import com.jetbrains.python.remote.PyRemoteInterpreterException;
|
||||
import com.jetbrains.python.remote.PyRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.remote.PythonRemoteInterpreterManager;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.sdk.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -178,7 +178,7 @@ public abstract class PythonCommandLineState extends CommandLineState {
|
||||
processHandler = doStartRemoteProcess(sdk, commandLine, manager);
|
||||
break;
|
||||
}
|
||||
catch (PyRemoteInterpreterException e) {
|
||||
catch (RemoteInterpreterException e) {
|
||||
if (Messages.showYesNoDialog(e.getMessage() + "\nTry again?", "Can't Run Remote Interpreter", Messages.getErrorIcon()) ==
|
||||
Messages.NO) {
|
||||
throw new ExecutionException("Can't run remote python interpreter: " + e.getMessage());
|
||||
@@ -194,9 +194,9 @@ public abstract class PythonCommandLineState extends CommandLineState {
|
||||
}
|
||||
|
||||
protected ProcessHandler doStartRemoteProcess(Sdk sdk, GeneralCommandLine commandLine, PythonRemoteInterpreterManager manager)
|
||||
throws PyRemoteInterpreterException {
|
||||
throws RemoteInterpreterException {
|
||||
|
||||
return manager.startRemoteProcess(myConfig.getProject(), (PythonRemoteSdkAdditionalData)sdk.getSdkAdditionalData(), commandLine,
|
||||
return manager.startRemoteProcess(myConfig.getProject(), (PyRemoteSdkAdditionalData)sdk.getSdkAdditionalData(), commandLine,
|
||||
myConfig.getMappingSettings());
|
||||
}
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ import com.intellij.ui.CollectionComboBoxModel;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.components.JBCheckBox;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSdkDataHolder;
|
||||
import com.jetbrains.python.packaging.PyPackageService;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.ui.IdeaDialog;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -160,7 +160,8 @@ public class CreateVirtualEnvDialog extends IdeaDialog {
|
||||
mySdkCombo.setRenderer(new PySdkListCellRenderer(null));
|
||||
List<Sdk> baseSdks = new ArrayList<Sdk>();
|
||||
for (Sdk s : allSdks) {
|
||||
if (!PythonSdkType.isInvalid(s) && !PythonSdkType.isVirtualEnv(s) && !PythonRemoteSdkAdditionalData.isRemoteSdk(s.getHomePath())) {
|
||||
if (!PythonSdkType.isInvalid(s) && !PythonSdkType.isVirtualEnv(s) && !RemoteSdkDataHolder
|
||||
.isRemoteSdk(s.getHomePath())) {
|
||||
baseSdks.add(s);
|
||||
}
|
||||
else if (s.equals(sdk)){
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.jetbrains.python.sdk;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.jetbrains.python.remote.RemoteFile;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteFile;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSdkData;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -196,6 +196,6 @@ public class PySdkUtil {
|
||||
}
|
||||
|
||||
public static boolean isRemote(@Nullable Sdk sdk) {
|
||||
return sdk != null && sdk.getSdkAdditionalData() instanceof PythonRemoteSdkAdditionalData;
|
||||
return sdk != null && sdk.getSdkAdditionalData() instanceof RemoteSdkData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,13 +123,14 @@ public class PythonSdkAdditionalData implements SdkAdditionalData {
|
||||
}
|
||||
|
||||
protected static void load(@Nullable Element element, @NotNull PythonSdkAdditionalData data) {
|
||||
data.setAddedPaths(loadStringList(element, PATHS_ADDED_BY_USER_ROOT, PATH_ADDED_BY_USER));
|
||||
data.setExcludedPaths(loadStringList(element, PATHS_REMOVED_BY_USER_ROOT, PATH_REMOVED_BY_USER));
|
||||
data.setAssociatedProjectPath(element.getAttributeValue(ASSOCIATED_PROJECT_PATH));
|
||||
data.setAddedPaths(collectPaths(loadStringsList(element, PATHS_ADDED_BY_USER_ROOT, PATH_ADDED_BY_USER)));
|
||||
data.setExcludedPaths(collectPaths(loadStringsList(element, PATHS_REMOVED_BY_USER_ROOT, PATH_REMOVED_BY_USER)));
|
||||
if (element != null) {
|
||||
data.setAssociatedProjectPath(element.getAttributeValue(ASSOCIATED_PROJECT_PATH));
|
||||
}
|
||||
}
|
||||
|
||||
protected static Set<VirtualFile> loadStringList(@Nullable Element element, @NotNull String rootName, @NotNull String attrName) {
|
||||
final List<String> paths = loadPaths(element, rootName, attrName);
|
||||
protected static Set<VirtualFile> collectPaths(@NotNull List<String> paths) {
|
||||
final Set<VirtualFile> files = Sets.newHashSet();
|
||||
for (String path : paths) {
|
||||
VirtualFile vf = VirtualFileUtil.findFile(path);
|
||||
@@ -140,14 +141,12 @@ public class PythonSdkAdditionalData implements SdkAdditionalData {
|
||||
return files;
|
||||
}
|
||||
|
||||
protected static List<String> loadPaths(Element element, String rootName, String attrName) {
|
||||
protected static List<String> loadStringsList(Element element, String rootName, String attrName) {
|
||||
final List<String> paths = new LinkedList<String>();
|
||||
if (element != null) {
|
||||
final List list = element.getChildren(rootName);
|
||||
if (list != null) {
|
||||
for (Object o : list) {
|
||||
paths.add(((Element)o).getAttribute(attrName).getValue());
|
||||
}
|
||||
@NotNull final List list = element.getChildren(rootName);
|
||||
for (Object o : list) {
|
||||
paths.add(((Element)o).getAttribute(attrName).getValue());
|
||||
}
|
||||
}
|
||||
return paths;
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.jetbrains.plugins.remotesdk.RemoteSdkDataHolder;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.PythonFileType;
|
||||
@@ -44,7 +45,7 @@ import com.jetbrains.python.facet.PythonFacetSettings;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.impl.PyBuiltinCache;
|
||||
import com.jetbrains.python.psi.search.PyProjectScopeBuilder;
|
||||
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
|
||||
import com.jetbrains.python.remote.PyRemoteSdkAdditionalData;
|
||||
import icons.PythonIcons;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -359,8 +360,8 @@ public class PythonSdkType extends SdkType {
|
||||
|
||||
@Override
|
||||
public SdkAdditionalData loadAdditionalData(final Sdk currentSdk, final Element additional) {
|
||||
if (PythonRemoteSdkAdditionalData.isRemoteSdk(currentSdk.getHomePath())) {
|
||||
return PythonRemoteSdkAdditionalData.loadRemote(currentSdk, additional);
|
||||
if (RemoteSdkDataHolder.isRemoteSdk(currentSdk.getHomePath())) {
|
||||
return PyRemoteSdkAdditionalData.loadRemote(currentSdk, additional);
|
||||
}
|
||||
else {
|
||||
return PythonSdkAdditionalData.load(currentSdk, additional);
|
||||
|
||||
Reference in New Issue
Block a user