1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Cleaned getProviderCopy() API, got rid of LanguageSettingsManager_TBD

This commit is contained in:
Andrew Gvozdev 2011-12-10 16:33:41 -05:00
parent 0df3dfbbbc
commit 2309ecabf0
12 changed files with 297 additions and 313 deletions

View file

@ -353,7 +353,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -395,7 +395,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -459,7 +459,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -531,7 +531,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -609,7 +609,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -639,7 +639,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -690,7 +690,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -735,7 +735,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -779,7 +779,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -811,7 +811,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -861,7 +861,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -886,7 +886,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -919,7 +919,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(null);
@ -955,7 +955,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1008,7 +1008,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// Shift build directory, that could happen if Make Target from folder1 was run
IFolder buildDir = folder1;
@ -1049,7 +1049,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1098,7 +1098,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
parser.setResolvingPaths(true);
// parse line
@ -1129,7 +1129,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
parser.setResolvingPaths(true);
// parse line
@ -1169,7 +1169,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser with expandRelativePaths=false
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
parser.setResolvingPaths(false);
// parse line
@ -1205,7 +1205,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
parser.setResolvingPaths(true);
// parse line
@ -1242,7 +1242,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
epm.pushDirectoryURI(buildDir.getLocationURI());
@ -1284,7 +1284,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
@ -1316,7 +1316,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
epm.pushDirectoryURI(buildDir.getLocationURI());
@ -1354,7 +1354,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
URI uriBuildDir = new URI("file:/non-existing/path");
@ -1397,7 +1397,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
URI uriBuildDir = new URI("file:/BuildDir");
@ -1447,7 +1447,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1501,7 +1501,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1561,7 +1561,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1606,7 +1606,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
ResourceHelper.createSymbolicLink(linkPath, dir2);
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1646,7 +1646,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
ResourceHelper.createSymbolicLink(linkPath, subfolder.getLocation());
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1688,7 +1688,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1731,7 +1731,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1777,7 +1777,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
ResourceHelper.createFile(project, "file.c");
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// restrict the parser's language scope to C++ only
parser.setLanguageScope(new ArrayList<String>() {{add(LANG_CPP);}});
@ -1809,7 +1809,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
assertEquals(contentType, contentTypeX);
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1839,7 +1839,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
IFile file=ResourceHelper.createFile(project, "file.cpp");
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1870,7 +1870,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
// parse line
parser.startup(cfgDescription);
@ -1916,7 +1916,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line
@ -1956,7 +1956,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
String languageId = ls.getLanguageId();
// create GCCBuildCommandParser
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT);
GCCBuildCommandParser parser = (GCCBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(GCC_BUILD_COMMAND_PARSER_EXT, true);
ErrorParserManager epm = new ErrorParserManager(project, null);
// parse line

View file

@ -211,12 +211,14 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
}
protected void init(String buildCommandParserId) {
AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(buildCommandParserId);
for (String template : PATTERN_TEMPLATES) {
String pattern = buildCommandParser.makePattern(template);
String fileExpr = "$"+buildCommandParser.adjustFileGroup(); //$NON-NLS-1$
String descExpr = "$0"; //$NON-NLS-1$
addPattern(new RegexErrorPattern(pattern, fileExpr, null, descExpr, null, IMarkerGenerator.SEVERITY_WARNING, true));
AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(buildCommandParserId, false);
if (buildCommandParser != null) {
for (String template : PATTERN_TEMPLATES) {
String pattern = buildCommandParser.makePattern(template);
String fileExpr = "$"+buildCommandParser.adjustFileGroup(); //$NON-NLS-1$
String descExpr = "$0"; //$NON-NLS-1$
addPattern(new RegexErrorPattern(pattern, fileExpr, null, descExpr, null, IMarkerGenerator.SEVERITY_WARNING, true));
}
}
}

View file

@ -26,8 +26,6 @@ import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ConsoleOutputStream;
import org.eclipse.cdt.core.ProblemMarkerInfo;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager_TBD;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.resources.ACBuilder;
import org.eclipse.cdt.core.resources.IConsole;

View file

@ -912,10 +912,9 @@ public class MBSWizardHandler extends CWizardHandler {
break;
}
}
} else if (id.length()>0){
// TODO - look into saving on copying, need to figure out "shared" attribute from extension provider directly
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(id);
if (LanguageSettingsProviderAssociationManager.shouldBeShared(providerExt)) {
} else if (id.length()>0) {
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(id, false);
if (providerExt == null || LanguageSettingsProviderAssociationManager.shouldBeShared(providerExt)) {
provider = LanguageSettingsManager.getWorkspaceProvider(id);
} else {
provider = providerExt;
@ -935,7 +934,7 @@ public class MBSWizardHandler extends CWizardHandler {
}
if (!isProviderThere(providers, UI_USER_LANGUAGE_SETTINGS_PROVIDER)) {
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(UI_USER_LANGUAGE_SETTINGS_PROVIDER);
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(UI_USER_LANGUAGE_SETTINGS_PROVIDER, true);
providers.add(0, provider);
}

View file

@ -25,7 +25,6 @@ import org.eclipse.cdt.core.settings.model.CMacroFileEntry;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
@ -108,14 +107,14 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
{
// test provider not in the list
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy("missing.povider");
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertNull(rawProvider);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy("missing.povider", true);
assertNull(providerExt);
}
// get test plugin extension provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_PROVIDER_ID);
ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_PROVIDER_ID, true);
assertNull(providerExtCopy);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
@ -157,7 +156,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/
public void testExtensionBaseProviderSubclass() throws Exception {
// get test plugin extension provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_SUBCLASS_PROVIDER_ID);
ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_SUBCLASS_PROVIDER_ID, true);
assertNull(providerExtCopy);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_SUBCLASS_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
@ -187,7 +188,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/
public void testExtensionCustomProvider() throws Exception {
// get test plugin extension non-default provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_CUSTOM_PROVIDER_ID);
ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_CUSTOM_PROVIDER_ID, true);
assertNull(providerExtCopy);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_CUSTOM_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
@ -256,7 +259,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/
public void testSerializableProvider() throws Exception {
// get test plugin extension for serializable provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_SERIALIZABLE_PROVIDER_ID, true);
assertNull(providerExtCopy);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
@ -279,28 +284,25 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
// Non-editable providers cannot be copied so they are singletons
{
// get test plugin extension for serializable provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_SERIALIZABLE_PROVIDER_ID, true);
assertNull(providerExtCopy);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(rawProvider));
// compare with workspace provider
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertSame(rawProvider, providerWspRaw);
assertTrue(LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true));
}
// Editable providers are retrieved by copy
{
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, true);
assertFalse(LanguageSettingsManager.isWorkspaceProvider(providerExt));
assertTrue(providerExt instanceof ILanguageSettingsEditableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerExt));
assertTrue(LanguageSettingsManager.isEqualExtensionProvider(providerExt, true));
ILanguageSettingsProvider providerExt2 = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider providerExt2 = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, true);
assertNotSame(providerExt, providerExt2);
assertEquals(providerExt, providerExt2);
@ -308,22 +310,22 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertNotSame(providerExt, providerWspRaw);
assertEquals(providerExt, providerWspRaw);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerWspRaw));
assertTrue(LanguageSettingsManager.isEqualExtensionProvider(providerWspRaw, true));
}
// Test shallow copy
{
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, true);
assertNotNull(provider);
assertTrue(provider instanceof ILanguageSettingsEditableProvider);
ILanguageSettingsProvider providerShallow = LanguageSettingsExtensionManager.getExtensionProviderShallow(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider providerShallow = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, false);
assertNotNull(providerShallow);
assertTrue(providerShallow instanceof ILanguageSettingsEditableProvider);
assertFalse(provider.equals(providerShallow));
assertFalse(LanguageSettingsExtensionManager.equalsExtensionProvider(providerShallow));
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) providerShallow));
assertFalse(LanguageSettingsManager.isEqualExtensionProvider(providerShallow, true));
assertTrue(LanguageSettingsManager.isEqualExtensionProvider(providerShallow, false));
}
}
@ -331,7 +333,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
* Check that LanguageSettingsGenericProvider extension defined in plugin.xml is accessible.
*/
public void testExtensionGenericProvider() throws Exception {
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.getExtensionProviderClone(EXTENSION_USER_PROVIDER_ID);
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_USER_PROVIDER_ID, true);
assertNotNull("extension " + EXTENSION_USER_PROVIDER_ID + " not found", provider);
assertTrue(provider instanceof LanguageSettingsGenericProvider);
}

