diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java index 00e713335250..085669d3bf42 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java @@ -335,9 +335,9 @@ public abstract class Breakpoint
implements } } - if (isClassFiltersEnabled()) { - String typeName = calculateEventClass(context, event); - if (!typeMatchesClassFilters(typeName)) return false; + if (isClassFiltersEnabled() && + !typeMatchesClassFilters(calculateEventClass(context, event), getClassFilters(), getClassExclusionFilters())) { + return false; } if (!isConditionEnabled() || getCondition().getText().isEmpty()) { @@ -394,12 +394,12 @@ public abstract class Breakpoint
implements return event.location().declaringType().name(); } - private boolean typeMatchesClassFilters(@Nullable String typeName) { + protected static boolean typeMatchesClassFilters(@Nullable String typeName, ClassFilter[] includeFilters, ClassFilter[] exludeFilters) { if (typeName == null) { return true; } boolean matches = false, hasEnabled = false; - for (ClassFilter classFilter : getClassFilters()) { + for (ClassFilter classFilter : includeFilters) { if (classFilter.isEnabled()) { hasEnabled = true; if (classFilter.matches(typeName)) { @@ -408,10 +408,10 @@ public abstract class Breakpoint
implements
}
}
}
- if(hasEnabled && !matches) {
+ if (hasEnabled && !matches) {
return false;
}
- for (ClassFilter classFilter : getClassExclusionFilters()) {
+ for (ClassFilter classFilter : exludeFilters) {
if (classFilter.isEnabled() && classFilter.matches(typeName)) {
return false;
}
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java
index f1d600a63e21..357b54ea99bf 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ import com.intellij.debugger.DebuggerManagerEx;
import com.intellij.debugger.SourcePosition;
import com.intellij.debugger.engine.*;
import com.intellij.debugger.engine.evaluation.EvaluateException;
+import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
import com.intellij.debugger.impl.DebuggerUtilsEx;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.application.ApplicationManager;
@@ -34,7 +35,10 @@ import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizerUtil;
import com.intellij.openapi.util.Key;
-import com.intellij.psi.*;
+import com.intellij.psi.CommonClassNames;
+import com.intellij.psi.JavaPsiFacade;
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.xdebugger.breakpoints.XBreakpoint;
import com.sun.jdi.AbsentInformationException;
@@ -202,6 +206,19 @@ public class ExceptionBreakpoint extends Breakpoint