1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-28 11:25:35 +02:00

API cleanup & JavaDoc

This commit is contained in:
Andrew Gvozdev 2011-11-19 08:55:06 -05:00
parent ba7591a95b
commit da8e44baef
13 changed files with 222 additions and 210 deletions

View file

@ -48,7 +48,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
private static final String LANGUAGE_ID = "language.test.id"; private static final String LANGUAGE_ID = "language.test.id";
private static final String CUSTOM_PARAMETER = "customParameter"; private static final String CUSTOM_PARAMETER = "customParameter";
private static final String ELEM_TEST = "test"; private static final String ELEM_TEST = "test";
// those attributes must match that in AbstractBuiltinSpecsDetector // those attributes must match that in AbstractBuiltinSpecsDetector
private static final String ATTR_CONSOLE = "console"; //$NON-NLS-1$ private static final String ATTR_CONSOLE = "console"; //$NON-NLS-1$
@ -88,7 +88,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
return isExecuted; return isExecuted;
} }
} }
private class MockConsoleBuiltinSpecsDetector extends AbstractBuiltinSpecsDetector { private class MockConsoleBuiltinSpecsDetector extends AbstractBuiltinSpecsDetector {
@SuppressWarnings("nls") @SuppressWarnings("nls")
private final AbstractOptionParser[] optionParsers = { private final AbstractOptionParser[] optionParsers = {
@ -116,7 +116,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
return optionParsers; return optionParsers;
} }
} }
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
@ -141,35 +141,41 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
} }
public void testAbstractBuiltinSpecsDetector_GettersSetters() throws Exception { public void testAbstractBuiltinSpecsDetector_GettersSetters() throws Exception {
// define mock detector {
MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag(); // provider configured with null parameters
MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag();
detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, null, null, null); detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, null, null, null);
assertEquals(PROVIDER_ID, detector.getId());
assertEquals(PROVIDER_NAME, detector.getName());
assertEquals(null, detector.getLanguageScope());
assertEquals(null, detector.getSettingEntries(null, null, null));
assertEquals(null, detector.getCustomParameter());
assertEquals(false, detector.isExecuted());
List<String> languages = new ArrayList<String>(); assertEquals(PROVIDER_ID, detector.getId());
languages.add(LANGUAGE_ID); assertEquals(PROVIDER_NAME, detector.getName());
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); assertEquals(null, detector.getLanguageScope());
ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); assertEquals(null, detector.getSettingEntries(null, null, null));
entries.add(entry); assertEquals(null, detector.getCustomParameter());
assertEquals(false, detector.isExecuted());
}
detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, CUSTOM_PARAMETER); {
assertEquals(PROVIDER_ID, detector.getId()); // provider configured with non-null parameters
assertEquals(PROVIDER_NAME, detector.getName()); MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag();
assertEquals(languages, detector.getLanguageScope()); List<String> languages = new ArrayList<String>();
assertEquals(entries, detector.getSettingEntries(null, null, null)); languages.add(LANGUAGE_ID);
assertEquals(CUSTOM_PARAMETER, detector.getCustomParameter()); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
assertEquals(false, detector.isExecuted()); ICLanguageSettingEntry entry = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
entries.add(entry);
detector.execute();
assertEquals(true, detector.isExecuted()); detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, CUSTOM_PARAMETER);
assertEquals(PROVIDER_ID, detector.getId());
assertEquals(PROVIDER_NAME, detector.getName());
assertEquals(languages, detector.getLanguageScope());
assertEquals(entries, detector.getSettingEntries(null, null, null));
assertEquals(CUSTOM_PARAMETER, detector.getCustomParameter());
assertEquals(false, detector.isExecuted());
detector.execute();
assertEquals(true, detector.isExecuted());
}
} }
public void testAbstractBuiltinSpecsDetector_CloneAndEquals() throws Exception { public void testAbstractBuiltinSpecsDetector_CloneAndEquals() throws Exception {
// define mock detector // define mock detector
class MockDetectorCloneable extends MockBuiltinSpecsDetectorExecutedFlag implements Cloneable { class MockDetectorCloneable extends MockBuiltinSpecsDetectorExecutedFlag implements Cloneable {
@ -182,10 +188,10 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
return (MockDetectorCloneable) super.cloneShallow(); return (MockDetectorCloneable) super.cloneShallow();
} }
} }
// create instance to compare to // create instance to compare to
MockDetectorCloneable detector = new MockDetectorCloneable(); MockDetectorCloneable detector = new MockDetectorCloneable();
List<String> languages = new ArrayList<String>(); List<String> languages = new ArrayList<String>();
languages.add(LANGUAGE_ID); languages.add(LANGUAGE_ID);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -195,7 +201,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// check clone after initialization // check clone after initialization
MockDetectorCloneable clone0 = detector.clone(); MockDetectorCloneable clone0 = detector.clone();
assertTrue(detector.equals(clone0)); assertTrue(detector.equals(clone0));
// configure provider // configure provider
detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, CUSTOM_PARAMETER); detector.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, CUSTOM_PARAMETER);
assertEquals(false, detector.isConsoleEnabled()); assertEquals(false, detector.isConsoleEnabled());
@ -209,21 +215,21 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
assertTrue(detector.equals(clone)); assertTrue(detector.equals(clone));
} }
// check custom parameter // check custom parameter
{ {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
clone.setCustomParameter("changed"); clone.setCustomParameter("changed");
assertFalse(detector.equals(clone)); assertFalse(detector.equals(clone));
} }
// check language scope // check language scope
{ {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
clone.setLanguageScope(null); clone.setLanguageScope(null);
assertFalse(detector.equals(clone)); assertFalse(detector.equals(clone));
} }
// check console flag // check console flag
{ {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
@ -231,7 +237,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
clone.setConsoleEnabled( ! isConsoleEnabled ); clone.setConsoleEnabled( ! isConsoleEnabled );
assertFalse(detector.equals(clone)); assertFalse(detector.equals(clone));
} }
// check isExecuted flag // check isExecuted flag
{ {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
@ -240,14 +246,14 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(false, clone.isExecuted()); assertEquals(false, clone.isExecuted());
assertFalse(detector.equals(clone)); assertFalse(detector.equals(clone));
} }
// check entries // check entries
{ {
MockDetectorCloneable clone = detector.clone(); MockDetectorCloneable clone = detector.clone();
clone.setSettingEntries(null, null, null, null); clone.setSettingEntries(null, null, null, null);
assertFalse(detector.equals(clone)); assertFalse(detector.equals(clone));
} }
// check cloneShallow() // check cloneShallow()
{ {
MockDetectorCloneable detector2 = detector.clone(); MockDetectorCloneable detector2 = detector.clone();
@ -257,12 +263,12 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
detector2.setSettingEntries(null, null, null, null); detector2.setSettingEntries(null, null, null, null);
assertFalse(detector2.equals(clone)); assertFalse(detector2.equals(clone));
clone.execute(); clone.execute();
assertTrue(detector2.equals(clone)); assertTrue(detector2.equals(clone));
} }
} }
/** /**
*/ */
public void testAbstractBuiltinSpecsDetector_Serialize() throws Exception { public void testAbstractBuiltinSpecsDetector_Serialize() throws Exception {
@ -270,36 +276,36 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
// create empty XML // create empty XML
Document doc = XmlUtil.newDocument(); Document doc = XmlUtil.newDocument();
Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST);
// load it to new provider // load it to new provider
MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag(); MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag();
detector.load(rootElement); detector.load(rootElement);
assertEquals(false, detector.isConsoleEnabled()); assertEquals(false, detector.isConsoleEnabled());
} }
Element elementProvider; Element elementProvider;
{ {
// define mock detector // define mock detector
MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag(); MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag();
assertEquals(false, detector.isConsoleEnabled()); assertEquals(false, detector.isConsoleEnabled());
// redefine the settings // redefine the settings
detector.setConsoleEnabled(true); detector.setConsoleEnabled(true);
assertEquals(true, detector.isConsoleEnabled()); assertEquals(true, detector.isConsoleEnabled());
// serialize in XML // serialize in XML
Document doc = XmlUtil.newDocument(); Document doc = XmlUtil.newDocument();
Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST);
elementProvider = detector.serialize(rootElement); elementProvider = detector.serialize(rootElement);
String xmlString = XmlUtil.toString(doc); String xmlString = XmlUtil.toString(doc);
assertTrue(xmlString.contains(ATTR_CONSOLE)); assertTrue(xmlString.contains(ATTR_CONSOLE));
} }
{ {
// create another instance of the provider // create another instance of the provider
MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag(); MockBuiltinSpecsDetectorExecutedFlag detector = new MockBuiltinSpecsDetectorExecutedFlag();
assertEquals(false, detector.isConsoleEnabled()); assertEquals(false, detector.isConsoleEnabled());
// load element // load element
detector.load(elementProvider); detector.load(elementProvider);
assertEquals(true, detector.isConsoleEnabled()); assertEquals(true, detector.isConsoleEnabled());
@ -329,16 +335,16 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project); ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
MockConsoleBuiltinSpecsDetector detector = new MockConsoleBuiltinSpecsDetector(); MockConsoleBuiltinSpecsDetector detector = new MockConsoleBuiltinSpecsDetector();
detector.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}}); detector.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}});
detector.runForEachLanguage(cfgDescription, null, null, null); detector.runForEachLanguage(cfgDescription, null, null, null);
assertFalse(detector.isEmpty()); assertFalse(detector.isEmpty());
List<ICLanguageSettingEntry> noentries = detector.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> noentries = detector.getSettingEntries(null, null, null);
assertNull(noentries); assertNull(noentries);
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(cfgDescription, null, LANGUAGE_ID); List<ICLanguageSettingEntry> entries = detector.getSettingEntries(cfgDescription, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
assertEquals(expected, entries.get(0)); assertEquals(expected, entries.get(0));
@ -347,10 +353,10 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
public void testAbstractBuiltinSpecsDetector_RunGlobal() throws Exception { public void testAbstractBuiltinSpecsDetector_RunGlobal() throws Exception {
MockConsoleBuiltinSpecsDetector detector = new MockConsoleBuiltinSpecsDetector(); MockConsoleBuiltinSpecsDetector detector = new MockConsoleBuiltinSpecsDetector();
detector.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}}); detector.setLanguageScope(new ArrayList<String>() {{add(LANGUAGE_ID);}});
detector.runForEachLanguage(null, null, null, null); detector.runForEachLanguage(null, null, null, null);
assertFalse(detector.isEmpty()); assertFalse(detector.isEmpty());
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, LANGUAGE_ID); List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, LANGUAGE_ID);
ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); ICLanguageSettingEntry expected = new CMacroEntry("MACRO", "VALUE", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
assertEquals(expected, entries.get(0)); assertEquals(expected, entries.get(0));
@ -370,7 +376,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
final CLibraryPathEntry libraryPath_2 = new CLibraryPathEntry(new Path("/lib/path_2"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); final CLibraryPathEntry libraryPath_2 = new CLibraryPathEntry(new Path("/lib/path_2"), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_1 = new CLibraryFileEntry("lib_1.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); final CLibraryFileEntry libraryFile_1 = new CLibraryFileEntry("lib_1.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
final CLibraryFileEntry libraryFile_2 = new CLibraryFileEntry("lib_2.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY); final CLibraryFileEntry libraryFile_2 = new CLibraryFileEntry("lib_2.a", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
// Define mock detector adding unorganized entries // Define mock detector adding unorganized entries
MockBuiltinSpecsDetector detector = new MockBuiltinSpecsDetector() { MockBuiltinSpecsDetector detector = new MockBuiltinSpecsDetector() {
@Override @Override
@ -381,7 +387,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
detectedSettingEntries.add(macro_1); detectedSettingEntries.add(macro_1);
detectedSettingEntries.add(includeFile_1); detectedSettingEntries.add(includeFile_1);
detectedSettingEntries.add(includePath_1); detectedSettingEntries.add(includePath_1);
detectedSettingEntries.add(includePath_2); detectedSettingEntries.add(includePath_2);
detectedSettingEntries.add(includeFile_2); detectedSettingEntries.add(includeFile_2);
detectedSettingEntries.add(macro_2); detectedSettingEntries.add(macro_2);
@ -391,17 +397,17 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
return true; return true;
} }
}; };
// run specs detector // run specs detector
detector.startup(null); detector.startup(null);
detector.startupForLanguage(null); detector.startupForLanguage(null);
detector.processLine("", null); detector.processLine("", null);
detector.shutdownForLanguage(); detector.shutdownForLanguage();
detector.shutdown(); detector.shutdown();
// compare benchmarks, expected well-sorted // compare benchmarks, expected well-sorted
List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> entries = detector.getSettingEntries(null, null, null);
int i=0; int i=0;
assertEquals(includePath_1, entries.get(i++)); assertEquals(includePath_1, entries.get(i++));
assertEquals(includePath_2, entries.get(i++)); assertEquals(includePath_2, entries.get(i++));
@ -415,7 +421,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
assertEquals(libraryPath_2, entries.get(i++)); assertEquals(libraryPath_2, entries.get(i++));
assertEquals(libraryFile_1, entries.get(i++)); assertEquals(libraryFile_1, entries.get(i++));
assertEquals(libraryFile_2, entries.get(i++)); assertEquals(libraryFile_2, entries.get(i++));
assertEquals(12, entries.size()); assertEquals(12, entries.size());
} }
} }