View file

@ -60,7 +60,7 @@ public class LanguageSettingsManager {
* Builds for the provider a nice looking resource tree to present hierarchical view to the user.
*
* TODO - Note that after using this method for a while for BOP parsers it appears that disadvantages
* outweight benefits. In particular, it doesn't result in saving memory as the language settings
* outweigh benefits. In particular, it doesn't result in saving memory as the language settings
* (and the lists itself) are not duplicated in memory anyway but optimized with using WeakHashSet
* and SafeStringInterner.
*
@ -157,25 +157,38 @@ public class LanguageSettingsManager {
LanguageSettingsProvidersSerializer.setWorkspaceProviders(providers);
}
/**
* TODO
* @param deepCopy TODO
* @param id
*
* @return
*/
public static ILanguageSettingsEditableProvider getProviderCopy(ILanguageSettingsEditableProvider provider, boolean deep) {
return LanguageSettingsExtensionManager.getProviderCopy(provider, deep);
}
/**
* Get Language Settings Provider defined via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
*
* @param id - ID of provider to find.
* @param deep TODO
* @return the copy of the provider if possible (i.e. for {@link ILanguageSettingsEditableProvider})
* or workspace provider if provider is not copyable.
*/
public static ILanguageSettingsProvider getExtensionProviderCopy(String id) {
ILanguageSettingsProvider provider = null;
try {
provider = LanguageSettingsExtensionManager.getExtensionProviderClone(id);
} catch (CloneNotSupportedException e) {
// from here falls to get workspace provider
}
if (provider==null)
provider = LanguageSettingsManager.getWorkspaceProvider(id);
public static ILanguageSettingsProvider getExtensionProviderCopy(String id, boolean deep) {
return LanguageSettingsExtensionManager.getExtensionProviderCopy(id, deep);
}
return provider;
/**
* TODO
* @param provider
* @param deep
* @return
*/
public static boolean isEqualExtensionProvider(ILanguageSettingsProvider provider, boolean deep) {
return LanguageSettingsExtensionManager.isEqualsExtensionProvider(provider, deep);
}
/**

View file

@ -1,66 +0,0 @@
/*******************************************************************************
* Copyright (c) 2009, 2011 Andrew Gvozdev 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers;
import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
/**
* This temporary class keeps the utility methods being looking for better home.
* Checking if any Language Settings Provider has custom entries for the resource.
*/
public class LanguageSettingsManager_TBD {
public static boolean isCustomizedResource(ICConfigurationDescription cfgDescription, IResource rc) {
if (rc instanceof IProject)
return false;
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider provider: ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()) {
if (provider instanceof ILanguageSettingsBroadcastingProvider) {
for (String languageId : LanguageSettingsManager.getLanguages(rc, cfgDescription)) {
List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId);
if (list!=null) {
// TODO - check default or check parent?
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(null, null, languageId);
// != is OK here due as the equal lists will have the same reference in WeakHashSet
if (list != listDefault)
return true;
}
}
}
}
}
return false;
}
public static boolean isReconfigured(ILanguageSettingsProvider provider) {
if (provider instanceof ILanguageSettingsEditableProvider) {
try {
return ! LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) provider);
} catch (Exception e) {
CCorePlugin.log(e);
}
}
return false;
}
public static boolean isEqualExtensionProvider(ILanguageSettingsProvider provider) {
return LanguageSettingsExtensionManager.equalsExtensionProvider(provider);
}
}

