Search in sources :

Example 26 with ReferenceType

use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.

the class PositionManagerImpl method getClassReferences.

private List<ReferenceType> getClassReferences(@NotNull final PsiClass psiClass, SourcePosition position) {
    ApplicationManager.getApplication().assertReadAccessAllowed();
    boolean isLocalOrAnonymous = false;
    int requiredDepth = 0;
    String className = JVMNameUtil.getNonAnonymousClassName(psiClass);
    if (className == null) {
        isLocalOrAnonymous = true;
        Pair<PsiClass, Integer> enclosing = getTopOrStaticEnclosingClass(psiClass);
        PsiClass topLevelClass = enclosing.first;
        if (topLevelClass != null) {
            final String parentClassName = JVMNameUtil.getNonAnonymousClassName(topLevelClass);
            if (parentClassName != null) {
                requiredDepth = enclosing.second;
                className = parentClassName;
            }
        } else {
            final StringBuilder sb = new StringBuilder();
            PsiTreeUtil.treeWalkUp(psiClass, null, (element, element2) -> {
                sb.append('\n').append(element);
                return true;
            });
            LOG.info("Local or anonymous class " + psiClass + " has no non-local parent, parents:" + sb);
        }
    }
    if (className == null) {
        return Collections.emptyList();
    }
    if (!isLocalOrAnonymous) {
        return myDebugProcess.getVirtualMachineProxy().classesByName(className);
    }
    // the name is a parent class for a local or anonymous class
    final List<ReferenceType> outers = myDebugProcess.getVirtualMachineProxy().classesByName(className);
    final List<ReferenceType> result = new ArrayList<>(outers.size());
    for (ReferenceType outer : outers) {
        final ReferenceType nested = findNested(outer, 0, psiClass, requiredDepth, position);
        if (nested != null) {
            result.add(nested);
        }
    }
    return result;
}
Also used : ReferenceType(com.sun.jdi.ReferenceType)

Example 27 with ReferenceType

use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.

the class ShowNewInstancesAction method getInstancesCount.

@Override
protected int getInstancesCount(AnActionEvent e) {
    ClassesTable.ReferenceCountProvider countProvider = e.getData(ClassesTable.REF_COUNT_PROVIDER_KEY);
    ReferenceType selectedClass = getSelectedClass(e);
    if (countProvider == null || selectedClass == null) {
        return -1;
    }
    return countProvider.getNewInstancesCount(selectedClass);
}
Also used : ClassesTable(com.intellij.debugger.memory.ui.ClassesTable) ReferenceType(com.sun.jdi.ReferenceType)

Example 28 with ReferenceType

use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.

the class TrackInstancesToggleAction method setSelected.

@Override
public void setSelected(AnActionEvent e, boolean state) {
    final ReferenceType selectedClass = getSelectedClass(e);
    final Project project = e.getProject();
    if (selectedClass != null && project != null && !project.isDisposed()) {
        InstancesTracker tracker = InstancesTracker.getInstance(project);
        boolean isAlreadyTracked = tracker.isTracked(selectedClass.name());
        if (isAlreadyTracked && !state) {
            tracker.remove(selectedClass.name());
        }
        if (!isAlreadyTracked && state) {
            tracker.add(selectedClass.name(), TrackingType.CREATION);
        }
    }
}
Also used : Project(com.intellij.openapi.project.Project) InstancesTracker(com.intellij.debugger.memory.component.InstancesTracker) ReferenceType(com.sun.jdi.ReferenceType)

Example 29 with ReferenceType

use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.

the class ClassesFilteredView method isShowNewInstancesEvent.

private boolean isShowNewInstancesEvent(@NotNull MouseEvent e) {
    final int col = myTable.columnAtPoint(e.getPoint());
    final int row = myTable.rowAtPoint(e.getPoint());
    if (col == -1 || row == -1 || myTable.convertColumnIndexToModel(col) != DIFF_COLUMN_INDEX) {
        return false;
    }
    final int modelRow = myTable.convertRowIndexToModel(row);
    final ReferenceType ref = (ReferenceType) myTable.getModel().getValueAt(modelRow, CLASSNAME_COLUMN_INDEX);
    final ConstructorInstancesTracker tracker = myConstructorTrackedClasses.getOrDefault(ref, null);
    return tracker != null && tracker.isReady() && tracker.getCount() > 0;
}
Also used : ConstructorInstancesTracker(com.intellij.debugger.memory.tracking.ConstructorInstancesTracker) ReferenceType(com.sun.jdi.ReferenceType)

Example 30 with ReferenceType

use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.

the class JumpToTypeSourceAction method getObjectType.

@Nullable
private static ReferenceType getObjectType(@NotNull ReferenceType ref) {
    if (!(ref instanceof ArrayType)) {
        return ref;
    }
    final String elementTypeName = ref.name().replace("[]", "");
    final VirtualMachine vm = ref.virtualMachine();
    final List<ReferenceType> referenceTypes = vm.classesByName(elementTypeName);
    if (referenceTypes.size() == 1) {
        return referenceTypes.get(0);
    }
    return null;
}
Also used : ArrayType(com.sun.jdi.ArrayType) ReferenceType(com.sun.jdi.ReferenceType) VirtualMachine(com.sun.jdi.VirtualMachine) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

ReferenceType (com.sun.jdi.ReferenceType)40 Nullable (org.jetbrains.annotations.Nullable)9 Project (com.intellij.openapi.project.Project)8 Location (com.sun.jdi.Location)5 ObjectReference (com.sun.jdi.ObjectReference)5 AbsentInformationException (com.sun.jdi.AbsentInformationException)4 Method (com.sun.jdi.Method)4 EvaluateException (com.intellij.debugger.engine.evaluation.EvaluateException)3 ClassesTable (com.intellij.debugger.memory.ui.ClassesTable)3 InstancesWindow (com.intellij.debugger.memory.ui.InstancesWindow)3 GlobalSearchScope (com.intellij.psi.search.GlobalSearchScope)3 XDebugSession (com.intellij.xdebugger.XDebugSession)3 SourcePosition (com.intellij.debugger.SourcePosition)2 DebugProcess (com.intellij.debugger.engine.DebugProcess)2 DebugProcessImpl (com.intellij.debugger.engine.DebugProcessImpl)2 InstancesTracker (com.intellij.debugger.memory.component.InstancesTracker)2 InstancesProvider (com.intellij.debugger.memory.utils.InstancesProvider)2 ClassPrepareRequestor (com.intellij.debugger.requests.ClassPrepareRequestor)2 AnActionEvent (com.intellij.openapi.actionSystem.AnActionEvent)2 PsiClass (com.intellij.psi.PsiClass)2