View file

@ -1,12 +1,12 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009, 2009 Andrew Gvozdev (Quoin Inc.) and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Andrew Gvozdev (Quoin Inc.) - initial API and implementation * Andrew Gvozdev - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.scannerconfig; package org.eclipse.cdt.managedbuilder.internal.scannerconfig;

View file

@ -111,7 +111,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
// get test plugin extension provider // get test plugin extension provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_PROVIDER_ID); ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_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 LanguageSettingsBaseProvider); assertTrue(rawProvider instanceof LanguageSettingsBaseProvider);
@ -225,7 +225,26 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
assertEquals(languages.size(), actualLanguageIds.size()); assertEquals(languages.size(), actualLanguageIds.size());
} }
} }
/**
* LanguageSettingsBaseProvider is not allowed to be configured twice.
*/
public void testBaseProviderCantReconfigure() throws Exception {
// create LanguageSettingsBaseProvider
LanguageSettingsBaseProvider provider = new LanguageSettingsBaseProvider();
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("/usr/include/", 0));
// configure it
provider.configureProvider("id", "name", null, entries, null);
try {
// attempt to configure it twice should fail
provider.configureProvider("id", "name", null, entries, null);
fail("LanguageSettingsBaseProvider is not allowed to be configured twice");
} catch (UnsupportedOperationException e) {
}
}
/** /**
* TODO * TODO
*/ */
@ -238,10 +257,10 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider); assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
LanguageSettingsSerializableProvider provider = (LanguageSettingsSerializableProvider) rawProvider; LanguageSettingsSerializableProvider provider = (LanguageSettingsSerializableProvider) rawProvider;
assertEquals(null, provider.getLanguageScope()); assertEquals(null, provider.getLanguageScope());
assertEquals("", provider.getCustomParameter()); assertEquals("", provider.getCustomParameter());
List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>();
expected.add(new CMacroEntry("MACRO", "value", 0)); expected.add(new CMacroEntry("MACRO", "value", 0));
assertEquals(expected, provider.getSettingEntries(null, null, null)); assertEquals(expected, provider.getSettingEntries(null, null, null));
@ -261,65 +280,45 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider); assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(rawProvider)); assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(rawProvider));
// compare with workspace provider // compare with workspace provider
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID); ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp); ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertSame(rawProvider, providerWspRaw); 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);
assertFalse(LanguageSettingsManager.isWorkspaceProvider(providerExt)); assertFalse(LanguageSettingsManager.isWorkspaceProvider(providerExt));
assertTrue(providerExt instanceof ILanguageSettingsEditableProvider); assertTrue(providerExt instanceof ILanguageSettingsEditableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerExt)); assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerExt));
ILanguageSettingsProvider providerExt2 = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider providerExt2 = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
assertNotSame(providerExt, providerExt2); assertNotSame(providerExt, providerExt2);
assertEquals(providerExt, providerExt2); assertEquals(providerExt, providerExt2);
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
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(LanguageSettingsExtensionManager.equalsExtensionProvider(providerWspRaw));
} }
// Test shallow copy // Test shallow copy
{ {
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
assertNotNull(provider); assertNotNull(provider);
assertTrue(provider instanceof ILanguageSettingsEditableProvider); assertTrue(provider instanceof ILanguageSettingsEditableProvider);
ILanguageSettingsProvider providerShallow = LanguageSettingsExtensionManager.getExtensionProviderShallow(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider providerShallow = LanguageSettingsExtensionManager.getExtensionProviderShallow(EXTENSION_EDITABLE_PROVIDER_ID);
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(LanguageSettingsExtensionManager.equalsExtensionProvider(providerShallow));
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) providerShallow)); assertTrue(LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) providerShallow));
} }
} }
// /**
// * LanguageSettingsBaseProvider is not allowed to be configured twice.
// */
// public void testBaseProviderConfigure() throws Exception {
// // create LanguageSettingsBaseProvider
// LanguageSettingsBaseProvider provider = new LanguageSettingsBaseProvider();
// List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
// entries.add(new CIncludePathEntry("/usr/include/", 0));
// // configure it
// provider.configureProvider("id", "name", null, entries, null);
//
// try {
// // attempt to configure it twice should fail
// provider.configureProvider("id", "name", null, entries, null);
// fail("LanguageSettingsBaseProvider is not allowed to be configured twice");
// } catch (UnsupportedOperationException e) {
// }
// }
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009, 2010 Andrew Gvozdev and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -230,11 +230,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertNotNull(actual); assertNotNull(actual);
assertEquals(0, actual.size()); assertEquals(0, actual.size());
} }
// use careless provider causing an exception // use careless provider causing an exception
{ {
setExpectedNumberOfLoggedNonOKStatusObjects(1); setExpectedNumberOfLoggedNonOKStatusObjects(1);
ILanguageSettingsProvider providerNPE = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null) { ILanguageSettingsProvider providerNPE = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null) {
@Override @Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) { public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
@ -419,7 +419,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertEquals(0, actual.size()); assertEquals(0, actual.size());
} }
} }
/** /**
*/ */
public void testProvider_DefaultEntries() throws Exception { public void testProvider_DefaultEntries() throws Exception {
@ -428,15 +428,15 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project);
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof CConfigurationDescription); assertTrue(cfgDescription instanceof CConfigurationDescription);
final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/"); final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/");
assertNotNull(parentFolder); assertNotNull(parentFolder);
final IFile emptySettingsPath = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/empty"); final IFile emptySettingsPath = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/empty");
assertNotNull(emptySettingsPath); assertNotNull(emptySettingsPath);
// store the entries as default entries // store the entries as default entries
final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 0)); entries.add(new CIncludePathEntry("path0", 0));
@ -449,11 +449,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
} }
return null; return null;
} }
}; };
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); cfgDescription.setLanguageSettingProviders(providers);
{ {
// retrieve entries for a resource // retrieve entries for a resource
IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource"); IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource");
@ -691,7 +691,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, provider.getId()); assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, provider.getId());
assertEquals(EXTENSION_EDITABLE_PROVIDER_NAME, provider.getName()); assertEquals(EXTENSION_EDITABLE_PROVIDER_NAME, provider.getName());
// get raw provider // get raw provider
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, rawProvider.getId()); assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, rawProvider.getId());
@ -699,7 +699,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider); assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
// assert they are not the same object // assert they are not the same object
assertNotSame(provider, rawProvider); assertNotSame(provider, rawProvider);
{ {
// make sure entries are the same // make sure entries are the same
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
@ -707,14 +707,14 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ICLanguageSettingEntry> rawEntries = rawProvider.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> rawEntries = rawProvider.getSettingEntries(null, null, null);
assertEquals(entries, rawEntries); assertEquals(entries, rawEntries);
} }
{ {
// set new entries to the raw provider // set new entries to the raw provider
List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>();
newEntries.add(new CIncludePathEntry("path0", 0)); newEntries.add(new CIncludePathEntry("path0", 0));
newEntries.add(new CIncludePathEntry("path1", 0)); newEntries.add(new CIncludePathEntry("path1", 0));
((LanguageSettingsSerializableProvider)rawProvider).setSettingEntries(null, null, null, newEntries); ((LanguageSettingsSerializableProvider)rawProvider).setSettingEntries(null, null, null, newEntries);
// check that the workspace provider gets them too // check that the workspace provider gets them too
List<ICLanguageSettingEntry> newRawEntries = rawProvider.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> newRawEntries = rawProvider.getSettingEntries(null, null, null);
assertEquals(newEntries, newRawEntries); assertEquals(newEntries, newRawEntries);
@ -742,13 +742,13 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(1, entries.size()); // defined in the extension assertEquals(1, entries.size()); // defined in the extension
} }
// define new entries for the raw provider // define new entries for the raw provider
List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>();
newEntries.add(new CIncludePathEntry("path0", 0)); newEntries.add(new CIncludePathEntry("path0", 0));
newEntries.add(new CIncludePathEntry("path1", 0)); newEntries.add(new CIncludePathEntry("path1", 0));
newEntries.add(new CIncludePathEntry("path2", 0)); newEntries.add(new CIncludePathEntry("path2", 0));
{ {
// replace raw provider // replace raw provider
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
@ -757,7 +757,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
providers.add(newRawProvider); providers.add(newRawProvider);
LanguageSettingsManager.setWorkspaceProviders(providers); LanguageSettingsManager.setWorkspaceProviders(providers);
} }
{ {
// check that provider provides the new entries // check that provider provides the new entries
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
@ -765,7 +765,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertEquals(newEntries, entries); assertEquals(newEntries, entries);
} }
} }
/** /**
* Test ability to be called with workspace provider as well (NOOP). * Test ability to be called with workspace provider as well (NOOP).
*/ */
@ -774,14 +774,14 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
assertNotSame(provider, rawProvider); assertNotSame(provider, rawProvider);
// attempt to "replace" with workspace provider (which is a wrapper around raw provider), should be NOOP // attempt to "replace" with workspace provider (which is a wrapper around raw provider), should be NOOP
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
LanguageSettingsManager.setWorkspaceProviders(providers); LanguageSettingsManager.setWorkspaceProviders(providers);
ILanguageSettingsProvider newRawProvider = LanguageSettingsManager.getRawProvider(provider); ILanguageSettingsProvider newRawProvider = LanguageSettingsManager.getRawProvider(provider);
assertSame(rawProvider, newRawProvider); assertSame(rawProvider, newRawProvider);
// check for no side effect // check for no side effect
assertSame(provider, providers.get(0)); assertSame(provider, providers.get(0));
} }
@ -793,23 +793,23 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0); CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry); entries.add(entry);
// create resources // create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile file = ResourceHelper.createFile(project, "file.cpp"); IFile file = ResourceHelper.createFile(project, "file.cpp");
assertNotNull(file); assertNotNull(file);
// create a provider and set the entries // create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, null, entries); provider.setSettingEntries(null, file, null, entries);
// build the hierarchy // build the hierarchy
LanguageSettingsProvidersSerializer.buildResourceTree(provider, null, null, project); LanguageSettingsProvidersSerializer.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level // check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
} }
/** /**
*/ */
public void testBuildResourceTree_FileInSubFolder() throws Exception { public void testBuildResourceTree_FileInSubFolder() throws Exception {
@ -817,24 +817,24 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0); CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry); entries.add(entry);
// create resources // create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder = ResourceHelper.createFolder(project, "Folder"); IFolder folder = ResourceHelper.createFolder(project, "Folder");
IFile file = ResourceHelper.createFile(project, "Folder/file.cpp"); IFile file = ResourceHelper.createFile(project, "Folder/file.cpp");
// create a provider and set the entries // create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, null, entries); provider.setSettingEntries(null, file, null, entries);
// build the hierarchy // build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, null, project); LanguageSettingsManager.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level // check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, null)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
} }
/** /**
*/ */
public void testBuildResourceTree_TwoSubFolders() throws Exception { public void testBuildResourceTree_TwoSubFolders() throws Exception {
@ -843,31 +843,31 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
entries1.add(new CMacroEntry("MACRO_1", null, 0)); entries1.add(new CMacroEntry("MACRO_1", null, 0));
List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>();
entries2.add(new CMacroEntry("MACRO_2", null, 0)); entries2.add(new CMacroEntry("MACRO_2", null, 0));
// create resources // create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder1 = ResourceHelper.createFolder(project, "Folder1"); IFolder folder1 = ResourceHelper.createFolder(project, "Folder1");
IFolder folder2 = ResourceHelper.createFolder(project, "Folder2"); IFolder folder2 = ResourceHelper.createFolder(project, "Folder2");
IFile file1 = ResourceHelper.createFile(project, "Folder1/file1.cpp"); IFile file1 = ResourceHelper.createFile(project, "Folder1/file1.cpp");
IFile file2 = ResourceHelper.createFile(project, "Folder2/file2.cpp"); IFile file2 = ResourceHelper.createFile(project, "Folder2/file2.cpp");
// create a provider and set the entries // create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file1, null, entries1); provider.setSettingEntries(null, file1, null, entries1);
provider.setSettingEntries(null, file2, null, entries2); provider.setSettingEntries(null, file2, null, entries2);
// build the hierarchy // build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, null, project); LanguageSettingsManager.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level // check that entries go to highest possible level
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file1, null)); assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file1, null));
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder1, null)); assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder1, null));
assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file2, null)); assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file2, null));
assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder2, null)); assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder2, null));
assertEquals(0, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null).size()); assertEquals(0, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null).size());
} }
/** /**
*/ */
public void testBuildResourceTree_FlippingSettings() throws Exception { public void testBuildResourceTree_FlippingSettings() throws Exception {
@ -876,16 +876,16 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
entries1.add(new CMacroEntry("MACRO_1", null, 0)); entries1.add(new CMacroEntry("MACRO_1", null, 0));
List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>();
entries2.add(new CMacroEntry("MACRO_2", null, 0)); entries2.add(new CMacroEntry("MACRO_2", null, 0));
// create resources // create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile file1 = ResourceHelper.createFile(project, "file1.cpp"); IFile file1 = ResourceHelper.createFile(project, "file1.cpp");
IFile file2 = ResourceHelper.createFile(project, "file2.cpp"); IFile file2 = ResourceHelper.createFile(project, "file2.cpp");
IFile file3 = ResourceHelper.createFile(project, "file3.cpp"); IFile file3 = ResourceHelper.createFile(project, "file3.cpp");
// create a provider // create a provider
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
// set the entries for the first 2 files // set the entries for the first 2 files
provider.setSettingEntries(null, file1, null, entries1); provider.setSettingEntries(null, file1, null, entries1);
provider.setSettingEntries(null, file2, null, entries1); provider.setSettingEntries(null, file2, null, entries1);
@ -895,7 +895,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file1, null)); assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file1, null));
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file2, null)); assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file2, null));
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null)); assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
// set the entries for the second+third files (second file flips the settings) // set the entries for the second+third files (second file flips the settings)
provider.setSettingEntries(null, file2, null, entries2); provider.setSettingEntries(null, file2, null, entries2);
provider.setSettingEntries(null, file3, null, entries2); provider.setSettingEntries(null, file3, null, entries2);
@ -915,22 +915,22 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0); CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry); entries.add(entry);
// create resources // create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder = ResourceHelper.createFolder(project, "Folder"); IFolder folder = ResourceHelper.createFolder(project, "Folder");
IFile file = ResourceHelper.createFile(project, "Folder/file.cpp"); IFile file = ResourceHelper.createFile(project, "Folder/file.cpp");
// create a provider and set the entries // create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, LANG_CPP, entries); provider.setSettingEntries(null, file, LANG_CPP, entries);
// build the hierarchy // build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, LANG_CPP, project); LanguageSettingsManager.buildResourceTree(provider, null, LANG_CPP, project);
// check that entries go to highest possible level // check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, LANG_CPP)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, LANG_CPP));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, LANG_CPP)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, LANG_CPP));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, LANG_CPP)); assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, LANG_CPP));
} }
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009 Andrew Gvozdev and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -1238,17 +1238,17 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
sampleLanguages.add(LANG_ID); sampleLanguages.add(LANG_ID);
// create a model provider // create a model provider
class LanguageSettingsSerializableMock extends LanguageSettingsSerializableProvider implements Cloneable { class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable {
public LanguageSettingsSerializableMock(String id, String name) { public MockSerializableProvider(String id, String name) {
super(id, name); super(id, name);
} }
@Override @Override
public LanguageSettingsSerializableMock clone() throws CloneNotSupportedException { public MockSerializableProvider clone() throws CloneNotSupportedException {
return (LanguageSettingsSerializableMock) super.clone(); return (MockSerializableProvider) super.clone();
} }
} }
LanguageSettingsSerializableMock provider1 = new LanguageSettingsSerializableMock(PROVIDER_1, PROVIDER_NAME_1); MockSerializableProvider provider1 = new MockSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider1.setLanguageScope(sampleLanguages); provider1.setLanguageScope(sampleLanguages);
provider1.setCustomParameter(CUSTOM_PARAMETER); provider1.setCustomParameter(CUSTOM_PARAMETER);
assertEquals(false, provider1.isStoringEntriesInProjectArea()); assertEquals(false, provider1.isStoringEntriesInProjectArea());
@ -1257,7 +1257,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
provider1.setSettingEntries(null, null, LANG_ID, sampleEntries_2); provider1.setSettingEntries(null, null, LANG_ID, sampleEntries_2);
// clone provider // clone provider
LanguageSettingsSerializableMock providerClone = provider1.clone(); MockSerializableProvider providerClone = provider1.clone();
assertNotSame(provider1, providerClone); assertNotSame(provider1, providerClone);
assertTrue(provider1.equals(providerClone)); assertTrue(provider1.equals(providerClone));
assertTrue(provider1.getClass()==providerClone.getClass()); assertTrue(provider1.getClass()==providerClone.getClass());
@ -1286,17 +1286,17 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
sampleLanguages.add(LANG_ID); sampleLanguages.add(LANG_ID);
// create a model provider // create a model provider
class LanguageSettingsSerializableMock extends LanguageSettingsSerializableProvider implements Cloneable { class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable {
public LanguageSettingsSerializableMock(String id, String name) { public MockSerializableProvider(String id, String name) {
super(id, name); super(id, name);
} }
@Override @Override
public LanguageSettingsSerializableMock cloneShallow() throws CloneNotSupportedException { public MockSerializableProvider cloneShallow() throws CloneNotSupportedException {
return (LanguageSettingsSerializableMock) super.cloneShallow(); return (MockSerializableProvider) super.cloneShallow();
} }
} }
LanguageSettingsSerializableMock provider1 = new LanguageSettingsSerializableMock(PROVIDER_1, PROVIDER_NAME_1); MockSerializableProvider provider1 = new MockSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider1.setLanguageScope(sampleLanguages); provider1.setLanguageScope(sampleLanguages);
provider1.setCustomParameter(CUSTOM_PARAMETER); provider1.setCustomParameter(CUSTOM_PARAMETER);
assertEquals(false, provider1.isStoringEntriesInProjectArea()); assertEquals(false, provider1.isStoringEntriesInProjectArea());
@ -1307,7 +1307,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
provider1.setSettingEntries(null, null, null, entries); provider1.setSettingEntries(null, null, null, entries);
// clone provider // clone provider
LanguageSettingsSerializableMock providerClone = provider1.cloneShallow(); MockSerializableProvider providerClone = provider1.cloneShallow();
assertNotSame(provider1, providerClone); assertNotSame(provider1, providerClone);
assertFalse(provider1.equals(providerClone)); assertFalse(provider1.equals(providerClone));
assertTrue(provider1.getClass()==providerClone.getClass()); assertTrue(provider1.getClass()==providerClone.getClass());