View file

@ -283,45 +283,6 @@ public class LanguageSettingsExtensionManager {
return provider;
}
/**
* Get Language Settings Provider defined via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
*
* @param id - ID of provider to find.
* @return the clone of the provider or {@code null} if provider is not defined.
* @throws CloneNotSupportedException if the provider is not cloneable
*/
public static ILanguageSettingsProvider getExtensionProviderClone(String id) throws CloneNotSupportedException {
ILanguageSettingsProvider provider = fExtensionProviders.get(id);
if (provider!=null) {
if (!(provider instanceof ILanguageSettingsEditableProvider))
throw new CloneNotSupportedException("Not able to clone provider " + provider.getClass());
provider = ((ILanguageSettingsEditableProvider) provider).clone();
}
return provider;
}
/**
* TODO
*
* @param id
* @return
*/
public static ILanguageSettingsProvider getExtensionProviderShallow(String id) {
ILanguageSettingsProvider provider = fExtensionProviders.get(id);
if (provider instanceof ILanguageSettingsEditableProvider) {
try {
return ((ILanguageSettingsEditableProvider) provider).cloneShallow();
} catch (CloneNotSupportedException e) {
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Not able to clone provider " + provider.getClass());
CCorePlugin.log(new CoreException(status));
return null;
}
}
return provider;
}
/**
* @return list of providers contributed by all extensions. Preferable copy but if not possible
* will return raw provider.
@ -329,12 +290,7 @@ public class LanguageSettingsExtensionManager {
/*package*/ static List<ILanguageSettingsProvider> getExtensionProvidersInternal() {
ArrayList<ILanguageSettingsProvider> list = new ArrayList<ILanguageSettingsProvider>(fExtensionProviders.size());
for (String id : fExtensionProviders.keySet()) {
ILanguageSettingsProvider extensionProvider = null;
try {
extensionProvider = getExtensionProviderClone(id);
} catch (CloneNotSupportedException e) {
// from here falls to get raw extension provider
}
ILanguageSettingsProvider extensionProvider = getExtensionProviderCopy(id, true);
if (extensionProvider==null)
extensionProvider = fExtensionProviders.get(id);
@ -344,16 +300,59 @@ public class LanguageSettingsExtensionManager {
return list;
}
public static boolean equalsExtensionProviderShallow(ILanguageSettingsEditableProvider provider) throws CloneNotSupportedException {
String id = provider.getId();
ILanguageSettingsProvider extensionProviderShallow = getExtensionProviderShallow(id);
return provider.cloneShallow().equals(extensionProviderShallow);
/**
* TODO
* @param provider
* @param deep
* @return
*/
public static ILanguageSettingsEditableProvider getProviderCopy(ILanguageSettingsEditableProvider provider, boolean deep) {
try {
if (deep) {
return provider.clone();
} else {
return provider.cloneShallow();
}
} catch (CloneNotSupportedException e) {
CCorePlugin.log("Error cloning provider " + provider.getId() + ", class " + provider.getClass(), e); //$NON-NLS-1$ //$NON-NLS-2$
}
return null;
}
public static boolean equalsExtensionProvider(ILanguageSettingsProvider provider) {
/**
* Get Language Settings Provider defined via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
*
* @param id - ID of provider to find.
* @param deep TODO
* @return the clone of the provider or {@code null} TODO if provider is not defined.
*/
public static ILanguageSettingsProvider getExtensionProviderCopy(String id, boolean deep) {
ILanguageSettingsProvider provider = fExtensionProviders.get(id);
if (provider instanceof ILanguageSettingsEditableProvider) {
return getProviderCopy((ILanguageSettingsEditableProvider) provider, deep);
}
return null;
}
/**
* TODO
* @param provider
* @param deep
* @return
*/
public static boolean isEqualsExtensionProvider(ILanguageSettingsProvider provider, boolean deep) {
String id = provider.getId();
ILanguageSettingsProvider extensionProvider = fExtensionProviders.get(id);
return provider.equals(extensionProvider);
if (deep || !(provider instanceof ILanguageSettingsEditableProvider)) {
ILanguageSettingsProvider extensionProvider = fExtensionProviders.get(id);
return provider.equals(extensionProvider);
} else {
ILanguageSettingsEditableProvider providerShallow = getProviderCopy((ILanguageSettingsEditableProvider) provider, false);
ILanguageSettingsProvider extensionProviderShallow = getExtensionProviderCopy(id, false);
return providerShallow == extensionProviderShallow
|| (providerShallow != null && providerShallow.equals(extensionProviderShallow));
}
}
}

View file

@ -203,7 +203,8 @@ public class LanguageSettingsProvidersSerializer {
*/
public LanguageSettingsChangeEvent(ICProjectDescription prjDescription) {
if (!prjDescription.isReadOnly()) {
String msg = "Project description " + prjDescription.getName() + " is expected to be read-only";
// The logic goes that we send notifications only for acting description but not for currently being prepared to set
String msg = "Project description " + prjDescription.getName() + " is expected to be read-only"; //$NON-NLS-1$ //$NON-NLS-2$
CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception(msg)));
}
@ -222,7 +223,8 @@ public class LanguageSettingsProvidersSerializer {
if (delta != null)
deltaMap.put(cfgDescription.getId(), delta);
} else {
IStatus ss = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error: Missing specSettings for " + cfgDescription.getClass().getSimpleName());
IStatus ss = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error: Missing specSettings for " //$NON-NLS-1$
+ cfgDescription.getClass().getSimpleName());
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, ss.getMessage(), new CoreException(ss)));
}
}
@ -239,11 +241,11 @@ public class LanguageSettingsProvidersSerializer {
return deltaMap.keySet().toArray(new String[deltaMap.size()]);
}
@SuppressWarnings("nls")
@Override
public String toString() {
return "LanguageSettingsChangeEvent for project=[" + getProjectName() + "]"
+ ", configurations=" + deltaMap.keySet()
;
+ ", configurations=" + deltaMap.keySet();
}
}
@ -257,6 +259,12 @@ public class LanguageSettingsProvidersSerializer {
}
}
/**
* Determine location of the project store of language settings providers in the plug-in state area.
*
* @param store - name of the store.
* @return location of the store in the plug-in state area.
*/
private static IFile getStoreInProjectArea(IProject project) throws CoreException {
IFolder folder = project.getFolder(SETTINGS_FOLDER_NAME);
if (!folder.exists()) {
@ -267,10 +275,10 @@ public class LanguageSettingsProvidersSerializer {
}
/**
* TODO: refactor with ErrorParserManager ?
* Determine location of the store in the plug-in state area.
*
* @param store - name of the store
* @return location of the store in the plug-in state area
* @param store - name of the store.
* @return location of the store in the plug-in state area.
*/
private static URI getStoreInWorkspaceArea(String store) {
IPath location = CCorePlugin.getDefault().getStateLocation().append(store);
@ -434,9 +442,9 @@ projects:
}
} catch (Exception e) {
CCorePlugin.log("Internal error while trying to serialize language settings", e); //$NON-NLS-1$
IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error while trying to serialize language settings", e);
throw new CoreException(s);
String msg = "Internal error while trying to serialize language settings"; //$NON-NLS-1$
CCorePlugin.log(msg, e);
throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg, e));
}
}
@ -464,7 +472,7 @@ projects:
Node providerNode = providerNodes.item(i);
String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
if (userDefinedProvidersIds.contains(providerId)) {
String msg = "Ignored repeatedly persisted duplicate language settings provider id=" + providerId;
String msg = "Ignored an attempt to persist duplicate language settings provider, id=" + providerId; //$NON-NLS-1$
CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception()));
continue;
}
@ -475,7 +483,7 @@ projects:
if (providers==null)
providers= new ArrayList<ILanguageSettingsProvider>();
if (!LanguageSettingsExtensionManager.equalsExtensionProvider(provider)) {
if (!LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
providers.add(provider);
}
}
@ -600,9 +608,9 @@ projects:
}
} catch (Exception e) {
IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error while trying to serialize language settings", e);
CCorePlugin.log(s);
throw new CoreException(s);
String msg = "Internal error while trying to serialize language settings"; //$NON-NLS-1$
CCorePlugin.log(msg, e);
throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg, e));
}
}
@ -1008,12 +1016,9 @@ projects:
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>();
for (ILanguageSettingsProvider provider : baseProviders) {
if (provider instanceof ILanguageSettingsEditableProvider) {
try {
provider = ((ILanguageSettingsEditableProvider) provider).clone();
} catch (CloneNotSupportedException e) {
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, Status.OK,
"Not able to clone provider " + provider.getClass(), e);
CCorePlugin.log(status);
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) provider, true);
if (newProvider != null) {
provider = newProvider;
}
}
newProviders.add(provider);

