Merge remote-tracking branch 'remotes/origin/avu/IDEA_146319_Move_PyCharm_proclist'
authorAlexey Ushakov <Alexey.Ushakov@jetbrains.com>
Tue, 1 Dec 2015 08:42:55 +0000 (11:42 +0300)
committerAlexey Ushakov <Alexey.Ushakov@jetbrains.com>
Tue, 1 Dec 2015 08:42:55 +0000 (11:42 +0300)
platform/util/src/com/intellij/execution/process/CSVReader.java [moved from python/pydevSrc/com/jetbrains/python/internal/win32/CSVReader.java with 92% similarity]
platform/util/src/com/intellij/execution/process/IProcessList.java [moved from python/pydevSrc/com/jetbrains/python/internal/IProcessList.java with 52% similarity]
platform/util/src/com/intellij/execution/process/ProcessInfo.java [moved from python/pydevSrc/com/jetbrains/python/internal/PyProcessInfo.java with 60% similarity]
platform/util/src/com/intellij/execution/process/ProcessListLinux.java [moved from python/pydevSrc/com/jetbrains/python/internal/linux/ProcessListLinux.java with 68% similarity]
platform/util/src/com/intellij/execution/process/ProcessListMac.java [moved from python/pydevSrc/com/jetbrains/python/internal/macos/ProcessListMac.java with 69% similarity]
platform/util/src/com/intellij/execution/process/ProcessListWin32.java [moved from python/pydevSrc/com/jetbrains/python/internal/win32/ProcessListWin32.java with 76% similarity]
platform/util/src/com/intellij/execution/process/ProcessListWin32Internal.java [moved from python/pydevSrc/com/jetbrains/python/internal/win32/ProcessListWin32Internal.java with 60% similarity]
platform/util/src/com/intellij/execution/process/ProcessUtils.java [moved from python/pydevSrc/com/jetbrains/python/internal/ProcessUtils.java with 77% similarity]
platform/util/util.iml
python/src/com/jetbrains/python/debugger/attach/PyAttachToProcessAction.java

similarity index 92%
rename from python/pydevSrc/com/jetbrains/python/internal/win32/CSVReader.java
rename to platform/util/src/com/intellij/execution/process/CSVReader.java
index 0cebb2487d1f4d15918e68677df80ce056cda4e9..0a30127e8bc7895d90f663002646566b9acc082f 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2000-2015 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.
+ */
+
 // From: http://www.halley.cc/code/?java/CSVReader.java
 
 /**
@@ -16,7 +32,7 @@
  limitations under the License.
  */
 
-package com.jetbrains.python.internal.win32;
+package com.intellij.execution.process;
 
 import java.io.BufferedReader;
 import java.io.IOException;
similarity index 52%
rename from python/pydevSrc/com/jetbrains/python/internal/IProcessList.java
rename to platform/util/src/com/intellij/execution/process/IProcessList.java
index 1af866ae1eb87aeced9ff658cc688e872dceff22..2d041213371e95a0cb2cee8bbaf005b90f45e41c 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2000-2015 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 (c) 2000, 2010 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * Contributors:
  *     QNX Software Systems - Initial API and implementation
  *******************************************************************************/
-package com.jetbrains.python.internal;
+package com.intellij.execution.process;
 
 /**
  * @noextend This interface is not intended to be extended by clients.
  * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface IProcessList {
-    PyProcessInfo[] getProcessList();
+    ProcessInfo[] getProcessList();
 }
\ No newline at end of file
similarity index 60%
rename from python/pydevSrc/com/jetbrains/python/internal/PyProcessInfo.java
rename to platform/util/src/com/intellij/execution/process/ProcessInfo.java
index 69ff84b2fbcf619ecaaf2da153e57ef0deadc7ef..56d208b1bf700e4e922584a5874eb8e4ab4edd4a 100644 (file)
@@ -9,24 +9,39 @@
  *     QNX Software Systems - Initial API and implementation
  *******************************************************************************/
 
-package com.jetbrains.python.internal;
+/*
+ * Copyright 2000-2015 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.execution.process;
 
 import com.google.common.base.Joiner;
 
 /**
  * @author traff
  */
