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

View file

@ -211,12 +211,14 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
} }
protected void init(String buildCommandParserId) { protected void init(String buildCommandParserId) {
AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(buildCommandParserId); AbstractBuildCommandParser buildCommandParser = (AbstractBuildCommandParser) LanguageSettingsManager.getExtensionProviderCopy(buildCommandParserId, false);
for (String template : PATTERN_TEMPLATES) { if (buildCommandParser != null) {
String pattern = buildCommandParser.makePattern(template); for (String template : PATTERN_TEMPLATES) {
String fileExpr = "$"+buildCommandParser.adjustFileGroup(); //$NON-NLS-1$ String pattern = buildCommandParser.makePattern(template);
String descExpr = "$0"; //$NON-NLS-1$ String fileExpr = "$"+buildCommandParser.adjustFileGroup(); //$NON-NLS-1$
addPattern(new RegexErrorPattern(pattern, fileExpr, null, descExpr, null, IMarkerGenerator.SEVERITY_WARNING, true)); 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.CCorePlugin;
import org.eclipse.cdt.core.ConsoleOutputStream; import org.eclipse.cdt.core.ConsoleOutputStream;
import org.eclipse.cdt.core.ProblemMarkerInfo; 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.model.CoreModel;
import org.eclipse.cdt.core.resources.ACBuilder; import org.eclipse.cdt.core.resources.ACBuilder;
import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.resources.IConsole;

View file

@ -912,10 +912,9 @@ public class MBSWizardHandler extends CWizardHandler {
break; break;
} }
} }
} else if (id.length()>0){ } 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, false);
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(id); if (providerExt == null || LanguageSettingsProviderAssociationManager.shouldBeShared(providerExt)) {
if (LanguageSettingsProviderAssociationManager.shouldBeShared(providerExt)) {
provider = LanguageSettingsManager.getWorkspaceProvider(id); provider = LanguageSettingsManager.getWorkspaceProvider(id);
} else { } else {
provider = providerExt; provider = providerExt;
@ -935,7 +934,7 @@ public class MBSWizardHandler extends CWizardHandler {
} }
if (!isProviderThere(providers, UI_USER_LANGUAGE_SETTINGS_PROVIDER)) { 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); 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.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry; import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase; 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.IFile;
import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Path;
@ -108,14 +107,14 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
{ {
// test provider not in the list // test provider not in the list
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy("missing.povider"); ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy("missing.povider", true);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt)); assertNull(providerExt);
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertNull(rawProvider);
} }
// get test plugin extension provider // 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)); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider // get raw extension provider
@ -157,7 +156,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/ */
public void testExtensionBaseProviderSubclass() throws Exception { public void testExtensionBaseProviderSubclass() throws Exception {
// get test plugin extension provider // 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)); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider // get raw extension provider
@ -187,7 +188,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/ */
public void testExtensionCustomProvider() throws Exception { public void testExtensionCustomProvider() throws Exception {
// get test plugin extension non-default provider // 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)); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider // get raw extension provider
@ -256,7 +259,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
*/ */
public void testSerializableProvider() throws Exception { public void testSerializableProvider() throws Exception {
// get test plugin extension for serializable provider // 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)); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider // get raw extension provider
@ -279,28 +284,25 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
// Non-editable providers cannot be copied so they are singletons // Non-editable providers cannot be copied so they are singletons
{ {
// get test plugin extension for serializable provider // 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)); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider // get raw extension provider
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider); assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(rawProvider)); assertTrue(LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true));
// compare with workspace provider
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertSame(rawProvider, providerWspRaw);
} }
// Editable providers are retrieved by copy // 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)); assertFalse(LanguageSettingsManager.isWorkspaceProvider(providerExt));
assertTrue(providerExt instanceof ILanguageSettingsEditableProvider); 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); assertNotSame(providerExt, providerExt2);
assertEquals(providerExt, providerExt2); assertEquals(providerExt, providerExt2);
@ -308,22 +310,22 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp); ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertNotSame(providerExt, providerWspRaw); assertNotSame(providerExt, providerWspRaw);
assertEquals(providerExt, providerWspRaw); assertEquals(providerExt, providerWspRaw);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerWspRaw)); assertTrue(LanguageSettingsManager.isEqualExtensionProvider(providerWspRaw, true));
} }
// Test shallow copy // Test shallow copy
{ {
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, true);
assertNotNull(provider); assertNotNull(provider);
assertTrue(provider instanceof ILanguageSettingsEditableProvider); assertTrue(provider instanceof ILanguageSettingsEditableProvider);
ILanguageSettingsProvider providerShallow = LanguageSettingsExtensionManager.getExtensionProviderShallow(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider providerShallow = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID, false);
assertNotNull(providerShallow); assertNotNull(providerShallow);
assertTrue(providerShallow instanceof ILanguageSettingsEditableProvider); assertTrue(providerShallow instanceof ILanguageSettingsEditableProvider);
assertFalse(provider.equals(providerShallow)); assertFalse(provider.equals(providerShallow));
assertFalse(LanguageSettingsExtensionManager.equalsExtensionProvider(providerShallow)); assertFalse(LanguageSettingsManager.isEqualExtensionProvider(providerShallow, true));
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) providerShallow)); assertTrue(LanguageSettingsManager.isEqualExtensionProvider(providerShallow, false));
} }
} }
@ -331,7 +333,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
* Check that LanguageSettingsGenericProvider extension defined in plugin.xml is accessible. * Check that LanguageSettingsGenericProvider extension defined in plugin.xml is accessible.
*/ */
public void testExtensionGenericProvider() throws Exception { 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); assertNotNull("extension " + EXTENSION_USER_PROVIDER_ID + " not found", provider);
assertTrue(provider instanceof LanguageSettingsGenericProvider); 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. * 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 * 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 the lists itself) are not duplicated in memory anyway but optimized with using WeakHashSet
* and SafeStringInterner. * and SafeStringInterner.
* *
@ -157,25 +157,38 @@ public class LanguageSettingsManager {
LanguageSettingsProvidersSerializer.setWorkspaceProviders(providers); 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 * Get Language Settings Provider defined via
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point. * {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
* *
* @param id - ID of provider to find. * @param id - ID of provider to find.
* @param deep TODO
* @return the copy of the provider if possible (i.e. for {@link ILanguageSettingsEditableProvider}) * @return the copy of the provider if possible (i.e. for {@link ILanguageSettingsEditableProvider})
* or workspace provider if provider is not copyable. * or workspace provider if provider is not copyable.
*/ */
public static ILanguageSettingsProvider getExtensionProviderCopy(String id) { public static ILanguageSettingsProvider getExtensionProviderCopy(String id, boolean deep) {
ILanguageSettingsProvider provider = null; return LanguageSettingsExtensionManager.getExtensionProviderCopy(id, deep);
try { }
provider = LanguageSettingsExtensionManager.getExtensionProviderClone(id);
} catch (CloneNotSupportedException e) {
// from here falls to get workspace provider
}
if (provider==null)
provider = LanguageSettingsManager.getWorkspaceProvider(id);
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; 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 * @return list of providers contributed by all extensions. Preferable copy but if not possible
* will return raw provider. * will return raw provider.
@ -329,12 +290,7 @@ public class LanguageSettingsExtensionManager {
/*package*/ static List<ILanguageSettingsProvider> getExtensionProvidersInternal() { /*package*/ static List<ILanguageSettingsProvider> getExtensionProvidersInternal() {
ArrayList<ILanguageSettingsProvider> list = new ArrayList<ILanguageSettingsProvider>(fExtensionProviders.size()); ArrayList<ILanguageSettingsProvider> list = new ArrayList<ILanguageSettingsProvider>(fExtensionProviders.size());
for (String id : fExtensionProviders.keySet()) { for (String id : fExtensionProviders.keySet()) {
ILanguageSettingsProvider extensionProvider = null; ILanguageSettingsProvider extensionProvider = getExtensionProviderCopy(id, true);
try {
extensionProvider = getExtensionProviderClone(id);
} catch (CloneNotSupportedException e) {
// from here falls to get raw extension provider
}
if (extensionProvider==null) if (extensionProvider==null)
extensionProvider = fExtensionProviders.get(id); extensionProvider = fExtensionProviders.get(id);
@ -344,16 +300,59 @@ public class LanguageSettingsExtensionManager {
return list; return list;
} }
public static boolean equalsExtensionProviderShallow(ILanguageSettingsEditableProvider provider) throws CloneNotSupportedException { /**
String id = provider.getId(); * TODO
ILanguageSettingsProvider extensionProviderShallow = getExtensionProviderShallow(id); * @param provider
return provider.cloneShallow().equals(extensionProviderShallow); * @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(); String id = provider.getId();
ILanguageSettingsProvider extensionProvider = fExtensionProviders.get(id); if (deep || !(provider instanceof ILanguageSettingsEditableProvider)) {
return provider.equals(extensionProvider); 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) { public LanguageSettingsChangeEvent(ICProjectDescription prjDescription) {
if (!prjDescription.isReadOnly()) { 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))); CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception(msg)));
} }
@ -222,7 +223,8 @@ public class LanguageSettingsProvidersSerializer {
if (delta != null) if (delta != null)
deltaMap.put(cfgDescription.getId(), delta); deltaMap.put(cfgDescription.getId(), delta);
} else { } 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))); 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()]); return deltaMap.keySet().toArray(new String[deltaMap.size()]);
} }
@SuppressWarnings("nls")
@Override @Override
public String toString() { public String toString() {
return "LanguageSettingsChangeEvent for project=[" + getProjectName() + "]" 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 { private static IFile getStoreInProjectArea(IProject project) throws CoreException {
IFolder folder = project.getFolder(SETTINGS_FOLDER_NAME); IFolder folder = project.getFolder(SETTINGS_FOLDER_NAME);
if (!folder.exists()) { 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 * @param store - name of the store.
* @return location of the store in the plug-in state area * @return location of the store in the plug-in state area.
*/ */
private static URI getStoreInWorkspaceArea(String store) { private static URI getStoreInWorkspaceArea(String store) {
IPath location = CCorePlugin.getDefault().getStateLocation().append(store); IPath location = CCorePlugin.getDefault().getStateLocation().append(store);
@ -434,9 +442,9 @@ projects:
} }
} catch (Exception e) { } catch (Exception e) {
CCorePlugin.log("Internal error while trying to serialize language settings", e); //$NON-NLS-1$ String msg = "Internal error while trying to serialize language settings"; //$NON-NLS-1$
IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error while trying to serialize language settings", e); CCorePlugin.log(msg, e);
throw new CoreException(s); throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg, e));
} }
} }
@ -464,7 +472,7 @@ projects:
Node providerNode = providerNodes.item(i); Node providerNode = providerNodes.item(i);
String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID); String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
if (userDefinedProvidersIds.contains(providerId)) { 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())); CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception()));
continue; continue;
} }
@ -475,7 +483,7 @@ projects:
if (providers==null) if (providers==null)
providers= new ArrayList<ILanguageSettingsProvider>(); providers= new ArrayList<ILanguageSettingsProvider>();
if (!LanguageSettingsExtensionManager.equalsExtensionProvider(provider)) { if (!LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
providers.add(provider); providers.add(provider);
} }
} }
@ -600,9 +608,9 @@ projects:
} }
} catch (Exception e) { } catch (Exception e) {
IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error while trying to serialize language settings", e); String msg = "Internal error while trying to serialize language settings"; //$NON-NLS-1$
CCorePlugin.log(s); CCorePlugin.log(msg, e);
throw new CoreException(s); throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg, e));
} }
} }
@ -1008,12 +1016,9 @@ projects:
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>();
for (ILanguageSettingsProvider provider : baseProviders) { for (ILanguageSettingsProvider provider : baseProviders) {
if (provider instanceof ILanguageSettingsEditableProvider) { if (provider instanceof ILanguageSettingsEditableProvider) {
try { ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) provider, true);
provider = ((ILanguageSettingsEditableProvider) provider).clone(); if (newProvider != null) {
} catch (CloneNotSupportedException e) { provider = newProvider;
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, Status.OK,
"Not able to clone provider " + provider.getClass(), e);
CCorePlugin.log(status);
} }
} }
newProviders.add(provider); newProviders.add(provider);