View file

@ -1,12 +1,12 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009, 2009 Andrew Gvozdev (Quoin Inc.) and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Andrew Gvozdev (Quoin Inc.) - initial API and implementation * Andrew Gvozdev - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers; package org.eclipse.cdt.core.language.settings.providers;
@ -14,7 +14,6 @@ package org.eclipse.cdt.core.language.settings.providers;
import java.util.List; import java.util.List;
import org.eclipse.cdt.core.AbstractExecutableExtensionBase; import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
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.ICLanguageSettingEntry;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
@ -22,6 +21,7 @@ import org.eclipse.core.resources.IResource;
public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase
implements ILanguageSettingsProvider { implements ILanguageSettingsProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) { public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
return null; return null;
} }

View file

@ -1,12 +1,12 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009, 2009 Andrew Gvozdev (Quoin Inc.) and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Andrew Gvozdev (Quoin Inc.) - initial API and implementation * Andrew Gvozdev - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers; package org.eclipse.cdt.core.language.settings.providers;
@ -28,7 +28,7 @@ public interface ILanguageSettingsEditableProvider extends ILanguageSettingsProv
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId, List<ICLanguageSettingEntry> entries); public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId, List<ICLanguageSettingEntry> entries);
public boolean isEmpty(); public boolean isEmpty();
public void clear(); public void clear();
public ILanguageSettingsEditableProvider cloneShallow() throws CloneNotSupportedException; public ILanguageSettingsEditableProvider cloneShallow() throws CloneNotSupportedException;
public ILanguageSettingsEditableProvider clone() throws CloneNotSupportedException; public ILanguageSettingsEditableProvider clone() throws CloneNotSupportedException;
} }

