diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/CompositeBuildTarget.java b/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/CompositeBuildTarget.java index d793eebe1014..46fdb2a75163 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/CompositeBuildTarget.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/CompositeBuildTarget.java @@ -41,7 +41,6 @@ public class CompositeBuildTarget extends CompositeGenerator { final String depends, @Nullable String jarPath) { final File moduleBaseDir = parameters.getChunk().getBaseDir(); - final Module containingModule = parameters.getContainingModule(); final Target buildTarget = new Target(targetName, depends, targetDescription, null); final BuildConfiguration buildConfiguration = parameters.getBuildConfiguration(); diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/DefaultExplodedAndJarBuildGenerator.java b/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/DefaultExplodedAndJarBuildGenerator.java index ac490077f162..e27520f60659 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/DefaultExplodedAndJarBuildGenerator.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/j2ee/DefaultExplodedAndJarBuildGenerator.java @@ -21,7 +21,6 @@ import com.intellij.compiler.make.ExplodedAndJarBuildGenerator; import com.intellij.compiler.make.MakeUtil; import com.intellij.openapi.compiler.make.*; import com.intellij.openapi.module.Module; -import com.intellij.openapi.util.Ref; import com.intellij.util.SmartList; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -105,58 +104,4 @@ public class DefaultExplodedAndJarBuildGenerator extends ExplodedAndJarBuildGene } - - @NotNull - public ZipFileSet[] generateTagsForJarTarget(@NotNull final BuildInstruction instruction, @NotNull final ExplodedAndJarTargetParameters parameters, - final Ref tempDirUsed) - throws Exception { - final List zipFileSetTags = new SmartList(); - final String tempDirProperty = BuildProperties.getTempDirForModuleProperty(parameters.getContainingModule().getName()); - final File moduleBaseDir = parameters.getChunk().getBaseDir(); - instruction.accept(new BuildInstructionVisitor() { - public boolean visitFileCopyInstruction(FileCopyInstruction instruction) throws RuntimeException { - if (instruction.isExternalDependencyInstruction()) return true; - final File sourceFile = instruction.getFile(); - final Module instructionModule = instruction.getModule(); - final String sourceLocation = GenerationUtils.toRelativePath(sourceFile.getPath(), moduleBaseDir, instructionModule, - parameters.getGenerationOptions()); - final ZipFileSet fileSet = new ZipFileSet(sourceLocation, instruction.getOutputRelativePath(), instruction.isDirectory()); - - zipFileSetTags.add(fileSet); - return true; - } - - public boolean visitJarAndCopyBuildInstruction(JarAndCopyBuildInstruction instruction) throws RuntimeException { - if (instruction.isExternalDependencyInstruction()) return true; - tempDirUsed.set(true); - final String jarName = new File(instruction.getOutputRelativePath()).getName(); - final String destJarPath = BuildProperties.propertyRef(tempDirProperty)+"/"+jarName; - - zipFileSetTags.add(new ZipFileSet(destJarPath, instruction.getOutputRelativePath(), false)); - return true; - } - - }); - return zipFileSetTags.toArray(new ZipFileSet[zipFileSetTags.size()]); - } - - @NotNull - public Tag[] generateJarBuildPrepareTags(@NotNull final BuildInstruction instruction, @NotNull final ExplodedAndJarTargetParameters parameters) - throws Exception { - final List prepareTags = new SmartList(); - final String tempDirProperty = BuildProperties.getTempDirForModuleProperty(parameters.getContainingModule().getName()); - final File moduleBaseDir = parameters.getChunk().getBaseDir(); - instruction.accept(new BuildInstructionVisitor() { - - public boolean visitJarAndCopyBuildInstruction(JarAndCopyBuildInstruction instruction) throws RuntimeException { - if (instruction.isExternalDependencyInstruction()) return true; - final String jarName = new File(instruction.getOutputRelativePath()).getName(); - final String destJarPath = BuildProperties.propertyRef(tempDirProperty)+"/"+jarName; - prepareTags.add(generateJarTag(instruction, destJarPath, moduleBaseDir, parameters.getGenerationOptions())); - return true; - } - - }); - return prepareTags.toArray(new Tag[prepareTags.size()]); - } } diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java index cce777214891..f63641d9a7f6 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -478,7 +478,8 @@ public class CompileDriver { // in case another project was opened in the frame while the compiler was working (See SCR# 28591) statusBar.setInfo(statusMessage); if (duration > ONE_MINUTE_MS) { - ToolWindowManager.getInstance(myProject).notifyByBalloon(ToolWindowId.MESSAGES_WINDOW, MessageType.INFO, statusMessage); + final MessageType messageType = errorCount > 0 ? MessageType.ERROR : warningCount > 0 ? MessageType.WARNING : MessageType.INFO; + ToolWindowManager.getInstance(myProject).notifyByBalloon(ToolWindowId.MESSAGES_WINDOW, messageType, statusMessage); } } if (_status != ExitStatus.UP_TO_DATE && compileContext.getMessageCount(null) > 0) { diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java b/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java index bf8174d7f8ea..c43bbd4bc3fb 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java @@ -169,18 +169,22 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent { if (_forceCompile || pathsToRecompile != null && !pathsToRecompile.isEmpty()) { while (scopeSrcIterator.hasNext()) { final VirtualFile file = scopeSrcIterator.next(); - if (!file.isValid() || configuration.isExcludedFromCompilation(file) || !compiler.isCompilableFile(file, context)) { + if (!file.isValid()) { continue; } final int fileId = getFileId(file); if (_forceCompile) { - toCompile.add(file); - if (pathsToRecompile == null || !pathsToRecompile.contains(fileId)) { - addSourceForRecompilation(projectId, file, null); + if (compiler.isCompilableFile(file, context) && !configuration.isExcludedFromCompilation(file)) { + toCompile.add(file); + if (pathsToRecompile == null || !pathsToRecompile.contains(fileId)) { + addSourceForRecompilation(projectId, file, null); + } } } else if (pathsToRecompile.contains(fileId)) { - toCompile.add(file); + if (compiler.isCompilableFile(file, context) && !configuration.isExcludedFromCompilation(file)) { + toCompile.add(file); + } } } } diff --git a/java/compiler/impl/src/com/intellij/compiler/make/ExplodedAndJarBuildGenerator.java b/java/compiler/impl/src/com/intellij/compiler/make/ExplodedAndJarBuildGenerator.java index 0fe4aa104d7a..a4e462a14c3d 100644 --- a/java/compiler/impl/src/com/intellij/compiler/make/ExplodedAndJarBuildGenerator.java +++ b/java/compiler/impl/src/com/intellij/compiler/make/ExplodedAndJarBuildGenerator.java @@ -37,15 +37,4 @@ public abstract class ExplodedAndJarBuildGenerator { return null; } - @Nullable - public ZipFileSet[] generateTagsForJarTarget(@NotNull BuildInstruction instruction, @NotNull ExplodedAndJarTargetParameters parameters, - final Ref tempDirUsed) throws Exception { - return null; - } - - @Nullable - public Tag[] generateJarBuildPrepareTags(@NotNull BuildInstruction instruction, @NotNull ExplodedAndJarTargetParameters parameters) throws Exception { - return null; - } - } diff --git a/java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipantBase.java b/java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipantBase.java index 7511a6698a82..909800187653 100644 --- a/java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipantBase.java +++ b/java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipantBase.java @@ -56,22 +56,7 @@ public abstract class BuildParticipantBase extends BuildParticipant { final ConfigFile[] deploymentDescriptors = getDeploymentDescriptors(); ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { - for (ConfigFile descriptor : deploymentDescriptors) { - VirtualFile virtualFile = descriptor.getVirtualFile(); - if (virtualFile != null) { - ConfigFileMetaData metaData = descriptor.getMetaData(); - final File file = VfsUtil.virtualToIoFile(virtualFile); - final String fileName; - if (metaData.isFileNameFixed()) { - fileName = metaData.getFileName(); - } - else { - fileName = virtualFile.getName(); - } - instructions.addFileCopyInstruction(file, false, myModule, metaData.getDirectoryPath() + "/" + fileName, null); - } - - } + registerDescriptorCopyingInstructions(BuildParticipantBase.this.myModule, deploymentDescriptors, instructions); final CustomConfigFile[] customDescriptors = getCustomDescriptors(); @@ -87,6 +72,25 @@ public abstract class BuildParticipantBase extends BuildParticipant { }); } + public static void registerDescriptorCopyingInstructions(Module module, ConfigFile[] deploymentDescriptors, BuildRecipe instructions) { + for (ConfigFile descriptor : deploymentDescriptors) { + VirtualFile virtualFile = descriptor.getVirtualFile(); + if (virtualFile != null) { + ConfigFileMetaData metaData = descriptor.getMetaData(); + final File file = VfsUtil.virtualToIoFile(virtualFile); + final String fileName; + if (metaData.isFileNameFixed()) { + fileName = metaData.getFileName(); + } + else { + fileName = virtualFile.getName(); + } + instructions.addFileCopyInstruction(file, false, module, metaData.getDirectoryPath() + "/" + fileName, null); + } + + } + } + protected CustomConfigFile[] getCustomDescriptors() { return CustomConfigFile.EMPTY_ARRAY; } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 478dc3bd8065..5a61e615206f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -46,8 +46,11 @@ import com.intellij.execution.CantRunException; import com.intellij.execution.ExecutionException; import com.intellij.execution.ExecutionResult; import com.intellij.execution.Executor; +import com.intellij.execution.configurations.CommandLineState; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.configurations.RunProfileState; +import com.intellij.execution.filters.ExceptionFilter; +import com.intellij.execution.filters.TextConsoleBuilder; import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.process.ProcessListener; @@ -1621,6 +1624,12 @@ public abstract class DebugProcessImpl implements DebugProcess { try { synchronized (myProcessListeners) { + if (state instanceof CommandLineState) { + final TextConsoleBuilder consoleBuilder = ((CommandLineState)state).getConsoleBuilder(); + if (consoleBuilder != null) { + consoleBuilder.addFilter(new ExceptionFilter(session.getSearchScope())); + } + } myExecutionResult = state.execute(executor, runner); if (myExecutionResult == null) { fail(); diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java index c40f7e2f8915..a2e37db95d34 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java @@ -341,11 +341,10 @@ public class DebuggerSession implements AbstractDebuggerSession { @Nullable protected ExecutionResult attach(@NotNull final Executor executor, @NotNull final ProgramRunner runner, final ModuleRunProfile profile, final RunProfileState state, final RemoteConnection remoteConnection, final boolean pollConnection) throws ExecutionException { - final ExecutionResult executionResult = myDebugProcess.attachVirtualMachine(executor, runner, this, state, remoteConnection, pollConnection); final String addressDisplayName = DebuggerBundle.getAddressDisplayName(remoteConnection); final String transportName = DebuggerBundle.getTransportName(remoteConnection); final Module[] modules = profile.getModules(); - if (modules == null || modules.length == 0) { + if (modules.length == 0) { mySearchScope = GlobalSearchScope.allScope(getProject()); } else { @@ -356,6 +355,7 @@ public class DebuggerSession implements AbstractDebuggerSession { } mySearchScope = scope; } + final ExecutionResult executionResult = myDebugProcess.attachVirtualMachine(executor, runner, this, state, remoteConnection, pollConnection); getContextManager().setState(SESSION_EMPTY_CONTEXT, STATE_WAITING_ATTACH, EVENT_START_WAIT_ATTACH, DebuggerBundle.message("status.waiting.attach", addressDisplayName, transportName)); return executionResult; } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java index 04809be06b06..23fed950326e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java @@ -33,6 +33,8 @@ import com.intellij.debugger.ui.impl.watch.*; import com.intellij.execution.*; import com.intellij.execution.configurations.RunProfile; import com.intellij.execution.executors.DefaultDebugExecutor; +import com.intellij.execution.filters.ExceptionFilter; +import com.intellij.execution.filters.TextConsoleBuilder; import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ProgramRunner; @@ -511,7 +513,9 @@ public class DebuggerSessionTab extends DebuggerLogConsoleManagerBase implements public void addThreadDump(List threads) { final Project project = getProject(); - final ConsoleView consoleView = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole(); + final TextConsoleBuilder consoleBuilder = TextConsoleBuilderFactory.getInstance().createBuilder(project); + consoleBuilder.addFilter(new ExceptionFilter(myDebuggerSession.getSearchScope())); + final ConsoleView consoleView = consoleBuilder.getConsole(); final DefaultActionGroup toolbarActions = new DefaultActionGroup(); final ThreadDumpPanel panel = new ThreadDumpPanel(project, consoleView, toolbarActions, threads); diff --git a/java/execution/openapi/src/com/intellij/execution/filters/ExceptionFilter.java b/java/execution/openapi/src/com/intellij/execution/filters/ExceptionFilter.java index 6d4cd562f3ff..18b846685bd9 100644 --- a/java/execution/openapi/src/com/intellij/execution/filters/ExceptionFilter.java +++ b/java/execution/openapi/src/com/intellij/execution/filters/ExceptionFilter.java @@ -39,9 +39,16 @@ public class ExceptionFilter implements Filter, DumbAware { private static final String AT_PREFIX = AT + " "; private static final String STANDALONE_AT = " " + AT + " "; private static final TextAttributes HYPERLINK_ATTRIBUTES = EditorColorsManager.getInstance().getGlobalScheme().getAttributes(CodeInsightColors.HYPERLINK_ATTRIBUTES); + private final GlobalSearchScope mySearchScope; public ExceptionFilter(@NotNull final Project project) { myProject = project; + mySearchScope = GlobalSearchScope.allScope(myProject); + } + + public ExceptionFilter(@NotNull final GlobalSearchScope scope) { + myProject = scope.getProject(); + mySearchScope = scope; } public Result applyFilter(final String line, final int textEndOffset) { @@ -81,7 +88,7 @@ public class ExceptionFilter implements Filter, DumbAware { try{ final int lineNumber = Integer.parseInt(lineString); final PsiManager manager = PsiManager.getInstance(myProject); - PsiClass aClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(className, GlobalSearchScope.allScope(myProject)); + PsiClass aClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(className, mySearchScope); if (aClass == null) return null; final PsiFile file = (PsiFile) aClass.getContainingFile().getNavigationElement(); if (file == null) return null; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java index 082be71429f9..02a10416ee55 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java @@ -27,6 +27,7 @@ import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.roots.ModuleRootModel; import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.libraries.Library; @@ -144,6 +145,13 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable { return myModifiableRootModelProxy; } + public ModuleRootModel getRootModel() { + if (myModifiableRootModel != null) { + return getModifiableRootModelProxy(); + } + return ModuleRootManager.getInstance(myModule); + } + public boolean isModified() { for (ModuleConfigurationEditor moduleElementsEditor : myEditors) { if (moduleElementsEditor.isModified()) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java index 5005d8fc7cc9..4b1f04bdead8 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java @@ -151,11 +151,11 @@ public class ModulesConfigurator implements ModulesProvider, ModuleEditor.Change final ModuleEditor editor = getModuleEditor(module); ModuleRootModel rootModel = null; if (editor != null) { - rootModel = editor.getModifiableRootModel(); + rootModel = editor.getRootModel(); } if (rootModel == null && getModule(module.getName()) != null) { createModuleEditor(module); - rootModel = getModuleEditor(module).getModifiableRootModel(); + rootModel = getModuleEditor(module).getRootModel(); } return rootModel; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java index fc9510218389..3adb241fd2e1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java @@ -148,7 +148,7 @@ public class AnnotationsHighlightUtil { if (annotation == annotationToCheck) continue; PsiJavaCodeReferenceElement nameRef = annotation.getNameReferenceElement(); if (nameRef == null) continue; - PsiClass aClass = (PsiClass)nameRef.resolve(); + PsiElement aClass = nameRef.resolve(); if (resolved.equals(aClass)) { return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, element, JavaErrorMessages.message("annotation.duplicate.annotation")); } diff --git a/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java b/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java index d70ea89767bc..2ee48785b5e6 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java @@ -93,7 +93,9 @@ public class ClassResolverProcessor extends BaseScopeProcessor implements NameHi } private static boolean isOnDemand(PsiElement fileContext, PsiClass psiClass) { - if (fileContext instanceof PsiImportStatementBase && ((PsiImportStatementBase)fileContext).isOnDemand()) return true; + if (fileContext instanceof PsiImportStatementBase) { + return ((PsiImportStatementBase)fileContext).isOnDemand(); + } String fqn = psiClass.getQualifiedName(); if (fqn == null) return false; return "java.lang".equals(StringUtil.getPackageName(fqn)); diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java index c233598aa2d6..e0dcbe78bc33 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java @@ -99,7 +99,7 @@ public class PushDownConflicts { } if (!InheritanceUtil.isInheritorOrSelf(aClass, targetClass, true)) { - myConflicts.putValue(aClass, RefactoringBundle.message("pushed.members.will.not.be.visible.from.certain.call.sites")); + myConflicts.putValue(referenceExpression, RefactoringBundle.message("pushed.members.will.not.be.visible.from.certain.call.sites")); break Members; } } diff --git a/java/openapi/src/com/intellij/codeInsight/AnnotationUtil.java b/java/openapi/src/com/intellij/codeInsight/AnnotationUtil.java index 35479714e097..8f072750f153 100644 --- a/java/openapi/src/com/intellij/codeInsight/AnnotationUtil.java +++ b/java/openapi/src/com/intellij/codeInsight/AnnotationUtil.java @@ -244,7 +244,10 @@ public class AnnotationUtil { fqns = new ArrayList(); final PsiAnnotation[] annos = modList.getAnnotations(); for (PsiAnnotation anno : annos) { - fqns.add(anno.getQualifiedName()); + final String qName = anno.getQualifiedName(); + if (qName != null) { + fqns.add(qName); + } } if (fqns.isEmpty()) return false; } diff --git a/lib/foundrylogic-vpp-2.2.1.jar b/lib/foundrylogic-vpp-2.2.1.jar new file mode 100644 index 000000000000..cd6bd53b5f21 Binary files /dev/null and b/lib/foundrylogic-vpp-2.2.1.jar differ diff --git a/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java b/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java index 8f37a41fb1ff..15ac3bf74bf0 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java @@ -73,7 +73,7 @@ public abstract class CommandLineState implements RunnableState { return new AnAction[]{new PauseOutputAction(console, processHandler)}; } - protected TextConsoleBuilder getConsoleBuilder() { + public TextConsoleBuilder getConsoleBuilder() { return myConsoleBuilder; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index df53d7956fa7..084803b292c7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -593,7 +593,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx @NotNull @TestOnly - public static List getFileLeveleHighlights(Project project,PsiFile file ) { + public static List getFileLevelHighlights(Project project,PsiFile file ) { return UpdateHighlightersUtil.getFileLeveleHighlights(project, file); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java index d9e4d1588473..b09bc0095ec1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java @@ -470,22 +470,23 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass InspectionManager inspectionManager = InspectionManager.getInstance(injectedPsi.getProject()); final ProblemsHolder problemsHolder = new ProblemsHolder(inspectionManager, injectedPsi); final PsiElement host = injectedPsi.getContext(); - for (LocalInspectionTool tool : tools) { - if (host != null && InspectionManagerEx.inspectionResultSuppressed(host, tool)) { - continue; - } - final PsiElementVisitor visitor = tool.buildVisitor(problemsHolder, true); - assert !(visitor instanceof PsiRecursiveElementVisitor) : "The visitor returned from LocalInspectionTool.buildVisitor() must not be recursive. "+tool; - injectedPsi.accept(new PsiRecursiveElementWalkingVisitor() { - @Override public void visitElement(PsiElement element) { + + final PsiElement[] elements = getElementsIntersectingRange(injectedPsi, 0, injectedPsi.getTextLength()); + if (elements.length != 0) { + for (LocalInspectionTool tool : tools) { + if (host != null && InspectionManagerEx.inspectionResultSuppressed(host, tool)) { + continue; + } + final PsiElementVisitor visitor = tool.buildVisitor(problemsHolder, true); + assert !(visitor instanceof PsiRecursiveElementVisitor) : "The visitor returned from LocalInspectionTool.buildVisitor() must not be recursive. "+tool; + for (PsiElement element : elements) { element.accept(visitor); - super.visitElement(element); + } + List problems = problemsHolder.getResults(); + if (problems != null && !problems.isEmpty()) { + InjectedPsiInspectionResult res = new InjectedPsiInspectionResult(tool, injectedPsi, new SmartList(problems)); + result.add(res); } - }); - List problems = problemsHolder.getResults(); - if (problems != null && !problems.isEmpty()) { - InjectedPsiInspectionResult res = new InjectedPsiInspectionResult(tool, injectedPsi, new SmartList(problems)); - result.add(res); } } } diff --git a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogSearchComponent.form b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogSearchComponent.form index 23b6edb96dbf..700fbcbc4387 100644 --- a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogSearchComponent.form +++ b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogSearchComponent.form @@ -1,6 +1,6 @@
- + @@ -10,7 +10,7 @@ - + @@ -18,7 +18,7 @@ - + @@ -29,6 +29,14 @@ + + + + + + + + diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index 8b315495d664..be38bcbad49c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -181,7 +181,8 @@ public final class ConsoleViewImpl extends JPanel implements ConsoleView, Observ } }; - private final CompositeFilter myMessageFilter; + private final CompositeFilter myPredefinedMessageFilter; + private final CompositeFilter myCustomFilter; private ArrayList myHistory = new ArrayList(); private int myHistorySize = 20; @@ -239,12 +240,11 @@ public final class ConsoleViewImpl extends JPanel implements ConsoleView, Observ myProject = project; myFileType = fileType; - myMessageFilter = new CompositeFilter(project); - final ConsoleFilterProvider[] filterProviders = Extensions.getExtensions(ConsoleFilterProvider.FILTER_PROVIDERS); - for (ConsoleFilterProvider filterProvider : filterProviders) { - final Filter[] defaultFilters = filterProvider.getDefaultFilters(project); - for (Filter filter : defaultFilters) { - addMessageFilter(filter); + myCustomFilter = new CompositeFilter(project); + myPredefinedMessageFilter = new CompositeFilter(project); + for (ConsoleFilterProvider filterProvider : Extensions.getExtensions(ConsoleFilterProvider.FILTER_PROVIDERS)) { + for (Filter filter : filterProvider.getDefaultFilters(project)) { + myPredefinedMessageFilter.addFilter(filter); } } @@ -533,7 +533,7 @@ public final class ConsoleViewImpl extends JPanel implements ConsoleView, Observ } public void addMessageFilter(final Filter filter) { - myMessageFilter.addFilter(filter); + myCustomFilter.addFilter(filter); } public void printHyperlink(final String hyperlinkText, final HyperlinkInfo info) { @@ -782,28 +782,29 @@ public final class ConsoleViewImpl extends JPanel implements ConsoleView, Observ } private void highlightHyperlinks(final int line1, final int line2){ - if (myMessageFilter != null){ - ApplicationManager.getApplication().assertIsDispatchThread(); - PsiDocumentManager.getInstance(myProject).commitAllDocuments(); - final Document document = myEditor.getDocument(); - final CharSequence chars = document.getCharsSequence(); - final TextAttributes hyperlinkAttributes = getHyperlinkAttributes(); + ApplicationManager.getApplication().assertIsDispatchThread(); + PsiDocumentManager.getInstance(myProject).commitAllDocuments(); + final Document document = myEditor.getDocument(); + final CharSequence chars = document.getCharsSequence(); + final TextAttributes hyperlinkAttributes = getHyperlinkAttributes(); - for(int line = line1; line <= line2; line++) { - if (line < 0) continue; - final int startOffset = document.getLineStartOffset(line); - int endOffset = document.getLineEndOffset(line); - if (endOffset < document.getTextLength()){ - endOffset++; // add '\n' - } - final String text = chars.subSequence(startOffset, endOffset).toString(); - final Filter.Result result = myMessageFilter.applyFilter(text, endOffset); - if (result != null){ - final int highlightStartOffset = result.highlightStartOffset; - final int highlightEndOffset = result.highlightEndOffset; - final HyperlinkInfo hyperlinkInfo = result.hyperlinkInfo; - addHyperlink(highlightStartOffset, highlightEndOffset, result.highlightAttributes, hyperlinkInfo, hyperlinkAttributes); - } + for(int line = line1; line <= line2; line++) { + if (line < 0) continue; + final int startOffset = document.getLineStartOffset(line); + int endOffset = document.getLineEndOffset(line); + if (endOffset < document.getTextLength()){ + endOffset++; // add '\n' + } + final String text = chars.subSequence(startOffset, endOffset).toString(); + Filter.Result result = myCustomFilter.applyFilter(text, endOffset); + if (result == null) { + result = myPredefinedMessageFilter.applyFilter(text, endOffset); + } + if (result != null){ + final int highlightStartOffset = result.highlightStartOffset; + final int highlightEndOffset = result.highlightEndOffset; + final HyperlinkInfo hyperlinkInfo = result.hyperlinkInfo; + addHyperlink(highlightStartOffset, highlightEndOffset, result.highlightAttributes, hyperlinkInfo, hyperlinkAttributes); } } } diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/ConflictsDialog.java b/platform/lang-impl/src/com/intellij/refactoring/ui/ConflictsDialog.java index de0f0cda0e4d..32778e1dcca5 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/ui/ConflictsDialog.java +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/ConflictsDialog.java @@ -40,9 +40,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; +import java.util.LinkedHashSet; import java.util.regex.Pattern; public class ConflictsDialog extends DialogWrapper{ @@ -55,7 +54,7 @@ public class ConflictsDialog extends DialogWrapper{ public ConflictsDialog(Project project, MultiMap conflictDescriptions) { super(project, true); myProject = project; - List conflicts = new ArrayList(); + final LinkedHashSet conflicts = new LinkedHashSet(); for (String conflict : conflictDescriptions.values()) { conflicts.add(conflict); @@ -182,7 +181,8 @@ public class ConflictsDialog extends DialogWrapper{ } private UsagePresentation getPresentation(final UsagePresentation usagePresentation, PsiElement element) { - final String conflictDescription = " (" + Pattern.compile("<[^<>]*>").matcher(StringUtil.join(myElementConflictDescription.get(element), "\n")).replaceAll("") + ")"; + final Collection elementConflicts = new LinkedHashSet(myElementConflictDescription.get(element)); + final String conflictDescription = " (" + Pattern.compile("<[^<>]*>").matcher(StringUtil.join(elementConflicts, "\n")).replaceAll("") + ")"; return new UsagePresentation() { @NotNull public TextChunk[] getText() { @@ -207,7 +207,7 @@ public class ConflictsDialog extends DialogWrapper{ } private class DescriptionOnlyUsage implements Usage { - private final String myConflictDescription = Pattern.compile("<[^<>]*>").matcher(StringUtil.join(myElementConflictDescription.get(null), "\n")).replaceAll(""); + private final String myConflictDescription = Pattern.compile("<[^<>]*>").matcher(StringUtil.join(new LinkedHashSet(myElementConflictDescription.get(null)), "\n")).replaceAll(""); @NotNull public UsagePresentation getPresentation() { diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java index cf9a0e8c8d2f..93ce6f2c0d53 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java @@ -1038,51 +1038,66 @@ public class FileBasedIndex implements ApplicationComponent { } } - // returns false if doc was not indexed because the file does not fit in scope - private boolean indexUnsavedDocument(final Document document, final ID requestedIndexId, Project project, GlobalSearchScope filter) throws StorageException { - final VirtualFile vFile = myFileDocumentManager.getFile(document); - if (!(vFile instanceof VirtualFileWithId) || !vFile.isValid()) { - return true; - } - if (filter != null && !filter.accept(vFile)) { - return false; - } - final PsiFile dominantContentFile = findDominantPsiForDocument(document, project); - - DocumentContent content; - if (dominantContentFile != null && dominantContentFile.getModificationStamp() != document.getModificationStamp()) { - content = new PsiContent(document, dominantContentFile); - } - else { - content = new AuthenticContent(document); - } - - final long currentDocStamp = content.getModificationStamp(); - if (currentDocStamp != myLastIndexedDocStamps.getAndSet(document, requestedIndexId, currentDocStamp).longValue()) { - final FileContent newFc = new FileContent(vFile, content.getText(), vFile.getCharset()); - - if (dominantContentFile != null) { - dominantContentFile.putUserData(PsiFileImpl.BUILDING_STUB, true); - newFc.putUserData(PSI_FILE, dominantContentFile); - } - - if (content instanceof AuthenticContent) { - newFc.putUserData(EDITOR_HIGHLIGHTER, document instanceof DocumentImpl - ? ((DocumentImpl)document).getEditorHighlighterForCachesBuilding() : null); - } - - if (getInputFilter(requestedIndexId).acceptInput(vFile)) { - newFc.putUserData(PROJECT, project); - final int inputId = Math.abs(getFileId(vFile)); - getIndex(requestedIndexId).update(inputId, newFc); - } - - if (dominantContentFile != null) { - dominantContentFile.putUserData(PsiFileImpl.BUILDING_STUB, null); - } - } +// returns false if doc was not indexed because the file does not fit in scope +private boolean indexUnsavedDocument(final Document document, final ID requestedIndexId, final Project project, + GlobalSearchScope filter) throws StorageException { + final VirtualFile vFile = myFileDocumentManager.getFile(document); + if (!(vFile instanceof VirtualFileWithId) || !vFile.isValid()) { return true; } + if (filter != null && !filter.accept(vFile)) { + return false; + } + final PsiFile dominantContentFile = findDominantPsiForDocument(document, project); + + final DocumentContent content; + if (dominantContentFile != null && dominantContentFile.getModificationStamp() != document.getModificationStamp()) { + content = new PsiContent(document, dominantContentFile); + } + else { + content = new AuthenticContent(document); + } + + final long currentDocStamp = content.getModificationStamp(); + if (currentDocStamp != myLastIndexedDocStamps.getAndSet(document, requestedIndexId, currentDocStamp).longValue()) { + final Ref exRef = new Ref(null); + ProgressManager.getInstance().executeNonCancelableSection(new Runnable() { + public void run() { + try { + final FileContent newFc = new FileContent(vFile, content.getText(), vFile.getCharset()); + + if (dominantContentFile != null) { + dominantContentFile.putUserData(PsiFileImpl.BUILDING_STUB, true); + newFc.putUserData(PSI_FILE, dominantContentFile); + } + + if (content instanceof AuthenticContent) { + newFc.putUserData(EDITOR_HIGHLIGHTER, document instanceof DocumentImpl + ? ((DocumentImpl)document).getEditorHighlighterForCachesBuilding() : null); + } + + if (getInputFilter(requestedIndexId).acceptInput(vFile)) { + newFc.putUserData(PROJECT, project); + final int inputId = Math.abs(getFileId(vFile)); + getIndex(requestedIndexId).update(inputId, newFc); + } + + if (dominantContentFile != null) { + dominantContentFile.putUserData(PsiFileImpl.BUILDING_STUB, null); + } + } + catch (StorageException e) { + exRef.set(e); + } + } + }); + final StorageException storageException = exRef.get(); + if (storageException != null) { + throw storageException; + } + } + return true; +} public static final Key PSI_FILE = new Key("PSI for stubs"); public static final Key EDITOR_HIGHLIGHTER = new Key("Editor"); @@ -1257,7 +1272,21 @@ public class FileBasedIndex implements ApplicationComponent { final UpdatableIndex index = getIndex(indexId); assert index != null; - index.update(inputId, currentFC); + final Ref exRef = new Ref(null); + ProgressManager.getInstance().executeNonCancelableSection(new Runnable() { + public void run() { + try { + index.update(inputId, currentFC); + } + catch (StorageException e) { + exRef.set(e); + } + } + }); + final StorageException storageException = exRef.get(); + if (storageException != null) { + throw storageException; + } ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { if (file.isValid()) { diff --git a/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java b/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java index aa6db97240f2..05ee68ba51fa 100644 --- a/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java +++ b/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java @@ -163,12 +163,14 @@ public class SimpleClasspathPanel extends JPanel { list.scrollRectToVisible(cellRect); } - private static Collection ensureApplicationLevel(final Library library, final Set existingFiles) { + private static Collection ensureApplicationLevel(final Library library, final Set existingFiles, + final Disposable parentDisposable) { if (library.getTable() == null || !LibraryTablesRegistrar.APPLICATION_LEVEL.equals(library.getTable().getTableLevel())) { final ArrayList result = new ArrayList(); for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) { if (!existingFiles.add(file)) continue; final Library newLibrary = LibraryTableImplUtil.createModuleLevelLibrary(null, null); + Disposer.register(parentDisposable, newLibrary); final Library.ModifiableModel libModel = newLibrary.getModifiableModel(); libModel.addRoot(file, OrderRootType.CLASSES); libModel.commit(); @@ -264,7 +266,7 @@ public class SimpleClasspathPanel extends JPanel { final List libraries = dialog.getSelectedLibraries(); final ArrayList result = new ArrayList(); for (Library o : libraries) { - result.addAll(ensureApplicationLevel(o, existingFiles)); + result.addAll(ensureApplicationLevel(o, existingFiles, myDisposable)); } return result; } diff --git a/platform/platform-api/src/com/intellij/ide/util/treeView/AbstractTreeUpdater.java b/platform/platform-api/src/com/intellij/ide/util/treeView/AbstractTreeUpdater.java index d1f06adb5e05..3b35ae4dd74b 100644 --- a/platform/platform-api/src/com/intellij/ide/util/treeView/AbstractTreeUpdater.java +++ b/platform/platform-api/src/com/intellij/ide/util/treeView/AbstractTreeUpdater.java @@ -237,7 +237,7 @@ public class AbstractTreeUpdater implements Disposable, Activatable { } }; - invokeLater(runnable); + myTreeBuilder.getReady(this).doWhenDone(runnable); } } diff --git a/platform/platform-resources-en/src/messages/DiagnosticBundle.properties b/platform/platform-resources-en/src/messages/DiagnosticBundle.properties index ce8992946b9b..e6c12801c95b 100644 --- a/platform/platform-resources-en/src/messages/DiagnosticBundle.properties +++ b/platform/platform-resources-en/src/messages/DiagnosticBundle.properties @@ -56,8 +56,9 @@ log.monitor.edit.aliases.title=Edit Log Files Aliases log.monitor.edit.aliases.name=&Alias: log.monitor.edit.aliases.location=&Log File Location: log.monitor.edit.aliases.show.all.checkbox.title=&Show All Files Coverable By Pattern -log.console.filter.show.errors=Show errors only -log.console.filter.show.errors.and.warnings=Show errors and warnings -log.console.filter.show.all=Show all +log.console.filter.show.errors=errors +log.console.filter.show.errors.and.warnings=warnings +log.console.filter.show.all=all title.submitting.error.report=Submitting error report -log.console.filter.show.errors.warnings.and.infos=Show errors, warnings and infos \ No newline at end of file +log.console.filter.show.errors.warnings.and.infos=infos +log.console.filter.show.prefix=Show \ No newline at end of file diff --git a/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java b/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java index 542338300654..0dc64e18c254 100644 --- a/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java +++ b/platform/testFramework/src/com/intellij/testFramework/ExpectedHighlightingData.java @@ -101,7 +101,7 @@ public class ExpectedHighlightingData { PsiFile file) { myFile = file; myText = document.getText(); - highlightingTypes = new THashMap(); + highlightingTypes = new LinkedHashMap(); highlightingTypes.put(ERROR_MARKER, new ExpectedHighlightingSet(HighlightInfoType.ERROR, HighlightSeverity.ERROR, false, true)); highlightingTypes.put(WARNING_MARKER, new ExpectedHighlightingSet(HighlightInfoType.WARNING, HighlightSeverity.WARNING, false, checkWarnings)); highlightingTypes.put(INFORMATION_MARKER, new ExpectedHighlightingSet(HighlightInfoType.INFO, HighlightSeverity.INFO, false, checkWeakWarnings)); @@ -185,10 +185,7 @@ public class ExpectedHighlightingData { String text = document.getText(); final Set markers = highlightingTypes.keySet(); - String typesRegex = ""; - for (String marker : markers) { - typesRegex += (typesRegex.length() == 0 ? "" : "|") + "(?:" + marker + ")"; - } + String typesRegex = "(?:"+StringUtil.join(markers, ")|(?:")+")"; // er... // any code then (with optional descr="...") then any code then then any code @@ -196,7 +193,7 @@ public class ExpectedHighlightingData { //"(.+?)).*"; Pattern p = Pattern.compile(pat, Pattern.DOTALL); Out: - for (; ;) { + while (true) { Matcher m = p.matcher(text); if (!m.matches()) break; int startOffset = m.start(1); @@ -209,7 +206,7 @@ public class ExpectedHighlightingData { startOffset = m.start(1); expectedHighlightingSet = highlightingTypes.get(marker); } - int pos=3; + int pos = 3; @NonNls String descr = m.group(pos++); if (descr == null) { // no descr means any string by default @@ -241,20 +238,19 @@ public class ExpectedHighlightingData { final Matcher matcher2 = pat2.matcher(rest); LOG.assertTrue(matcher2.matches(), "Cannot find closing "); content = matcher2.group(1); - endOffset = m.start(pos-1) + matcher2.start(2); + endOffset = m.start(pos - 1) + matcher2.start(2); } else { // content = ""; - endOffset = m.start(pos-1); + endOffset = m.start(pos - 1); } document.replaceString(startOffset, endOffset, content); TextAttributes forcedAttributes = null; if (foregroundColor != null) { - forcedAttributes = new TextAttributes(Color.decode(foregroundColor), Color.decode(backgroundColor), - Color.decode(effectColor), EffectType.valueOf(effectType), - Integer.parseInt(fontType)); + forcedAttributes = new TextAttributes(Color.decode(foregroundColor), Color.decode(backgroundColor), Color.decode(effectColor), + EffectType.valueOf(effectType), Integer.parseInt(fontType)); } TextRange textRange = new TextRange(startOffset, startOffset + content.length()); @@ -273,9 +269,9 @@ public class ExpectedHighlightingData { } - HighlightInfo highlightInfo = new HighlightInfo(forcedAttributes, type, textRange.getStartOffset(), textRange.getEndOffset(), descr, - descr, expectedHighlightingSet.severity, expectedHighlightingSet.endOfLine, null, - false); + HighlightInfo highlightInfo = + new HighlightInfo(forcedAttributes, type, textRange.getStartOffset(), textRange.getEndOffset(), descr, descr, + expectedHighlightingSet.severity, expectedHighlightingSet.endOfLine, null, false); expectedHighlightingSet.infos.add(highlightInfo); text = document.getText(); } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 2b8286963839..af0e7cf89ce0 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -1133,7 +1133,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); List result = new ArrayList(); - List infos = DaemonCodeAnalyzerImpl.getFileLeveleHighlights(file.getProject(), file); + List infos = DaemonCodeAnalyzerImpl.getFileLevelHighlights(file.getProject(), file); for (HighlightInfo info : infos) { for (Pair pair : info.quickFixActionRanges) { HighlightInfo.IntentionActionDescriptor actionInGroup = pair.first; diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java index bcf026ef7206..506d95256237 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java @@ -864,12 +864,14 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra return myUsageSearcherFactory != null; } - private void checkReadonlyUsages() { + private boolean checkReadonlyUsages() { final Set readOnlyUsages = getReadOnlyUsagesFiles(); if (!readOnlyUsages.isEmpty()) { - ReadonlyStatusHandler.getInstance(myProject).ensureFilesWritable(readOnlyUsages.toArray(new VirtualFile[readOnlyUsages.size()])); + return + !ReadonlyStatusHandler.getInstance(myProject).ensureFilesWritable(readOnlyUsages.toArray(new VirtualFile[readOnlyUsages.size()])).hasReadonlyFiles(); } + return true; } private Set getReadOnlyUsages() { @@ -1268,7 +1270,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra } public void run() { - checkReadonlyUsages(); + if (!checkReadonlyUsages()) return; PsiDocumentManager.getInstance(myProject).commitAllDocuments(); if (myCannotMakeString != null && myChangesDetected) { if (canPerformReRun() && allTargetsAreValid()) { diff --git a/plugins/junit/src/com/intellij/execution/junit2/states/TestStateUpdater.java b/plugins/junit/src/com/intellij/execution/junit2/states/TestStateUpdater.java index 958b05b0daea..50c1c62c57ab 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/states/TestStateUpdater.java +++ b/plugins/junit/src/com/intellij/execution/junit2/states/TestStateUpdater.java @@ -90,6 +90,7 @@ public class TestStateUpdater implements PacketConsumer { state.setMagitude(myInstanceMagnitude); state.initializeFrom(reader); testProxy.setState(state); + complete(testProxy); } public void setMagnitude(final int magnitude) { @@ -105,21 +106,25 @@ public class TestStateUpdater implements PacketConsumer { } testProxy.setState(state); testProxy.setStatistics(new Statistics(reader)); - final int magnitude = state.getMagnitude(); + complete(testProxy); + } + } - TestProxy parent = testProxy.getParent(); - TestProxy child = testProxy; - while (parent != null) { - final List children = parent.getChildren(); - final TestState parentState = parent.getState(); - LOG.assertTrue(parentState instanceof SuiteState); - if (child.equals(children.get(children.size() - 1))) { - ((SuiteState)parentState).setRunning(false); - } - ((SuiteState)parentState).updateMagnitude(magnitude); - child = parent; - parent = parent.getParent(); + private static void complete(TestProxy testProxy) { + final int magnitude = testProxy.getState().getMagnitude(); + + TestProxy parent = testProxy.getParent(); + TestProxy child = testProxy; + while (parent != null) { + final List children = parent.getChildren(); + final TestState parentState = parent.getState(); + LOG.assertTrue(parentState instanceof SuiteState); + if (child.equals(children.get(children.size() - 1))) { + ((SuiteState)parentState).setRunning(false); } + ((SuiteState)parentState).updateMagnitude(magnitude); + child = parent; + parent = parent.getParent(); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java index 68e914c02b2c..a8fc06fde40e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java @@ -19,7 +19,6 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; -import static com.intellij.openapi.util.text.StringUtil.isEmptyOrSpaces; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.source.parsing.xml.XmlBuilder; @@ -53,6 +52,8 @@ import java.io.File; import java.io.IOException; import java.util.*; +import static com.intellij.openapi.util.text.StringUtil.isEmptyOrSpaces; + public class MavenProjectReader { private static final String UNKNOWN = MavenId.UNKNOWN_VALUE; @@ -453,8 +454,8 @@ public class MavenProjectReader { } private boolean resolveInheritance(final MavenGeneralSettings generalSettings, - Model model, - VirtualFile file, + final Model model, + final VirtualFile file, final List activeProfiles, final Set recursionGuard, final MavenProjectReaderProjectLocator locator) { @@ -528,7 +529,7 @@ public class MavenProjectReader { Properties context = MavenEmbedderFactory.collectSystemProperties(); ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setExecutionProperties(context); - model = interpolator.interpolate(model, basedir, config, false); + model = interpolator.interpolate(ModelUtils.cloneModel(model), basedir, config, false); } catch (ModelInterpolationException e) { MavenLog.LOG.warn(e); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/DependenciesImportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/DependenciesImportingTest.java index 7217959e98ab..cf37de561928 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/DependenciesImportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/DependenciesImportingTest.java @@ -297,6 +297,52 @@ public class DependenciesImportingTest extends MavenImportingTestCase { assertModuleModuleDeps("m1", "m2"); } + public void testInterModuleDependenciesIfThereArePropertiesInArtifactHeaderDefinedInParent() throws Exception { + createProjectPom("${groupProp}" + + "parent" + + "${versionProp}" + + "pom" + + + "" + + " test" + + " 1" + + "" + + + "" + + " m1" + + " m2" + + ""); + + createModulePom("m1", + "" + + " ${groupProp}" + + " parent" + + " ${versionProp}" + + "" + + "m1" + + + "" + + " " + + " ${groupProp}" + + " m2" + + " ${versionProp}" + + " " + + ""); + + createModulePom("m2", + "" + + " ${groupProp}" + + " parent" + + " ${versionProp}" + + "" + + "m2"); + + importProject(); + assertModules("parent", "m1", "m2"); + + assertModuleModuleDeps("m1", "m2"); + } + public void testDependencyOnSelf() throws Exception { importProject("test" + "project" + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenTestCase.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenTestCase.java index 92ae22feb07f..227cc81c5aee 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenTestCase.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenTestCase.java @@ -32,6 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.UsefulTestCase; import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; +import org.intellij.lang.annotations.Language; import org.jetbrains.idea.maven.embedder.MavenConsole; import org.jetbrains.idea.maven.project.*; import org.jetbrains.idea.maven.utils.MavenProgressIndicator; diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java index 87d65a1ce89e..69d7f012fd95 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java @@ -737,6 +737,28 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("value", p.getName()); } + public void testPropertiesFromParentInParentSection() throws Exception { + createProjectPom("${groupProp}" + + "parent" + + "${versionProp}" + + + "" + + " test" + + " 1" + + ""); + + VirtualFile module = createModulePom("module", + "" + + " ${groupProp}" + + " parent" + + " ${versionProp}" + + "" + + "module"); + + org.apache.maven.project.MavenProject p = readProject(module); + assertEquals("test:module:1", p.getGroupId() + ":" + p.getArtifactId() + ":" + p.getVersion()); + } + public void testInheritingSettingsFromParentAndAlignCorrectly() throws Exception { createProjectPom("test" + "parent" + diff --git a/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java b/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java index 28ab829df842..f1833e5ab1d2 100644 --- a/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java +++ b/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java @@ -30,11 +30,11 @@ import java.util.List; */ public enum ResourceRelevance { - MAPPED, - SOURCE, - LIBRARY, + NONE, STANDARD, - NONE; + LIBRARY, + SOURCE, + MAPPED; public static ResourceRelevance getRelevance(VirtualFile file, Module module, ProjectFileIndex fileIndex) { Module moduleForFile = fileIndex.getModuleForFile(file);