Search in sources :

Example 11 with ClassFilter

use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.

the class InstanceFilter method createClassFilters.

public static ClassFilter[] createClassFilters(InstanceFilter[] filters) {
    ClassFilter[] cFilters = new ClassFilter[filters.length];
    for (int i = 0; i < cFilters.length; i++) {
        InstanceFilter instanceFilter = filters[i];
        ClassFilter classFilter = new ClassFilter();
        classFilter.setEnabled(instanceFilter.isEnabled());
        classFilter.setPattern(Long.toString(instanceFilter.getId()));
        cFilters[i] = classFilter;
    }
    return cFilters;
}
Also used : ClassFilter(com.intellij.ui.classFilter.ClassFilter)

Example 12 with ClassFilter

use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.

the class AddSteppingFilterAction method actionPerformed.

public void actionPerformed(final AnActionEvent e) {
    final DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(e.getDataContext());
    DebugProcessImpl process = debuggerContext.getDebugProcess();
    if (process == null) {
        return;
    }
    final StackFrameProxyImpl proxy = PopFrameAction.getStackFrameProxy(e);
    process.getManagerThread().schedule(new DebuggerCommandImpl() {

        protected void action() throws Exception {
            final String name = getClassName(proxy != null ? proxy : debuggerContext.getFrameProxy());
            if (name == null) {
                return;
            }
            final Project project = e.getData(CommonDataKeys.PROJECT);
            ApplicationManager.getApplication().invokeLater(() -> {
                String filter = Messages.showInputDialog(project, "", "Add Stepping Filter", null, name, null);
                if (filter != null) {
                    ClassFilter[] newFilters = ArrayUtil.append(DebuggerSettings.getInstance().getSteppingFilters(), new ClassFilter(filter));
                    DebuggerSettings.getInstance().setSteppingFilters(newFilters);
                }
            });
        }
    });
}
Also used : StackFrameProxyImpl(com.intellij.debugger.jdi.StackFrameProxyImpl) Project(com.intellij.openapi.project.Project) DebuggerCommandImpl(com.intellij.debugger.engine.events.DebuggerCommandImpl) DebugProcessImpl(com.intellij.debugger.engine.DebugProcessImpl) ClassFilter(com.intellij.ui.classFilter.ClassFilter) DebuggerContextImpl(com.intellij.debugger.impl.DebuggerContextImpl) EvaluateException(com.intellij.debugger.engine.evaluation.EvaluateException)

Example 13 with ClassFilter

use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.

the class DebuggerUtilsEx method writeFilters.

public static void writeFilters(Element parentNode, @NonNls String tagName, ClassFilter[] filters) throws WriteExternalException {
    for (ClassFilter filter : filters) {
        Element element = new Element(tagName);
        parentNode.addContent(element);
        DefaultJDOMExternalizer.writeExternal(filter, element);
    }
}
Also used : ClassFilter(com.intellij.ui.classFilter.ClassFilter) Element(org.jdom.Element)

Example 14 with ClassFilter

use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.

the class RequestManagerImpl method addLocatableRequest.

private void addLocatableRequest(FilteredRequestor requestor, EventRequest request) {
    if (DebuggerSettings.SUSPEND_ALL.equals(requestor.getSuspendPolicy())) {
        request.setSuspendPolicy(EventRequest.SUSPEND_ALL);
    } else {
        //when requestor.SUSPEND_POLICY == SUSPEND_NONE
        //we should pause thread in order to evaluate conditions
        request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
    }
    // count filter has to be applied manually if condition is specified
    if (requestor.isCountFilterEnabled() && !requestor.isConditionEnabled()) {
        request.addCountFilter(requestor.getCountFilter());
    }
    if (requestor.isClassFiltersEnabled() && !(request instanceof BreakpointRequest)) /*no built-in class filters support for breakpoint requests*/
    {
        ClassFilter[] classFilters = requestor.getClassFilters();
        if (DebuggerUtilsEx.getEnabledNumber(classFilters) == 1) {
            for (final ClassFilter filter : classFilters) {
                if (!filter.isEnabled()) {
                    continue;
                }
                final JVMName jvmClassName = ApplicationManager.getApplication().runReadAction(new Computable<JVMName>() {

                    public JVMName compute() {
                        PsiClass psiClass = DebuggerUtils.findClass(filter.getPattern(), myDebugProcess.getProject(), myDebugProcess.getSearchScope());
                        if (psiClass == null) {
                            return null;
                        }
                        return JVMNameUtil.getJVMQualifiedName(psiClass);
                    }
                });
                String pattern = filter.getPattern();
                try {
                    if (jvmClassName != null) {
                        pattern = jvmClassName.getName(myDebugProcess);
                    }
                } catch (EvaluateException ignored) {
                }
                addClassFilter(request, pattern);
                // adding more than one inclusion filter does not work, only events that satisfy ALL filters are placed in the event queue.
                break;
            }
        }
        for (ClassFilter filter : requestor.getClassExclusionFilters()) {
            if (filter.isEnabled()) {
                addClassExclusionFilter(request, filter.getPattern());
            }
        }
    }
    registerRequestInternal(requestor, request);
}
Also used : EvaluateException(com.intellij.debugger.engine.evaluation.EvaluateException) ClassFilter(com.intellij.ui.classFilter.ClassFilter) PsiClass(com.intellij.psi.PsiClass)