View file

@ -980,16 +980,14 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
String langId = (String)langItems.getData();
if (langId!=null) {
if (provider.getSettingEntries(cfgDescription, rc, langId)!=null) {
try {
// clone providers to be able to "Cancel" in UI
if (providerCopy==null) {
providerCopy = ((ILanguageSettingsEditableProvider) provider).clone();
if (providerCopy == null) {
// copy providers to be able to "Cancel" in UI
providerCopy = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) provider, true);
if (providerCopy == null) {
continue providers;
}
providerCopy.setSettingEntries(cfgDescription, rc, langId, null);
changed = true;
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Internal Error: cannot clone provider "+provider.getId(), e);
continue providers;
}
}
}

View file

@ -49,7 +49,6 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditabl
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager_TBD;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@ -150,17 +149,19 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
Assert.isTrue(rawProvider instanceof ILanguageSettingsEditableProvider);
try {
ILanguageSettingsEditableProvider newProvider = ((ILanguageSettingsEditableProvider)rawProvider).clone();
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider)rawProvider, true);
if (newProvider != null) {
replaceSelectedProvider(newProvider);
return newProvider;
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Error cloning provider " + rawProvider.getId(), e);
// TODO warning dialog for user?
}
return null;
return newProvider;
}
private static boolean isReconfigured(ILanguageSettingsProvider provider) {
if (provider instanceof ILanguageSettingsEditableProvider) {
return ! LanguageSettingsManager.isEqualExtensionProvider(provider, false);
}
return false;
}
private class ProvidersTableLabelProvider extends LanguageSettingsProvidersLabelProvider {
@ -169,7 +170,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
String[] overlayKeys = super.getOverlayKeys(provider);
ILanguageSettingsProvider rawProvider = page.isForPrefs() ? LanguageSettingsManager.getRawProvider(provider) : provider;
if (LanguageSettingsManager_TBD.isReconfigured(rawProvider)) {
if (isReconfigured(rawProvider)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING;
}
@ -315,18 +316,16 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
if (!LanguageSettingsProviderAssociationManager.shouldBeShared(rawProvider)) {
// Switch to local provider instance
try {
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
provider = ((ILanguageSettingsEditableProvider) rawProvider).cloneShallow();
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
if (newProvider != null) {
provider = newProvider;
replaceSelectedProvider(provider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(provider, cfgDescription);
displaySelectedOptionPage();
}
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Error cloning provider " + provider.getId(), e);
}
replaceSelectedProvider(provider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(provider, cfgDescription);
displaySelectedOptionPage();
}
}
@ -659,7 +658,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean canReset = false;
if (rawProvider!=null && (canForWorkspace || canForProject)) {
canReset = ! LanguageSettingsManager_TBD.isEqualExtensionProvider(rawProvider);
canReset = ! LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true);
}
boolean canMoveUp = page.isForProject() && isProviderSelected && isRangeOk && pos!=0;
@ -721,28 +720,24 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
} else {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(selectedProvider);
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
ILanguageSettingsEditableProvider editableProvider = (ILanguageSettingsEditableProvider) rawProvider;
try {
ILanguageSettingsEditableProvider newProvider = editableProvider.cloneShallow();
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
if (newProvider != null) {
replaceSelectedProvider(newProvider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(newProvider, cfgDescription);
displaySelectedOptionPage();
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Error cloning provider " + editableProvider.getId(), e);
return;
}
}
}
updateButtons();
}
private void performReset(ILanguageSettingsProvider selectedProvider) {
ILanguageSettingsProvider newProvider = LanguageSettingsManager.getExtensionProviderCopy(selectedProvider.getId());
String id = selectedProvider.getId();
ILanguageSettingsProvider newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
if (newProvider == null) {
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
}
replaceSelectedProvider(newProvider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
@ -840,8 +835,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean atLeastOneChanged = false;
for (int i=0;i<cfgProviders.size();i++) {
ILanguageSettingsProvider provider = cfgProviders.get(i);
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager_TBD.isEqualExtensionProvider(provider)) {
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId());
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId(), true);
if (extProvider == null) {
extProvider = LanguageSettingsManager.getWorkspaceProvider(provider.getId());
}
cfgProviders.set(i, extProvider);
atLeastOneChanged = true;
}
@ -856,8 +854,12 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
for (int i=0;i<providers.size();i++) {
ILanguageSettingsProvider provider = providers.get(i);
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
if (!LanguageSettingsManager_TBD.isEqualExtensionProvider(rawProvider)) {
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId());
if (!LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true)) {
String id = provider.getId();
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
if (extProvider == null) {
extProvider = LanguageSettingsManager.getWorkspaceProvider(id);
}
providers.set(i, extProvider);
}
}