View file

@ -24,7 +24,7 @@ import org.eclipse.core.resources.IResource;
* This interface is used to deliver additions to compiler options such as * This interface is used to deliver additions to compiler options such as
* include paths (-I) or preprocessor defines (-D) and others (see * include paths (-I) or preprocessor defines (-D) and others (see
* {@link ICSettingEntry#INCLUDE_PATH} and other kinds). * {@link ICSettingEntry#INCLUDE_PATH} and other kinds).
* <br> * <br><br>
* To define a provider like that use extension point * To define a provider like that use extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this * {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this
* interface. CDT provides a few general use implementations such as * interface. CDT provides a few general use implementations such as

View file

@ -18,15 +18,17 @@ import java.util.List;
import org.eclipse.cdt.core.AbstractExecutableExtensionBase; import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
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.ICLanguageSettingEntry;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsStorage;
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
/** /**
* {@code LanguageSettingsBaseProvider} is a basic implementation of {@link ILanguageSettingsProvider} * {@code LanguageSettingsBaseProvider} is a basic implementation of {@link ILanguageSettingsProvider}
* defined in {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point. * for the extensions defined by {@code org.eclipse.cdt.core.LanguageSettingsProvider} extension point.
* *
* This implementation supports "static" list of entries for languages specified in * This implementation supports "static" list of entries for languages specified in
* the extension point. * the extension point.
* *
* @since 6.0 * @since 6.0
*/ */
public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider { public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
@ -43,11 +45,12 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* Default constructor. * Default constructor.
*/ */
public LanguageSettingsBaseProvider() { public LanguageSettingsBaseProvider() {
super();
} }
/** /**
* Constructor. Creates an "empty" provider. * Constructor. Creates an "empty" non-configured provider.
* *
* @param id - id of the provider. * @param id - id of the provider.
* @param name - name of the provider to be presented to a user. * @param name - name of the provider to be presented to a user.
*/ */
@ -57,7 +60,7 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/** /**
* Constructor. * Constructor.
* *
* @param id - id of the provider. * @param id - id of the provider.
* @param name - name of the provider to be presented to a user. * @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for. * @param languages - list of languages the {@code entries} provided for.
@ -66,15 +69,16 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* @param entries - the list of language settings entries this provider provides. * @param entries - the list of language settings entries this provider provides.
* If {@code null} is passed, the provider creates an empty list. * If {@code null} is passed, the provider creates an empty list.
*/ */
public LanguageSettingsBaseProvider(String id, String name, List<String> languages, List<ICLanguageSettingEntry> entries) { public LanguageSettingsBaseProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries) {
super(id, name); super(id, name);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null; this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries); this.entries = getPooledList(entries);
} }
/** /**
* Constructor. * Constructor.
* *
* @param id - id of the provider. * @param id - id of the provider.
* @param name - name of the provider to be presented to a user. * @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for. * @param languages - list of languages the {@code entries} provided for.
@ -85,10 +89,11 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* @param customParameter - a custom parameter as the means to customize * @param customParameter - a custom parameter as the means to customize
* providers extending this class. * providers extending this class.
*/ */
public LanguageSettingsBaseProvider(String id, String name, List<String> languages, List<ICLanguageSettingEntry> entries, String customParameter) { public LanguageSettingsBaseProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries, String customParameter) {
super(id, name); super(id, name);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null; this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries); this.entries = getPooledList(entries);
this.customParameter = customParameter; this.customParameter = customParameter;
} }
@ -97,9 +102,9 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* the extension point is done in 2 steps. First, the class is created as * the extension point is done in 2 steps. First, the class is created as
* an executable extension using the default provider. Then this method is * an executable extension using the default provider. Then this method is
* used to configure the provider. * used to configure the provider.
* *<br><br>
* FIXME It is not allowed to reconfigure the provider. * It is not allowed to reconfigure the provider.
* *
* @param id - id of the provider. * @param id - id of the provider.
* @param name - name of the provider to be presented to a user. * @param name - name of the provider to be presented to a user.
* @param languages - list of languages the {@code entries} provided for. * @param languages - list of languages the {@code entries} provided for.
@ -109,46 +114,54 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* If {@code null} is passed, the provider creates an empty list. * If {@code null} is passed, the provider creates an empty list.
* @param customParameter - a custom parameter as the means to customize * @param customParameter - a custom parameter as the means to customize
* providers extending this class from extension definition in {@code plugin.xml}. * providers extending this class from extension definition in {@code plugin.xml}.
* *
* FIXME @throws UnsupportedOperationException if an attempt to reconfigure provider is made. * @throws UnsupportedOperationException if an attempt to reconfigure provider is made.
*/ */
public void configureProvider(String id, String name, List<String> languages, List<ICLanguageSettingEntry> entries, String customParameter) { public void configureProvider(String id, String name, List<String> languages,
// if (this.entries!=null) List<ICLanguageSettingEntry> entries, String customParameter) {
// throw new UnsupportedOperationException(SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$ if (this.entries!=null)
throw new UnsupportedOperationException(SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$
setId(id); setId(id);
setName(name); setName(name);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null; this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries); this.entries = getPooledList(entries);
this.customParameter = customParameter; this.customParameter = customParameter;
} }
private List<ICLanguageSettingEntry> getPooledList(List<ICLanguageSettingEntry> entries) {
if (entries != null) {
return LanguageSettingsStorage.getPooledList(entries);
}
return LanguageSettingsStorage.getPooledEmptyList();
}
/** /**
* {@inheritDoc} * {@inheritDoc}
* @param cfgDescription - configuration description. *
* @param rc - resource such as file or folder.
* @param languageId - language id. If {@code null}, then entries defined for * @param languageId - language id. If {@code null}, then entries defined for
* the language scope are returned. See {@link #getLanguageScope()} * the language scope are returned. See {@link #getLanguageScope()}
*
* @return unmodifiable list of setting entries or {@code null} if no settings defined.
* the list is internally pooled and guaranteed to be the same object for equal
* lists.
*/ */
@Override @Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) { public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription,
if (languageScope==null) { IResource rc, String languageId) {
if (entries==null) if (languageScope == null) {
return null; return entries;
return Collections.unmodifiableList(entries);
} }
for (String lang : languageScope) { for (String lang : languageScope) {
if (lang.equals(languageId)) { if (lang.equals(languageId)) {
if (entries==null) return entries;
return null;
return Collections.unmodifiableList(entries);
} }
} }
return null; return null;
} }
/** /**
* @return the list of languages this provider provides for. * @return the unmodifiable list of languages this provider provides for.
* If {@code null}, the provider provides for any language. * If {@code null}, the provider provides for any language.
*/ */
public List<String> getLanguageScope() { public List<String> getLanguageScope() {
@ -163,13 +176,4 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
public String getCustomParameter() { public String getCustomParameter() {
return customParameter; return customParameter;
} }
/**
* @param entries
* @return copy of the list of the entries.
*/
private List<ICLanguageSettingEntry> cloneList(List<ICLanguageSettingEntry> entries) {
return entries!=null ? new ArrayList<ICLanguageSettingEntry>(entries) : null;
}
} }

