Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gvozdev2011-09-27 20:41:31 +0000
committerAndrew Gvozdev2011-09-27 20:41:31 +0000
commita4d4dec51fd31d09a92c669267d069b333b84ec9 (patch)
tree7ad9310d30cd07ac374fbc7380f238b33355ed7a
parentfe0611ef330dfd6c08aec5a8eeb8566e844ff990 (diff)
downloadorg.eclipse.cdt-a4d4dec51fd31d09a92c669267d069b333b84ec9.tar.gz
org.eclipse.cdt-a4d4dec51fd31d09a92c669267d069b333b84ec9.tar.xz
org.eclipse.cdt-a4d4dec51fd31d09a92c669267d069b333b84ec9.zip
bug 359140: Allow ErrorParserManager create workspace level markers
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserManagerTest.java23
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java21
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ProblemMarkerInfo.java3
3 files changed, 37 insertions, 10 deletions
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserManagerTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserManagerTest.java
index d13659d8cdc..ba7b678556c 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserManagerTest.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserManagerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 QNX Software Systems and others.
+ * Copyright (c) 2008, 2011 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -30,6 +30,7 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
import org.eclipse.core.internal.registry.ExtensionRegistry;
+import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceDescription;
@@ -305,4 +306,24 @@ public class ErrorParserManagerTest extends TestCase {
assertEquals(" la la 99 ",end);
}
+ public static class TestParser4 implements IErrorParser {
+ public boolean processLine(String line, ErrorParserManager eoParser) {
+ ProblemMarkerInfo problemMarkerInfo = new ProblemMarkerInfo(null, 0, "Workspace level marker", IMarker.SEVERITY_INFO, null);
+ eoParser.addProblemMarker(problemMarkerInfo);
+ return true;
+ }
+ }
+ public void testWorkspaceLevelError() throws IOException {
+ String id = addErrorParserExtension("test4", TestParser4.class);
+ epManager = new ErrorParserManager(null, markerGenerator, new String[] { id });
+
+ StringBuffer buf = new StringBuffer("errorT: ");
+ output(buf.toString()+"\n");
+ end();
+ assertEquals(1, errorList.size());
+ ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
+ assertEquals("Workspace level marker", problemMarkerInfo.description);
+ assertTrue(problemMarkerInfo.file instanceof IWorkspaceRoot);
+ }
+
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
index 33b7302e2bd..862c790ea04 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
@@ -118,7 +118,7 @@ public class ErrorParserManager extends OutputStream {
* @param parsersIDs - array of error parsers' IDs.
*/
public ErrorParserManager(IProject project, IMarkerGenerator markerGenerator, String[] parsersIDs) {
- this(project, project.getLocationURI(), markerGenerator, parsersIDs);
+ this(project, (URI)null, markerGenerator, parsersIDs);
}
/**
@@ -154,8 +154,10 @@ public class ErrorParserManager extends OutputStream {
if (baseDirectoryURI != null)
fBaseDirectoryURI = baseDirectoryURI;
- else
+ else if (project != null)
fBaseDirectoryURI = project.getLocationURI();
+ else
+ fBaseDirectoryURI = org.eclipse.core.filesystem.URIUtil.toURI(System.getProperty("user.dir")); // CWD //$NON-NLS-1$
}
private void enableErrorParsers(String[] parsersIDs) {
@@ -420,12 +422,15 @@ outer:
// Try to find best match considering known partial path
if (file==null) {
path = path.setDevice(null);
- IProject[] prjs = new IProject[] { fProject };
- IFile[] files = ResourceLookup.findFilesByName(path, prjs, false);
- if (files.length == 0)
- files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
- if (files.length == 0) {
- prjs = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ IFile[] files = null;
+ if (fProject != null) {
+ IProject[] prjs = new IProject[] { fProject };
+ files = ResourceLookup.findFilesByName(path, prjs, false);
+ if (files.length == 0)
+ files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
+ }
+ if (files == null || files.length == 0) {
+ IProject[] prjs = ResourcesPlugin.getWorkspace().getRoot().getProjects();
files = ResourceLookup.findFilesByName(path, prjs, false);
if (files.length == 0)
files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ProblemMarkerInfo.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ProblemMarkerInfo.java
index b33287aac0f..b44f270c0b5 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ProblemMarkerInfo.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ProblemMarkerInfo.java
@@ -19,6 +19,7 @@ import java.util.Map;
import org.eclipse.cdt.core.resources.ACBuilder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
/**
@@ -52,7 +53,7 @@ public class ProblemMarkerInfo {
* @param variableName - the name of the variable involved in the error if any.
*/
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName) {
- this.file = file;
+ this.file = (file != null) ? file : ResourcesPlugin.getWorkspace().getRoot();
this.lineNumber = lineNumber;
this.description = description;
this.severity = severity;

Back to the top