View file

@ -10,12 +10,13 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.viewsupport;
import java.util.List;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IBaseLabelProvider;
@ -29,7 +30,11 @@ import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.ui.texteditor.MarkerUtilities;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager_TBD;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsBroadcastingProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
@ -37,6 +42,7 @@ import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.ui.CElementImageDescriptor;
@ -47,19 +53,19 @@ import org.eclipse.cdt.internal.ui.util.IProblemChangedListener;
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
/**
* LabelDecorator that decorates an element's image with error and warning overlays that
* represent the severity of markers attached to the element's underlying resource. To see
* LabelDecorator that decorates an element's image with error and warning overlays that
* represent the severity of markers attached to the element's underlying resource. To see
* a problem decoration for a marker, the marker needs to be a subtype of <code>IMarker.PROBLEM</code>.
* <p>
* Note: Only images for elements in Java projects are currently updated on marker changes.
* </p>
*
*
* @since 2.0
*/
public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabelDecorator {
/**
* This is a special <code>LabelProviderChangedEvent</code> carring additional
* This is a special <code>LabelProviderChangedEvent</code> carring additional
* information whether the event orgins from a maker change.
* <p>
* <code>ProblemsLabelChangedEvent</code>s are only generated by <code>
@ -77,12 +83,12 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
super(source, changedResource);
fMarkerChange= isMarkerChange;
}
/**
* Returns whether this event origins from marker changes. If <code>false</code> an annotation
* model change is the origin. In this case viewers not displaying working copies can ignore these
* Returns whether this event origins from marker changes. If <code>false</code> an annotation
* model change is the origin. In this case viewers not displaying working copies can ignore these
* events.
*
*
* @return if this event origins from a marker change.
*/
public boolean isMarkerChange() {
@ -92,13 +98,13 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
}
private static final int ERRORTICK_WARNING= CElementImageDescriptor.WARNING;
private static final int ERRORTICK_ERROR= CElementImageDescriptor.ERROR;
private static final int TICK_CONFIGURATION = CElementImageDescriptor.SETTINGS;
private static final int ERRORTICK_ERROR= CElementImageDescriptor.ERROR;
private static final int TICK_CONFIGURATION = CElementImageDescriptor.SETTINGS;
private ImageDescriptorRegistry fRegistry;
private boolean fUseNewRegistry= false;
private IProblemChangedListener fProblemChangedListener;
private ListenerList fListeners;
/**
@ -108,10 +114,10 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
this(null);
fUseNewRegistry= true;
}
/*
* Creates decorator with a shared image registry.
*
*
* @param registry The registry to use or <code>null</code> to use the Java plugin's
* image registry.
*/
@ -122,21 +128,21 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
fRegistry= registry;
fProblemChangedListener= null;
}
private ImageDescriptorRegistry getRegistry() {
if (fRegistry == null) {
fRegistry= fUseNewRegistry ? new ImageDescriptorRegistry() : CUIPlugin.getImageDescriptorRegistry();
}
return fRegistry;
}
/* (non-Javadoc)
* @see ILabelDecorator#decorateText(String, Object)
*/
public String decorateText(String text, Object element) {
return text;
}
}
/* (non-Javadoc)
* @see ILabelDecorator#decorateImage(Image, Object)
@ -189,7 +195,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
if (e.getStatus().getCode() == IResourceStatus.MARKER_NOT_FOUND) {
return 0;
}
CUIPlugin.log(e);
}
return 0;
@ -200,7 +206,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
return 0;
}
int info= 0;
IMarker[] markers= res.findMarkers(IMarker.PROBLEM, true, depth);
if (markers != null) {
for (int i= 0; i < markers.length && (info != ERRORTICK_ERROR); i++) {
@ -213,7 +219,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
info= ERRORTICK_ERROR;
}
}
}
}
}
return info;
}
@ -228,12 +234,12 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
}
}
return isInside(pos, -1, sourceElement);
}
return false;
}
// private int getErrorTicksFromWorkingCopy(ITranslationUnit original, ISourceReference sourceElement) throws CoreException {
// int info= 0;
// FileEditorInput editorInput= new FileEditorInput((IFile) original.getResource());
@ -255,7 +261,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
// }
// return info;
// }
// private IMarker isAnnotationInRange(IAnnotationModel model, Annotation annot, ISourceReference sourceElement) throws CoreException {
// if (annot instanceof MarkerAnnotation) {
// IMarker marker= ((MarkerAnnotation) annot).getMarker();
@ -268,17 +274,17 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
// }
// return null;
// }
/**
* Tests if a position is inside the source range of an element. Usually this is done
* by looking at the offset. In case the offset equals <code>-1</code>, the line is
* by looking at the offset. In case the offset equals <code>-1</code>, the line is
* tested.
* @param offSet offset to be tested
* @param line line to be tested
* @param sourceElement Source element (must be a ICElement)
* @return boolean Return <code>true</code> if position is located inside the source element.
* @throws CoreException Exception thrown if element range could not be accessed.
*
*
* @since 2.1
*/
protected boolean isInside(int offSet, int line, ISourceReference sourceElement) throws CoreException {
@ -288,11 +294,11 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
return (line >= range.getStartLine() && line <= range.getEndLine());
}
int rangeOffset= range.getStartPos();
return (rangeOffset <= offSet && rangeOffset + range.getLength() > offSet);
return (rangeOffset <= offSet && rangeOffset + range.getLength() > offSet);
}
return false;
}
}
/* (non-Javadoc)
* @see IBaseLabelProvider#dispose()
*/
@ -312,7 +318,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
public boolean isLabelProperty(Object element, String property) {
return true;
}
/* (non-Javadoc)
* @see IBaseLabelProvider#addListener(ILabelProviderListener)
*/
@ -329,7 +335,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
};
CUIPlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener);
}
}
}
/* (non-Javadoc)
* @see IBaseLabelProvider#removeListener(ILabelProviderListener)
@ -343,7 +349,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
}
}
}
protected void fireProblemsChanged(IResource[] changedResources, boolean isMarkerChange) {
if (fListeners != null && !fListeners.isEmpty()) {
LabelProviderChangedEvent event= new ProblemsLabelChangedEvent(this, changedResources, isMarkerChange);
@ -353,23 +359,52 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
}
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration)
*/
public void decorate(Object element, IDecoration decoration) {
public void decorate(Object element, IDecoration decoration) {
int adornmentFlags= computeAdornmentFlags(element);
if ((adornmentFlags & TICK_CONFIGURATION) != 0) {
decoration.addOverlay(CPluginImages.DESC_OVR_SETTING);
adornmentFlags &= ~TICK_CONFIGURATION;
}
if (adornmentFlags == ERRORTICK_ERROR) {
decoration.addOverlay(CPluginImages.DESC_OVR_ERROR);
} else if (adornmentFlags == ERRORTICK_WARNING) {
decoration.addOverlay(CPluginImages.DESC_OVR_WARNING);
}
}
}
public static boolean isCustomizedResource(ICConfigurationDescription cfgDescription, IResource rc) {
if (rc instanceof IProject)
return false;
if (!ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(rc.getProject())) {
ICResourceDescription rcDescription = cfgDescription.getResourceDescription(rc.getProjectRelativePath(), true);
return rcDescription != null;
}
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider provider: ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()) {
if (provider instanceof ILanguageSettingsBroadcastingProvider) {
for (String languageId : LanguageSettingsManager.getLanguages(rc, cfgDescription)) {
List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId);
if (list!=null) {
// TODO - check default or check parent?
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(null, null, languageId);
// != is OK here due as the equal lists will have the same reference in WeakHashSet
if (list != listDefault)
return true;
}
}
}
}
}
return false;
}
/**
@ -386,10 +421,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
if (prjDescription != null) {
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
if (cfgDescription != null) {
IPath path = rc.getProjectRelativePath();
ICResourceDescription rcDescription = cfgDescription.getResourceDescription(path, true);
boolean isLSCustomized = LanguageSettingsManager_TBD.isCustomizedResource(cfgDescription, rc);
if (rcDescription != null || isLSCustomized)
if (isCustomizedResource(cfgDescription, rc))
result |= TICK_CONFIGURATION;
}
}