View file

@ -26,7 +26,7 @@ import org.osgi.service.prefs.Preferences;
/** /**
* Collection of utilities for legacy support of older Scanner Discovery functionality. * Collection of utilities for legacy support of older Scanner Discovery functionality.
* This class is temporary and not intended to be used by clients. * This class is temporary and not intended to be used by clients.
* *
* @noextend This class is not intended to be subclassed by clients. * @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
*/ */
@ -99,7 +99,7 @@ public class ScannerDiscoveryLegacySupport {
* Returns the values of scanner discovery profiles (scannerConfigDiscoveryProfileId) which were deprecated * Returns the values of scanner discovery profiles (scannerConfigDiscoveryProfileId) which were deprecated
* and replaced with language settings providers in plugin.xml. * and replaced with language settings providers in plugin.xml.
* This (temporary) function serves as fail-safe switch during the transition. * This (temporary) function serves as fail-safe switch during the transition.
* *
* @param id - can be id of either org.eclipse.cdt.managedbuilder.internal.core.InputType * @param id - can be id of either org.eclipse.cdt.managedbuilder.internal.core.InputType
* or org.eclipse.cdt.managedbuilder.internal.core.ToolChain. * or org.eclipse.cdt.managedbuilder.internal.core.ToolChain.
* @return legacy scannerConfigDiscoveryProfileId. * @return legacy scannerConfigDiscoveryProfileId.
@ -108,8 +108,9 @@ public class ScannerDiscoveryLegacySupport {
public static String getDeprecatedLegacyProfiles(String id) { public static String getDeprecatedLegacyProfiles(String id) {
if (legacyProfiles == null) { if (legacyProfiles == null) {
legacyProfiles = new HashMap<String, String>(); legacyProfiles = new HashMap<String, String>();
// InputTypes // InputTypes
// TODO -doublecheck
// legacyProfiles.put(inputTypeId, scannerConfigDiscoveryProfileId); // legacyProfiles.put(inputTypeId, scannerConfigDiscoveryProfileId);
legacyProfiles.put("cdt.managedbuild.tool.gnu.c.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile"); legacyProfiles.put("cdt.managedbuild.tool.gnu.c.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile");
legacyProfiles.put("cdt.managedbuild.tool.gnu.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile"); legacyProfiles.put("cdt.managedbuild.tool.gnu.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile");
@ -118,11 +119,12 @@ public class ScannerDiscoveryLegacySupport {
legacyProfiles.put("cdt.managedbuild.tool.xlc.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile"); legacyProfiles.put("cdt.managedbuild.tool.xlc.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile");
legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile"); legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile");
legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfileCPP"); legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfileCPP");
// Toolchains // Toolchains
// TODO -doublecheck
// legacyProfiles.put(toolchainId, scannerConfigDiscoveryProfileId); // legacyProfiles.put(toolchainId, scannerConfigDiscoveryProfileId);
} }
return legacyProfiles.get(id); return legacyProfiles.get(id);
} }

View file

@ -71,7 +71,6 @@ public class LanguageSettingsExtensionManager {
loadProviderExtensions(); loadProviderExtensions();
} catch (Throwable e) { } catch (Throwable e) {
CCorePlugin.log("Error loading language settings providers extensions", e); //$NON-NLS-1$ CCorePlugin.log("Error loading language settings providers extensions", e); //$NON-NLS-1$
} finally {
} }
} }
@ -79,7 +78,7 @@ public class LanguageSettingsExtensionManager {
* Load language settings providers contributed via the extension point. * Load language settings providers contributed via the extension point.
*/ */
synchronized private static void loadProviderExtensions() { synchronized private static void loadProviderExtensions() {
// sort by name - for the providers taken from platform extensions // sort by name - the providers defined via extensions are kept in separate list sorted
Set<ILanguageSettingsProvider> sortedProviders = new TreeSet<ILanguageSettingsProvider>( Set<ILanguageSettingsProvider> sortedProviders = new TreeSet<ILanguageSettingsProvider>(
new Comparator<ILanguageSettingsProvider>() { new Comparator<ILanguageSettingsProvider>() {
@Override @Override
@ -111,7 +110,7 @@ public class LanguageSettingsExtensionManager {
for (IExtension ext : extensions) { for (IExtension ext : extensions) {
for (IConfigurationElement cfgEl : ext.getConfigurationElements()) { for (IConfigurationElement cfgEl : ext.getConfigurationElements()) {
ILanguageSettingsProvider provider = null; ILanguageSettingsProvider provider = null;
String id=null; String id = null;
try { try {
if (cfgEl.getName().equals(ELEM_PROVIDER)) { if (cfgEl.getName().equals(ELEM_PROVIDER)) {
id = determineAttributeValue(cfgEl, ATTR_ID); id = determineAttributeValue(cfgEl, ATTR_ID);
@ -169,8 +168,8 @@ public class LanguageSettingsExtensionManager {
for (IConfigurationElement ceLang : ce.getChildren(ELEM_LANGUAGE_SCOPE)) { for (IConfigurationElement ceLang : ce.getChildren(ELEM_LANGUAGE_SCOPE)) {
String langId = determineAttributeValue(ceLang, ATTR_ID); String langId = determineAttributeValue(ceLang, ATTR_ID);
if (langId.trim().length()>0) { if (langId.length() > 0) {
if (languages==null) { if (languages == null) {
languages = new ArrayList<String>(); languages = new ArrayList<String>();
} }
languages.add(langId); languages.add(langId);
@ -192,8 +191,9 @@ public class LanguageSettingsExtensionManager {
ICLanguageSettingEntry entry = (ICLanguageSettingEntry) CDataUtil.createEntry( ICLanguageSettingEntry entry = (ICLanguageSettingEntry) CDataUtil.createEntry(
entryKind, entryName, entryValue, null, flags); entryKind, entryName, entryValue, null, flags);
if (entries == null) if (entries == null) {
entries = new ArrayList<ICLanguageSettingEntry>(); entries = new ArrayList<ICLanguageSettingEntry>();
}
entries.add(entry); entries.add(entry);
} catch (Exception e) { } catch (Exception e) {
@ -213,7 +213,7 @@ public class LanguageSettingsExtensionManager {
* Creates empty non-configured provider from extension point definition. The method will * Creates empty non-configured provider from extension point definition. The method will
* inspect extension registry for extension point "org.eclipse.cdt.core.LanguageSettingsProvider" * inspect extension registry for extension point "org.eclipse.cdt.core.LanguageSettingsProvider"
* to determine bundle and instantiate the class. * to determine bundle and instantiate the class.
* ID and name of provider are assigned from first extension point encountered. * ID and name of provider are assigned from the first encountered extension point specifying the class.
* *
* @param className - full qualified class name of provider. * @param className - full qualified class name of provider.
* @param registry - extension registry * @param registry - extension registry

View file

@ -65,7 +65,8 @@
<annotation> <annotation>
<documentation> <documentation>
A fully qualified name of the Java class that implements &lt;samp&gt;org.eclipse.cdt.core.settings.model.ILanguageSettingsProvider&lt;/samp&gt; interface. If empty, &lt;samp&gt;org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider&lt;/samp&gt; is used by default which provides basic functionality defined by this extension point. A fully qualified name of the Java class that implements &lt;samp&gt;org.eclipse.cdt.core.settings.model.ILanguageSettingsProvider&lt;/samp&gt; interface. If empty, &lt;samp&gt;org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider&lt;/samp&gt; is used by default which provides basic functionality defined by this extension point.
If there is a need to configure a provider, attribute parameter could be used in a class extending &lt;samp&gt;LanguageSettingsBaseProvider&lt;/samp&gt;. If there is a need to configure a provider in more deliberate way, attribute &lt;samp&gt;parameter&lt;/samp&gt; could be used in a class extending &lt;samp&gt;LanguageSettingsBaseProvider&lt;/samp&gt;.
Default constructor (constructor without arguments) of this class must be public and the package be exported in order to be able to instantiate via extension point.
</documentation> </documentation>
<appInfo> <appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider:org.eclipse.cdt.core.settings.model.ILanguageSettingsProvider"/> <meta.attribute kind="java" basedOn="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider:org.eclipse.cdt.core.settings.model.ILanguageSettingsProvider"/>
@ -89,7 +90,7 @@ If there is a need to configure a provider, attribute parameter could be used in
<attribute name="parameter" type="string"> <attribute name="parameter" type="string">
<annotation> <annotation>
<documentation> <documentation>
A custom parameter to initialize provider. Used to deliver command for GCCBuiltinSpecsDetector as an example. A custom parameter to initialize provider. For example, used to deliver command for GCCBuiltinSpecsDetector.
</documentation> </documentation>
</annotation> </annotation>
</attribute> </attribute>
@ -256,7 +257,7 @@ For those cases where contributed settings entries (representing the compiler op
<meta.section type="copyright"/> <meta.section type="copyright"/>
</appInfo> </appInfo>
<documentation> <documentation>
Copyright (c) 2009, 2010 Andrew Gvozdev (Quoin Inc.) and others. Copyright (c) 2009, 2011 Andrew Gvozdev and others.
All rights reserved. This program and the accompanying materials All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0 are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at which accompanies this distribution, and is available at

View file

@ -1,12 +1,12 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2009, 2010 Andrew Gvozdev (Quoin Inc.) and others. * Copyright (c) 2009, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Andrew Gvozdev (Quoin Inc.) - initial API and implementation * Andrew Gvozdev - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core; package org.eclipse.cdt.core;
@ -19,7 +19,7 @@ package org.eclipse.cdt.core;
public abstract class AbstractExecutableExtensionBase { public abstract class AbstractExecutableExtensionBase {
private String fId; private String fId;
private String fName; private String fName;
/** /**
* Default constructor will initialize with the name of the class * Default constructor will initialize with the name of the class
* using reflection mechanism. * using reflection mechanism.