From a45471098a40d2e28847d84bdcbdf270fa52f70d Mon Sep 17 00:00:00 2001 From: David Inglis Date: Wed, 3 Sep 2003 20:43:27 +0000 Subject: [PATCH] support error parser persistence on project --- .../cdt/make/core/IMakeBuilderInfo.java | 57 +++++++++++-------- .../eclipse/cdt/make/core/MakeBuilder.java | 2 +- .../make/internal/core/BuildInfoFactory.java | 25 ++++++++ 3 files changed, 59 insertions(+), 25 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/IMakeBuilderInfo.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/IMakeBuilderInfo.java index 890ebf8cbec..5565ee3e3f6 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/IMakeBuilderInfo.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/IMakeBuilderInfo.java @@ -15,29 +15,38 @@ import org.eclipse.core.runtime.IPath; public interface IMakeBuilderInfo { IPath getBuildLocation(); - boolean isStopOnError(); - boolean isDefaultBuildCmd(); - IPath getBuildCommand(); - String getBuildArguments(); - - boolean isAutoBuildEnable(); - String getAutoBuildTarget(); - boolean isIncrementalBuildEnabled(); - String getIncrementalBuildTarget(); - boolean isFullBuildEnabled(); - String getFullBuildTarget(); - void setBuildLocation(IPath location) throws CoreException; - void setStopOnError(boolean on) throws CoreException; - void setUseDefaultBuildCmd(boolean on) throws CoreException; - void setBuildCommand(IPath command) throws CoreException; - void setBuildArguments(String args) throws CoreException; - - void setAutoBuildEnable(boolean enabled) throws CoreException; - void setAutoBuildTarget(String target) throws CoreException; - void setIncrementalBuildEnable(boolean enabled) throws CoreException; - void setIncrementalBuildTarget(String target) throws CoreException; - void setFullBuildEnable(boolean enabled) throws CoreException; - void setFullBuildTarget(String target) throws CoreException; -} + boolean isStopOnError(); + void setStopOnError(boolean on) throws CoreException; + + boolean isDefaultBuildCmd(); + void setUseDefaultBuildCmd(boolean on) throws CoreException; + + IPath getBuildCommand(); + void setBuildCommand(IPath command) throws CoreException; + + String getBuildArguments(); + void setBuildArguments(String args) throws CoreException; + + boolean isAutoBuildEnable(); + void setAutoBuildEnable(boolean enabled) throws CoreException; + + String getAutoBuildTarget(); + void setAutoBuildTarget(String target) throws CoreException; + + boolean isIncrementalBuildEnabled(); + void setIncrementalBuildEnable(boolean enabled) throws CoreException; + + String getIncrementalBuildTarget(); + void setIncrementalBuildTarget(String target) throws CoreException; + + boolean isFullBuildEnabled(); + void setFullBuildEnable(boolean enabled) throws CoreException; + + String getFullBuildTarget(); + void setFullBuildTarget(String target) throws CoreException; + + String[] getErrorParsers(); + void setErrorParsers(String[] parsers) throws CoreException; +} diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java index 8ae374dff1d..da4537e9a08 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java @@ -139,7 +139,7 @@ public class MakeBuilder extends ACBuilder { } env = (String[]) envList.toArray(new String[envList.size()]); } - ErrorParserManager epm = new ErrorParserManager(this); + ErrorParserManager epm = new ErrorParserManager(getProject(), this, info.getErrorParsers()); epm.setOutputStream(cos); OutputStream stdout = epm.getOutputStream(); OutputStream stderr = epm.getOutputStream(); diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java index 62ab15f3bb5..9ffc8bd3ef7 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java @@ -10,7 +10,10 @@ ***********************************************************************/ package org.eclipse.cdt.make.internal.core; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.StringTokenizer; import org.eclipse.cdt.make.core.IMakeBuilderInfo; import org.eclipse.cdt.make.core.MakeCorePlugin; @@ -43,6 +46,7 @@ public class BuildInfoFactory { static final String BUILD_INCREMENTAL_ENABLED = PREFIX + ".enabledIncrementalBuild"; //$NON-NLS-1$ static final String BUILD_AUTO_ENABLED = PREFIX + ".enableAutoBuild"; //$NON-NLS-1$ static final String BUILD_ARGUMENTS = PREFIX + ".buildArguments"; //$NON-NLS-1$ + static final String ERROR_PARSERS = PREFIX + ".buildErrorParsers"; //$NON-NLS-1$ private abstract static class Store implements IMakeBuilderInfo { @@ -176,6 +180,27 @@ public class BuildInfoFactory { public void setBuildArguments(String args) throws CoreException { putValue(BUILD_ARGUMENTS, args); } + + public String[] getErrorParsers() { + String parsers = getString(ERROR_PARSERS); + if (parsers != null && parsers.length() > 0) { + StringTokenizer tok = new StringTokenizer(parsers, ";"); + List list = new ArrayList(tok.countTokens()); + while (tok.hasMoreElements()) { + list.add(tok.nextToken()); + } + return (String[]) list.toArray(new String[list.size()]); + } + return new String[0]; + } + + public void setErrorParsers(String[] parsers) throws CoreException { + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < parsers.length; i++) { + buf.append(parsers[i]).append(';'); + } + putValue(ERROR_PARSERS, buf.toString()); + } } private static class Preference extends Store {