View file

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

View file

@ -10,12 +10,13 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.ui.viewsupport; package org.eclipse.cdt.internal.ui.viewsupport;
import java.util.List;
import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceStatus; import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.ListenerList;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IBaseLabelProvider; 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.swt.graphics.Rectangle;
import org.eclipse.ui.texteditor.MarkerUtilities; 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.CModelException;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement; 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.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; 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.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CElementImageDescriptor;
@ -372,6 +378,35 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
} }
} }
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;
}
/** /**
* @param rc - resource to check * @param rc - resource to check
* @return flags {@link TICK_CONFIGURATION} if the resource has custom settings and possibly needs * @return flags {@link TICK_CONFIGURATION} if the resource has custom settings and possibly needs
@ -386,10 +421,7 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
if (prjDescription != null) { if (prjDescription != null) {
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
if (cfgDescription != null) { if (cfgDescription != null) {
IPath path = rc.getProjectRelativePath(); if (isCustomizedResource(cfgDescription, rc))
ICResourceDescription rcDescription = cfgDescription.getResourceDescription(path, true);
boolean isLSCustomized = LanguageSettingsManager_TBD.isCustomizedResource(cfgDescription, rc);
if (rcDescription != null || isLSCustomized)
result |= TICK_CONFIGURATION; result |= TICK_CONFIGURATION;
} }
} }