From 09e304c55c038c87927cb120b80d2970e5a22a3b Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 19 Jun 2014 03:46:13 +0400 Subject: [PATCH] PY-8427 Behave BDD support PY-4186 Lettuce BDD tool support Initial extension point impl --- .../src/com/jetbrains/python/packaging/PyPackageManager.java | 2 ++ .../src/com/jetbrains/python/packaging/PyPackageManagers.java | 4 ++++ python/psi-api/src/com/jetbrains/python/psi/PyFile.java | 1 + .../psi-api/src/com/jetbrains/python/psi/impl/PyPsiUtils.java | 1 + .../com/jetbrains/python/packaging/PyPackageManagerImpl.java | 1 + .../com/jetbrains/python/packaging/PyPackageManagersImpl.java | 2 ++ python/src/com/jetbrains/python/psi/impl/PyFileImpl.java | 1 + 7 files changed, 12 insertions(+) diff --git a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManager.java b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManager.java index df6b91b1bfe8..4999b1bb519b 100644 --- a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManager.java +++ b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManager.java @@ -17,6 +17,7 @@ package com.jetbrains.python.packaging; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; +import org.jetbrains.annotations.Nullable; import java.awt.*; @@ -39,6 +40,7 @@ public abstract class PyPackageManager { public abstract void showInstallationError(Project project, String title, String description); public abstract void showInstallationError(Component owner, String title, String description); public abstract void refresh(); + @Nullable public abstract PyPackage findPackage(String name) throws PyExternalProcessException; } diff --git a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java index 796bc47286ac..9f598748aa7b 100644 --- a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java +++ b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java @@ -18,6 +18,7 @@ package com.jetbrains.python.packaging; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.projectRoots.Sdk; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -26,10 +27,13 @@ import java.util.List; * @author yole */ public abstract class PyPackageManagers { + + @NotNull public static PyPackageManagers getInstance() { return ServiceManager.getService(PyPackageManagers.class); } + @NotNull public abstract PyPackageManager forSdk(Sdk sdk); /** diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyFile.java b/python/psi-api/src/com/jetbrains/python/psi/PyFile.java index 1786b934159b..48d1b50b5800 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyFile.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyFile.java @@ -27,6 +27,7 @@ public interface PyFile extends PyElement, PsiFile, PyDocStringOwner, ScopeOwner List getTopLevelClasses(); + @NotNull List getTopLevelFunctions(); List getTopLevelAttributes(); diff --git a/python/psi-api/src/com/jetbrains/python/psi/impl/PyPsiUtils.java b/python/psi-api/src/com/jetbrains/python/psi/impl/PyPsiUtils.java index b3a1134a2e03..f4f3a74f5a9f 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/impl/PyPsiUtils.java +++ b/python/psi-api/src/com/jetbrains/python/psi/impl/PyPsiUtils.java @@ -236,6 +236,7 @@ public class PyPsiUtils { } } + @NotNull static List collectStubChildren(U e, final StubElement stub, final IElementType elementType, final Class itemClass) { diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java index f8850376370a..a5961c4e3b8e 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java @@ -603,6 +603,7 @@ public class PyPackageManagerImpl extends PyPackageManager { return packages != null ? findPackageByName(name, packages) : null; } + @Nullable private static PyPackage findPackageByName(String name, List packages) { for (PyPackage pkg : packages) { if (name.equalsIgnoreCase(pkg.getName())) { diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java index 714bf8212b58..054e9e01d23f 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java @@ -17,6 +17,7 @@ package com.jetbrains.python.packaging; import com.intellij.openapi.module.Module; import com.intellij.openapi.projectRoots.Sdk; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -29,6 +30,7 @@ import java.util.Map; public class PyPackageManagersImpl extends PyPackageManagers { private final Map myInstances = new HashMap(); + @NotNull @Override public synchronized PyPackageManager forSdk(Sdk sdk) { final String name = sdk.getName(); diff --git a/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java b/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java index c723aedb6b0d..030fcfe3d7e5 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyFileImpl.java @@ -419,6 +419,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { return PyPsiUtils.collectStubChildren(this, this.getStub(), PyElementTypes.CLASS_DECLARATION, PyClass.class); } + @NotNull @Override public List getTopLevelFunctions() { return PyPsiUtils.collectStubChildren(this, this.getStub(), PyElementTypes.FUNCTION_DECLARATION, PyFunction.class);