Example 15 with ClassFilter

use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.

the class FilteredRequestorImpl method readExternal.

public void readExternal(Element parentNode) throws InvalidDataException {
    DefaultJDOMExternalizer.readExternal(this, parentNode);
    if (DebuggerSettings.SUSPEND_NONE.equals(SUSPEND_POLICY)) {
        // compatibility with older format
        SUSPEND = false;
        SUSPEND_POLICY = DebuggerSettings.SUSPEND_ALL;
    }
    String condition = JDOMExternalizerUtil.readField(parentNode, CONDITION_OPTION_NAME);
    if (condition != null) {
        setCondition(new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, condition));
    }
    myClassFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(FILTER_OPTION_NAME));
    myClassExclusionFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(EXCLUSION_FILTER_OPTION_NAME));
    final ClassFilter[] instanceFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(INSTANCE_ID_OPTION_NAME));
    final List<InstanceFilter> iFilters = new ArrayList<>(instanceFilters.length);
    for (ClassFilter instanceFilter : instanceFilters) {
        try {
            iFilters.add(InstanceFilter.create(instanceFilter));
        } catch (Exception ignored) {
        }
    }
    myInstanceFilters = iFilters.isEmpty() ? InstanceFilter.EMPTY_ARRAY : iFilters.toArray(new InstanceFilter[iFilters.size()]);
}
Also used : InstanceFilter(com.intellij.debugger.InstanceFilter) ClassFilter(com.intellij.ui.classFilter.ClassFilter) ArrayList(java.util.ArrayList) TextWithImportsImpl(com.intellij.debugger.engine.evaluation.TextWithImportsImpl)

Aggregations

ClassFilter (com.intellij.ui.classFilter.ClassFilter)18 ArrayList (java.util.ArrayList)6 Project (com.intellij.openapi.project.Project)3 NotNull (org.jetbrains.annotations.NotNull)3 EvaluateException (com.intellij.debugger.engine.evaluation.EvaluateException)2 DebuggerSettings (com.intellij.debugger.settings.DebuggerSettings)2 PsiClass (com.intellij.psi.PsiClass)2 DebuggerClassFilterProvider (com.intellij.ui.classFilter.DebuggerClassFilterProvider)2 XBreakpoint (com.intellij.xdebugger.breakpoints.XBreakpoint)2 Element (org.jdom.Element)2 CoverageRunner (com.intellij.coverage.CoverageRunner)1 IDEACoverageRunner (com.intellij.coverage.IDEACoverageRunner)1 JavaCoverageRunner (com.intellij.coverage.JavaCoverageRunner)1 InstanceFilter (com.intellij.debugger.InstanceFilter)1 DebugProcessImpl (com.intellij.debugger.engine.DebugProcessImpl)1 TextWithImportsImpl (com.intellij.debugger.engine.evaluation.TextWithImportsImpl)1 DebuggerCommandImpl (com.intellij.debugger.engine.events.DebuggerCommandImpl)1 DebuggerContextImpl (com.intellij.debugger.impl.DebuggerContextImpl)1 StackFrameProxyImpl (com.intellij.debugger.jdi.StackFrameProxyImpl)1 JavaCoverageEnabledConfiguration (com.intellij.execution.configurations.coverage.JavaCoverageEnabledConfiguration)1