-public class PyProcessInfo {
+public class ProcessInfo {
 
   private final int myPid;
   private final String myCommand;
   private final String myArgs;
 
-  public PyProcessInfo(String pidString, String name) {
+  public ProcessInfo(String pidString, String name) {
     this(Integer.parseInt(pidString), name);
   }
 
-  public PyProcessInfo(int pid, String name) {
+  public ProcessInfo(int pid, String name) {
     myPid = pid;
     String[] args = name.split(" ");
     myCommand = args.length > 0 ? args[0] : "";
similarity index 68%
rename from python/pydevSrc/com/jetbrains/python/internal/linux/ProcessListLinux.java
rename to platform/util/src/com/intellij/execution/process/ProcessListLinux.java
index fa704a06c93c909f5a77763d6bed90730ad9bc7d..c283fba69e50c664e41277095a0b44d9cea291e4 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2000-2015 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 (c) 2000, 2010 QNX Software Systems and others.
  * All rights reserved. This program and the accompanying materials
  * Contributors:
  *     QNX Software Systems - Initial API and implementation
  *******************************************************************************/
-package com.jetbrains.python.internal.linux;
+package com.intellij.execution.process;
 
 import java.io.File;
 import java.io.FilenameFilter;
 import java.io.IOException;
 
-import com.intellij.openapi.util.io.FileUtil;
-import com.jetbrains.python.internal.ProcessUtils;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.IProcessList;
-import com.jetbrains.python.internal.PyProcessInfo;
 
 /**
  * Use through PlatformUtils.
  */
 public class ProcessListLinux implements IProcessList {
 
-  PyProcessInfo[] empty = new PyProcessInfo[0];
+  ProcessInfo[] empty = new ProcessInfo[0];
 
   public ProcessListLinux() {
   }
@@ -35,7 +46,7 @@ public class ProcessListLinux implements IProcessList {
    *
    * @see IProcessList#getProcessList
    */
-  public PyProcessInfo[] getProcessList() {
+  public ProcessInfo[] getProcessList() {
     File proc = new File("/proc"); //$NON-NLS-1$
     File[] pidFiles = null;
 
@@ -58,9 +69,9 @@ public class ProcessListLinux implements IProcessList {
     catch (SecurityException e) {
     }
 
-    PyProcessInfo[] processInfo = empty;
+    ProcessInfo[] processInfo = empty;
     if (pidFiles != null) {
-      processInfo = new PyProcessInfo[pidFiles.length];
+      processInfo = new ProcessInfo[pidFiles.length];
       for (int i = 0; i < pidFiles.length; i++) {
         File cmdLine = new File(pidFiles[i], "cmdline"); //$NON-NLS-1$
         String name;
@@ -73,7 +84,7 @@ public class ProcessListLinux implements IProcessList {
         if (name.length() == 0) {
           name = "Unknown"; //$NON-NLS-1$
         }
-        processInfo[i] = new PyProcessInfo(pidFiles[i].getName(), name);
+        processInfo[i] = new ProcessInfo(pidFiles[i].getName(), name);
       }
     }
     else {
similarity index 69%
rename from python/pydevSrc/com/jetbrains/python/internal/macos/ProcessListMac.java
rename to platform/util/src/com/intellij/execution/process/ProcessListMac.java
index da670bd17a8ac1f1552bc8fe482169a16b324407..129ae8da565d670713d16f7ed115e15c706648c8 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2000-2015 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 (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package com.jetbrains.python.internal.macos;
+package com.intellij.execution.process;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.util.List;
 
 import com.google.common.collect.Lists;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.IProcessList;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.ProcessUtils;
 
 /**
  * Use through PlatformUtils.
  */
 public class ProcessListMac implements IProcessList {
 
-    PyProcessInfo[] empty = new PyProcessInfo[0];
+    ProcessInfo[] empty = new ProcessInfo[0];
 
     public ProcessListMac() {
     }
@@ -34,7 +46,7 @@ public class ProcessListMac implements IProcessList {
      * Insert the method's description here.
      * @see IProcessList#getProcessList
      */
-    public PyProcessInfo[] getProcessList() {
+    public ProcessInfo[] getProcessList() {
         Process ps;
         BufferedReader psOutput;
         String[] args = { "/bin/ps", "-a", "-x", "-o", "pid,command" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ 
@@ -43,11 +55,11 @@ public class ProcessListMac implements IProcessList {
             ps = ProcessUtils.createProcess(args, null, null);
             psOutput = new BufferedReader(new InputStreamReader(ps.getInputStream()));
         } catch (Exception e) {
-            return new PyProcessInfo[0];
+            return new ProcessInfo[0];
         }
 
         //Read the output and parse it into an array list
-        List<PyProcessInfo> procInfo = Lists.newArrayList();
+        List<ProcessInfo> procInfo = Lists.newArrayList();
 
         try {
             String lastline;
@@ -61,7 +73,7 @@ public class ProcessListMac implements IProcessList {
                     try {
                         int pid = Integer.parseInt(pidString);
                         String arg = lastline.substring(index + 1);
-                        procInfo.add(new PyProcessInfo(pid, arg));
+                        procInfo.add(new ProcessInfo(pid, arg));
                     } catch (NumberFormatException e) {
                     }
                 }
@@ -72,6 +84,6 @@ public class ProcessListMac implements IProcessList {
         }
 
         ps.destroy();
-        return procInfo.toArray(new PyProcessInfo[procInfo.size()]);
+        return procInfo.toArray(new ProcessInfo[procInfo.size()]);
     }
 }
\ No newline at end of file
similarity index 76%
rename from python/pydevSrc/com/jetbrains/python/internal/win32/ProcessListWin32.java
rename to platform/util/src/com/intellij/execution/process/ProcessListWin32.java
index 5b91312424e20755d65875b23e82c4a41df17dd9..bbc19aac70c921aace144c517b4de3e8ea4af5ab 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2015 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 (c) 2014 Brainwy Software Ltda.
  * All rights reserved. This program and the accompanying materials
@@ -8,7 +23,7 @@
  * Contributors:
  *     Fabio Zadrozny
  *******************************************************************************/
-package com.jetbrains.python.internal.win32;
+package com.intellij.execution.process;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -19,10 +34,6 @@ import java.util.List;
 
 import com.google.common.base.Joiner;
 import com.intellij.openapi.diagnostic.Logger;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.IProcessList;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.ProcessUtils;
 
 /*
  * This implementation uses the tasklist.exe from windows (must be on the path).
@@ -38,7 +49,7 @@ public class ProcessListWin32 implements IProcessList {
     myHelpersRoot = helpersRoot;
   }
 
-  public PyProcessInfo[] getProcessList() {
+  public ProcessInfo[] getProcessList() {
 
     try {
       return createFromWMIC();
@@ -49,7 +60,7 @@ public class ProcessListWin32 implements IProcessList {
 
     Process p = null;
     InputStream in = null;
-    PyProcessInfo[] procInfos = new PyProcessInfo[0];
+    ProcessInfo[] procInfos = new ProcessInfo[0];
 
     try {
 
@@ -80,11 +91,11 @@ public class ProcessListWin32 implements IProcessList {
     return procInfos;
   }
 
-  private PyProcessInfo[] createFromWMIC() throws Exception {
+  private ProcessInfo[] createFromWMIC() throws Exception {
     Process p = ProcessUtils.createProcess(new String[]{"wmic.exe", "path", "win32_process", "get",
                                              "Caption,Processid,Commandline"}, null,
                                            null);
-    List<PyProcessInfo> lst = new ArrayList<PyProcessInfo>();
+    List<ProcessInfo> lst = new ArrayList<ProcessInfo>();
     InputStream in = p.getInputStream();
     InputStreamReader reader = new InputStreamReader(in);
     try {
@@ -112,12 +123,12 @@ public class ProcessListWin32 implements IProcessList {
         String name = line.substring(0, commandLineI).trim();
         String commandLine = line.substring(commandLineI, processIdI).trim();
         String processId = line.substring(processIdI, line.length()).trim();
-        lst.add(new PyProcessInfo(Integer.parseInt(processId), name + "   " + commandLine));
+        lst.add(new ProcessInfo(Integer.parseInt(processId), name + "   " + commandLine));
       }
       if (lst.size() == 0) {
         throw new AssertionError("Error: no processes found");
       }
-      return lst.toArray(new PyProcessInfo[0]);
+      return lst.toArray(new ProcessInfo[0]);
     }
     catch (Exception e) {
       LOG.error(e);
@@ -128,10 +139,10 @@ public class ProcessListWin32 implements IProcessList {
     }
   }
 
-  public PyProcessInfo[] parseListTasks(InputStreamReader reader) {
+  public ProcessInfo[] parseListTasks(InputStreamReader reader) {
     BufferedReader br = new BufferedReader(reader);
     CSVReader csvReader = new CSVReader(br);
-    List<PyProcessInfo> processList = new ArrayList();
+    List<ProcessInfo> processList = new ArrayList();
     String[] next;
     do {
       try {
@@ -139,7 +150,7 @@ public class ProcessListWin32 implements IProcessList {
         if (next != null) {
           int pid = Integer.parseInt(next[1]);
           String name = Joiner.on(" - ").join(next[0], next[next.length - 1]);
-          processList.add(new PyProcessInfo(pid, name));
+          processList.add(new ProcessInfo(pid, name));
         }
       }
       catch (IOException e) {
@@ -148,6 +159,6 @@ public class ProcessListWin32 implements IProcessList {
     }
     while (next != null);
 
-    return processList.toArray(new PyProcessInfo[processList.size()]);
+    return processList.toArray(new ProcessInfo[processList.size()]);
   }
 }
\ No newline at end of file
similarity index 60%
rename from python/pydevSrc/com/jetbrains/python/internal/win32/ProcessListWin32Internal.java
rename to platform/util/src/com/intellij/execution/process/ProcessListWin32Internal.java
index 0ee7c9098da9c9f4ef2bc9437facda1672b0f9ee..13f56eb1a8ea9ec2249a6fa43e1400ade98cfbf8 100644 (file)
@@ -1,21 +1,22 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2014 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/*
+ * Copyright 2000-2015 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
  *
- * Contributors:
- *     QNX Software Systems - Initial API and implementation
- *     Martin Oberhuber (Wind River) - [303083] Split out the Spawner
- *******************************************************************************/
-package com.jetbrains.python.internal.win32;
+ * 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.execution.process;
 
 import com.google.common.collect.Lists;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.IProcessList;
-import com.jetbrains.python.internal.PyProcessInfo;
-import com.jetbrains.python.internal.ProcessUtils;
 
 import java.io.*;
 import java.util.List;
@@ -27,7 +28,7 @@ import java.util.List;
  */
 public class ProcessListWin32Internal implements IProcessList {
 
-  private PyProcessInfo[] NOPROCESS = new PyProcessInfo[0];
+  private ProcessInfo[] NOPROCESS = new ProcessInfo[0];
   private String myHelpersRoot;
 
   public ProcessListWin32Internal(String helpersRoot) {
@@ -35,11 +36,11 @@ public class ProcessListWin32Internal implements IProcessList {
     myHelpersRoot = helpersRoot;
   }
 
-  public PyProcessInfo[] getProcessList() {
+  public ProcessInfo[] getProcessList() {
     Process p = null;
     String command = null;
     InputStream in = null;
-    PyProcessInfo[] procInfos = NOPROCESS;
+    ProcessInfo[] procInfos = NOPROCESS;
 
     try {
       File file = new File(myHelpersRoot, "process/listtasks.exe");
@@ -74,9 +75,9 @@ public class ProcessListWin32Internal implements IProcessList {
     return procInfos;
   }
 
-  public PyProcessInfo[] parseListTasks(InputStreamReader reader) {
+  public ProcessInfo[] parseListTasks(InputStreamReader reader) {
     BufferedReader br = new BufferedReader(reader);
-    List<PyProcessInfo> processList = Lists.newArrayList();
+    List<ProcessInfo> processList = Lists.newArrayList();
     try {
       String line;
       while ((line = br.readLine()) != null) {
@@ -87,7 +88,7 @@ public class ProcessListWin32Internal implements IProcessList {
           if (proc.length() > 0 && name.length() > 0) {
             try {
               int pid = Integer.parseInt(proc);
-              processList.add(new PyProcessInfo(pid, name));
+              processList.add(new ProcessInfo(pid, name));
             }
             catch (NumberFormatException e) {
             }
@@ -97,6 +98,6 @@ public class ProcessListWin32Internal implements IProcessList {
     }
     catch (IOException e) {
     }
-    return processList.toArray(new PyProcessInfo[processList.size()]);
+    return processList.toArray(new ProcessInfo[processList.size()]);
   }
 }
\ No newline at end of file
similarity index 77%
rename from python/pydevSrc/com/jetbrains/python/internal/ProcessUtils.java
rename to platform/util/src/com/intellij/execution/process/ProcessUtils.java
index 80565ac31d8263961436dc544261f64251aa0f5d..b0600846ea3102ead38179d75e008b31a510cb84 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2000-2015 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 (C) 2013  Fabio Zadrozny
  *
  * Contributors:
  *     Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation
  ******************************************************************************/
-package com.jetbrains.python.internal;
+package com.intellij.execution.process;
 
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.SystemInfo;
-import com.jetbrains.python.console.pydev.FastStringBuffer;
-import com.jetbrains.python.internal.linux.ProcessListLinux;
-import com.jetbrains.python.internal.macos.ProcessListMac;
-import com.jetbrains.python.internal.win32.ProcessListWin32;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.NotNull;
 
@@ -65,8 +77,8 @@ public class ProcessUtils {
     return new IProcessList() {
 
       @Override
-      public PyProcessInfo[] getProcessList() {
-        return new PyProcessInfo[0];
+      public ProcessInfo[] getProcessList() {
+        return new ProcessInfo[0];
       }
     };
   }
@@ -94,13 +106,13 @@ public class ProcessUtils {
 
     int DEFAULT_FILE_SIZE = 8 * BUFFER_SIZE;
 
-    FastStringBuffer buffer = new FastStringBuffer(DEFAULT_FILE_SIZE);
+    StringBuffer buffer = new StringBuffer(DEFAULT_FILE_SIZE);
 
     while (n > 0) {
       buffer.append(readBuffer, 0, n);
       n = reader.read(readBuffer);
     }
 
-    return buffer.toCharArray();
+    return buffer.toString().toCharArray();
   }
 }
index a456762929b046544ecc61ab63aa12b86fa8882b..9e5e648bdefbc1182806d4aba045ccf76fb4d098 100644 (file)
@@ -24,6 +24,7 @@
     <orderEntry type="library" name="batik" level="project" />
     <orderEntry type="library" name="xmlgraphics-commons" level="project" />
     <orderEntry type="library" name="xml-apis-ext" level="project" />
+    <orderEntry type="library" name="Guava" level="project" />
   </component>
   <component name="copyright">
     <Base>
index 3ce67acfeeaa8c9fe6cab39efb2e72d5fd3d8a9f..11498dadb580dcfda63c8a3f3545599cf6de048b 100644 (file)
@@ -19,6 +19,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
 import com.intellij.execution.ExecutionException;
+import com.intellij.execution.process.ProcessInfo;
 import com.intellij.openapi.actionSystem.AnAction;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -29,8 +30,7 @@ import com.intellij.openapi.projectRoots.Sdk;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.ui.SelectFromListDialog;
 import com.jetbrains.python.PythonHelpersLocator;
-import com.jetbrains.python.internal.ProcessUtils;
-import com.jetbrains.python.internal.PyProcessInfo;
+import com.intellij.execution.process.ProcessUtils;
 import com.jetbrains.python.sdk.PythonSdkType;
 import org.jetbrains.annotations.NotNull;
 
@@ -63,13 +63,13 @@ public class PyAttachToProcessAction extends AnAction {
     final SelectFromListDialog selectDialog =
       new SelectFromListDialog(project, pythonProcessesList(), new SelectFromListDialog.ToStringAspect() {
         public String getToStirng(Object obj) {
-          PyProcessInfo info = (PyProcessInfo)obj;
+          ProcessInfo info = (ProcessInfo)obj;
 
           return info.getPid() + " " + info.getArgs();
         }
       }, "Select Python Process", ListSelectionModel.SINGLE_SELECTION);
     if (selectDialog.showAndGet()) {
-      PyProcessInfo process = (PyProcessInfo)selectDialog.getSelection()[0];
+      ProcessInfo process = (ProcessInfo)selectDialog.getSelection()[0];
 
       PyAttachToProcessDebugRunner runner =
         new PyAttachToProcessDebugRunner(project, process.getPid(), sdk.getHomePath());
@@ -84,13 +84,13 @@ public class PyAttachToProcessAction extends AnAction {
     }
   }
 
-  private static PyProcessInfo[] pythonProcessesList() {
-    PyProcessInfo[] list = ProcessUtils.getProcessList(PythonHelpersLocator.getHelpersRoot().getAbsolutePath()).getProcessList();
-    return FluentIterable.from(Lists.newArrayList(list)).filter(new Predicate<PyProcessInfo>() {
+  private static ProcessInfo[] pythonProcessesList() {
+    ProcessInfo[] list = ProcessUtils.getProcessList(PythonHelpersLocator.getHelpersRoot().getAbsolutePath()).getProcessList();
+    return FluentIterable.from(Lists.newArrayList(list)).filter(new Predicate<ProcessInfo>() {
       @Override
-      public boolean apply(PyProcessInfo input) {
+      public boolean apply(ProcessInfo input) {
         return input.getCommand().toLowerCase().contains("python");
       }
-    }).toArray(PyProcessInfo.class);
+    }).toArray(ProcessInfo.class);
   }
 }