From 37bb0a7861d22bbd4e1d28b7508885b913c63d0a Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Mar 2010 13:16:35 +0300 Subject: [PATCH] IDEA-52821: breakpoints are not activated in library sources that are not packed in a jar archive. --- .../ui/breakpoints/LineBreakpoint.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java index f7ca6e3b3f11..21a37e81eed7 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java @@ -34,10 +34,11 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Key; -import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.jsp.JspFile; @@ -187,23 +188,22 @@ public class LineBreakpoint extends BreakpointWithHighlighter { final SourcePosition position = getSourcePosition(); if (position != null) { final VirtualFile breakpointFile = position.getFile().getVirtualFile(); - if (breakpointFile != null) { - final Collection candidates = findClassFileCandidates(className, debugProcess.getSearchScope()); - if (!candidates.isEmpty()) { - for (VirtualFile classFile : candidates) { - if (breakpointFile.equals(classFile)) { - return true; - } + final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(myProject).getFileIndex(); + if (breakpointFile != null && fileIndex.isInSourceContent(breakpointFile)) { + // apply filtering to breakpoints from content sources only, not for sources attached to libraries + for (VirtualFile classFile : findClassCandidatesInSourceContent(className, debugProcess.getSearchScope(), fileIndex)) { + if (breakpointFile.equals(classFile)) { + return true; } - return false; } + return false; } } return true; } @NotNull - private Collection findClassFileCandidates(final String className, final GlobalSearchScope scope) { + private Collection findClassCandidatesInSourceContent(final String className, final GlobalSearchScope scope, final ProjectFileIndex fileIndex) { final int dollarIndex = className.indexOf("$"); final String topLevelClassName = dollarIndex >= 0? className.substring(0, dollarIndex) : className; return ApplicationManager.getApplication().runReadAction(new Computable>() { @@ -217,7 +217,7 @@ public class LineBreakpoint extends BreakpointWithHighlighter { final PsiFile psiFile = aClass.getContainingFile(); if (psiFile != null) { final VirtualFile vFile = psiFile.getVirtualFile(); - if (vFile != null && vFile.getFileSystem() instanceof LocalFileSystem) { + if (vFile != null && fileIndex.isInSourceContent(vFile)) { list.add(vFile); } } -- 2.32.0