aboutsummaryrefslogtreecommitdiff
path: root/smalidea/src/main/java/org/jf/smalidea/dexlib/analysis/SmalideaClassProvider.java
blob: e886a290cc2523a979cdd8574e10bd2b5da83cb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package org.jf.smalidea.dexlib.analysis;

import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.impl.ResolveScopeManager;
import org.jf.dexlib2.analysis.ClassProvider;
import org.jf.dexlib2.iface.ClassDef;
import org.jf.smalidea.dexlib.SmalideaClassDef;
import org.jf.smalidea.util.NameUtils;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class SmalideaClassProvider implements ClassProvider {
    private final Project project;
    private final VirtualFile file;

    public SmalideaClassProvider(@Nonnull Project project, @Nonnull VirtualFile file) {
        this.project = project;
        this.file = file;
    }

    @Nullable @Override public ClassDef getClassDef(String type) {
        ResolveScopeManager manager = ResolveScopeManager.getInstance(project);

        JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
        PsiClass psiClass = facade.findClass(NameUtils.smaliToJavaType(type),
                manager.getDefaultResolveScope(file));
        if (psiClass != null) {
            return new SmalideaClassDef(psiClass);
        }
        return null;
    }
}