Search in sources :

Example 81 with PsiClass

use of com.intellij.psi.PsiClass in project smali by JesusFreke.

the class SmaliClassTest method testGetSuperclassForInterface.

public void testGetSuperclassForInterface() {
    myFixture.addFileToProject("iface.smali", ".class public interface Liface; .super Ljava/lang/Object;");
    SmaliFile file = (SmaliFile) myFixture.addFileToProject("blah.smali", ".class public interface Lblah; .super Ljava/lang/Object; .implements Liface;");
    SmaliClass smaliClass = file.getPsiClass();
    Assert.assertEquals("blah", smaliClass.getQualifiedName());
    PsiClass superClass = smaliClass.getSuperClass();
    Assert.assertNotNull(superClass);
    Assert.assertEquals("java.lang.Object", smaliClass.getSuperClass().getQualifiedName());
    Assert.assertEquals(2, smaliClass.getSupers().length);
    Assert.assertEquals("java.lang.Object", smaliClass.getSupers()[0].getQualifiedName());
    Assert.assertEquals("iface", smaliClass.getSupers()[1].getQualifiedName());
    Assert.assertEquals(1, smaliClass.getSuperTypes().length);
    Assert.assertEquals("iface", smaliClass.getSuperTypes()[0].getCanonicalText());
    Assert.assertEquals(1, smaliClass.getInterfaces().length);
    Assert.assertEquals("iface", smaliClass.getInterfaces()[0].getQualifiedName());
}
Also used : SmaliFile(org.jf.smalidea.psi.impl.SmaliFile) SmaliClass(org.jf.smalidea.psi.impl.SmaliClass) PsiClass(com.intellij.psi.PsiClass)

Example 82 with PsiClass

use of com.intellij.psi.PsiClass in project smali by JesusFreke.

the class SmaliFieldReference method getContainingClass.

@Nullable
public PsiClass getContainingClass() {
    SmaliClassTypeElement containingClassReference = getContainingType();
    if (containingClassReference == null) {
        return null;
    }
    PsiClass containingClass = containingClassReference.resolve();
    if (containingClass == null) {
        return null;
    }
    return containingClass;
}
Also used : PsiClass(com.intellij.psi.PsiClass) Nullable(org.jetbrains.annotations.Nullable)

Example 83 with PsiClass

use of com.intellij.psi.PsiClass in project smali by JesusFreke.

the class SmaliImplementsExtendsTest method testNormalClass.

public void testNormalClass() {
    myFixture.addFileToProject("my/pkg/base.smali", ".class public Lmy/pkg/base; .super Ljava/lang/Object;");
    myFixture.addFileToProject("my/pkg/iface.smali", ".class public Lmy/pkg/iface; .super Ljava/lang/Object;");
    myFixture.addFileToProject("my/pkg/iface2.smali", ".class public Lmy/pkg/iface2; .super Ljava/lang/Object;");
    SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", ".class public Lmy/pkg/blah; .implements Lmy/pkg/iface; .super Lmy/pkg/base; " + ".implements Lmy/pkg/iface2;");
    SmaliClass smaliClass = file.getPsiClass();
    SmaliExtendsList extendsList = smaliClass.getExtendsList();
    Assert.assertEquals(1, extendsList.getReferencedTypes().length);
    Assert.assertEquals("my.pkg.base", extendsList.getReferencedTypes()[0].getCanonicalText());
    Assert.assertEquals(1, extendsList.getReferenceNames().length);
    Assert.assertEquals("my.pkg.base", extendsList.getReferenceNames()[0]);
    Assert.assertEquals(1, smaliClass.getExtendsListTypes().length);
    Assert.assertEquals("my.pkg.base", smaliClass.getExtendsListTypes()[0].getCanonicalText());
    PsiClass resolvedSuper = extendsList.getReferencedTypes()[0].resolve();
    Assert.assertNotNull(resolvedSuper);
    Assert.assertEquals("my.pkg.base", resolvedSuper.getQualifiedName());
    SmaliImplementsList implementsList = smaliClass.getImplementsList();
    Assert.assertEquals(2, implementsList.getReferencedTypes().length);
    Assert.assertEquals("my.pkg.iface", implementsList.getReferencedTypes()[0].getCanonicalText());
    Assert.assertEquals("my.pkg.iface2", implementsList.getReferencedTypes()[1].getCanonicalText());
    Assert.assertEquals(2, implementsList.getReferenceNames().length);
    Assert.assertEquals("my.pkg.iface", implementsList.getReferenceNames()[0]);
    Assert.assertEquals("my.pkg.iface2", implementsList.getReferenceNames()[1]);
    Assert.assertEquals(2, smaliClass.getImplementsListTypes().length);
    Assert.assertEquals("my.pkg.iface", smaliClass.getImplementsListTypes()[0].getCanonicalText());
    Assert.assertEquals("my.pkg.iface2", smaliClass.getImplementsListTypes()[1].getCanonicalText());
    PsiClass resolvedInterface = implementsList.getReferencedTypes()[0].resolve();
    Assert.assertNotNull(resolvedInterface);
    Assert.assertEquals("my.pkg.iface", resolvedInterface.getQualifiedName());
    resolvedInterface = implementsList.getReferencedTypes()[1].resolve();
    Assert.assertNotNull(resolvedInterface);
    Assert.assertEquals("my.pkg.iface2", resolvedInterface.getQualifiedName());
}
Also used : SmaliFile(org.jf.smalidea.psi.impl.SmaliFile) SmaliClass(org.jf.smalidea.psi.impl.SmaliClass) PsiClass(com.intellij.psi.PsiClass) SmaliExtendsList(org.jf.smalidea.psi.impl.SmaliExtendsList) SmaliImplementsList(org.jf.smalidea.psi.impl.SmaliImplementsList)

Example 84 with PsiClass

use of com.intellij.psi.PsiClass in project smali by JesusFreke.

the class SmaliImplementsExtendsTest method testInterface.

public void testInterface() {
    myFixture.addFileToProject("my/pkg/iface.smali", ".class public Lmy/pkg/iface; .super Ljava/lang/Object;");
    myFixture.addFileToProject("my/pkg/iface2.smali", ".class public Lmy/pkg/iface2; .super Ljava/lang/Object;");
    SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", ".class public interface Lmy/pkg/blah; .implements Lmy/pkg/iface; .super Ljava/lang/Object; " + ".implements Lmy/pkg/iface2;");
    SmaliClass smaliClass = file.getPsiClass();
    SmaliExtendsList extendsList = smaliClass.getExtendsList();
    Assert.assertEquals(2, extendsList.getReferencedTypes().length);
    Assert.assertEquals("my.pkg.iface", extendsList.getReferencedTypes()[0].getCanonicalText());
    Assert.assertEquals("my.pkg.iface2", extendsList.getReferencedTypes()[1].getCanonicalText());
    Assert.assertEquals(2, extendsList.getReferenceNames().length);
    Assert.assertEquals("my.pkg.iface", extendsList.getReferenceNames()[0]);
    Assert.assertEquals("my.pkg.iface2", extendsList.getReferenceNames()[1]);
    Assert.assertEquals(2, smaliClass.getExtendsListTypes().length);
    Assert.assertEquals("my.pkg.iface", smaliClass.getExtendsListTypes()[0].getCanonicalText());
    Assert.assertEquals("my.pkg.iface2", smaliClass.getExtendsListTypes()[1].getCanonicalText());
    PsiClass resolvedInterface = extendsList.getReferencedTypes()[0].resolve();
    Assert.assertNotNull(resolvedInterface);
    Assert.assertEquals("my.pkg.iface", resolvedInterface.getQualifiedName());
    resolvedInterface = extendsList.getReferencedTypes()[1].resolve();
    Assert.assertNotNull(resolvedInterface);
    Assert.assertEquals("my.pkg.iface2", resolvedInterface.getQualifiedName());
    SmaliImplementsList implementsList = smaliClass.getImplementsList();
    Assert.assertEquals(0, implementsList.getReferencedTypes().length);
    Assert.assertEquals(0, implementsList.getReferenceNames().length);
    Assert.assertEquals(0, smaliClass.getImplementsListTypes().length);
}
Also used : SmaliFile(org.jf.smalidea.psi.impl.SmaliFile) SmaliClass(org.jf.smalidea.psi.impl.SmaliClass) PsiClass(com.intellij.psi.PsiClass) SmaliExtendsList(org.jf.smalidea.psi.impl.SmaliExtendsList) SmaliImplementsList(org.jf.smalidea.psi.impl.SmaliImplementsList)

Example 85 with PsiClass

use of com.intellij.psi.PsiClass in project smali by JesusFreke.

the class ClassMoveTest method doMove.

private void doMove(String oldQualifiedName, final String newPackage) throws Exception {
    final PsiClass testClass = myJavaFacade.findClass(oldQualifiedName, GlobalSearchScope.allScope(getProject()));
    final List<VirtualFile> contentSourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(getProject());
    new MoveClassesOrPackagesProcessor(getProject(), new PsiClass[] { testClass }, new AutocreatingSingleSourceRootMoveDestination(new PackageWrapper(getPsiManager(), newPackage), contentSourceRoots.get(0)), false, false, null).run();
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) PsiClass(com.intellij.psi.PsiClass) AutocreatingSingleSourceRootMoveDestination(com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination) MoveClassesOrPackagesProcessor(com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesProcessor) PackageWrapper(com.intellij.refactoring.PackageWrapper)

Aggregations

PsiClass (com.intellij.psi.PsiClass)598 PsiElement (com.intellij.psi.PsiElement)113 PsiMethod (com.intellij.psi.PsiMethod)97 Nullable (org.jetbrains.annotations.Nullable)75 NotNull (org.jetbrains.annotations.NotNull)60 Project (com.intellij.openapi.project.Project)59 GlobalSearchScope (com.intellij.psi.search.GlobalSearchScope)57 Module (com.intellij.openapi.module.Module)55 PsiFile (com.intellij.psi.PsiFile)49 VirtualFile (com.intellij.openapi.vfs.VirtualFile)47 ArrayList (java.util.ArrayList)37 PsiField (com.intellij.psi.PsiField)36 JavaPsiFacade (com.intellij.psi.JavaPsiFacade)25 Location (com.intellij.execution.Location)20 File (java.io.File)16 HashSet (java.util.HashSet)16 PsiClassType (com.intellij.psi.PsiClassType)15 PsiPackage (com.intellij.psi.PsiPackage)15 List (java.util.List)15 PsiType (com.intellij.psi.PsiType)13