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

View file

@ -111,7 +111,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
// get test plugin extension provider
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_PROVIDER_ID);
assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt));
// get raw extension provider
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsBaseProvider);
@ -225,7 +225,26 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
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
*/
@ -238,10 +257,10 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
LanguageSettingsSerializableProvider provider = (LanguageSettingsSerializableProvider) rawProvider;
assertEquals(null, provider.getLanguageScope());
assertEquals("", provider.getCustomParameter());
List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>();
expected.add(new CMacroEntry("MACRO", "value", 0));
assertEquals(expected, provider.getSettingEntries(null, null, null));
@ -261,65 +280,45 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt);
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(rawProvider));
// compare with workspace provider
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertSame(rawProvider, providerWspRaw);
}
// Editable providers are retrieved by copy
{
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
assertFalse(LanguageSettingsManager.isWorkspaceProvider(providerExt));
assertTrue(providerExt instanceof ILanguageSettingsEditableProvider);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerExt));
ILanguageSettingsProvider providerExt2 = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
assertNotSame(providerExt, providerExt2);
assertEquals(providerExt, providerExt2);
ILanguageSettingsProvider providerWsp = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
ILanguageSettingsProvider providerWspRaw = LanguageSettingsManager.getRawProvider(providerWsp);
assertNotSame(providerExt, providerWspRaw);
assertEquals(providerExt, providerWspRaw);
assertTrue(LanguageSettingsExtensionManager.equalsExtensionProvider(providerWspRaw));
}
// Test shallow copy
{
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_EDITABLE_PROVIDER_ID);
assertNotNull(provider);
assertTrue(provider instanceof ILanguageSettingsEditableProvider);
ILanguageSettingsProvider providerShallow = LanguageSettingsExtensionManager.getExtensionProviderShallow(EXTENSION_EDITABLE_PROVIDER_ID);
assertNotNull(providerShallow);
assertTrue(providerShallow instanceof ILanguageSettingsEditableProvider);
assertFalse(provider.equals(providerShallow));
assertFalse(LanguageSettingsExtensionManager.equalsExtensionProvider(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
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -230,11 +230,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertNotNull(actual);
assertEquals(0, actual.size());
}
// use careless provider causing an exception
{
setExpectedNumberOfLoggedNonOKStatusObjects(1);
ILanguageSettingsProvider providerNPE = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null) {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
@ -419,7 +419,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertEquals(0, actual.size());
}
}
/**
*/
public void testProvider_DefaultEntries() throws Exception {
@ -428,15 +428,15 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
IProject project = ResourceHelper.createCDTProjectWithConfig(projectName);
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project);
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof CConfigurationDescription);
final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/");
assertNotNull(parentFolder);
final IFile emptySettingsPath = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/empty");
assertNotNull(emptySettingsPath);
// store the entries as default entries
final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 0));
@ -449,11 +449,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
}
return null;
}
};
providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers);
{
// retrieve entries for a 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);
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, provider.getId());
assertEquals(EXTENSION_EDITABLE_PROVIDER_NAME, provider.getName());
// get raw provider
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, rawProvider.getId());
@ -699,7 +699,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
// assert they are not the same object
assertNotSame(provider, rawProvider);
{
// make sure entries are the same
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);
assertEquals(entries, rawEntries);
}
{
// set new entries to the raw provider
List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>();
newEntries.add(new CIncludePathEntry("path0", 0));
newEntries.add(new CIncludePathEntry("path1", 0));
((LanguageSettingsSerializableProvider)rawProvider).setSettingEntries(null, null, null, newEntries);
// check that the workspace provider gets them too
List<ICLanguageSettingEntry> newRawEntries = rawProvider.getSettingEntries(null, null, null);
assertEquals(newEntries, newRawEntries);
@ -742,13 +742,13 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
assertEquals(1, entries.size()); // defined in the extension
}
// define new entries for the raw provider
List<ICLanguageSettingEntry> newEntries = new ArrayList<ICLanguageSettingEntry>();
newEntries.add(new CIncludePathEntry("path0", 0));
newEntries.add(new CIncludePathEntry("path1", 0));
newEntries.add(new CIncludePathEntry("path2", 0));
{
// replace raw provider
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
@ -757,7 +757,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
providers.add(newRawProvider);
LanguageSettingsManager.setWorkspaceProviders(providers);
}
{
// check that provider provides the new entries
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
@ -765,7 +765,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertEquals(newEntries, entries);
}
}
/**
* 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 rawProvider = LanguageSettingsManager.getRawProvider(provider);
assertNotSame(provider, rawProvider);
// attempt to "replace" with workspace provider (which is a wrapper around raw provider), should be NOOP
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
LanguageSettingsManager.setWorkspaceProviders(providers);
ILanguageSettingsProvider newRawProvider = LanguageSettingsManager.getRawProvider(provider);
assertSame(rawProvider, newRawProvider);
// check for no side effect
assertSame(provider, providers.get(0));
}
@ -793,23 +793,23 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry);
// create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile file = ResourceHelper.createFile(project, "file.cpp");
assertNotNull(file);
// create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, null, entries);
// build the hierarchy
LanguageSettingsProvidersSerializer.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
}
/**
*/
public void testBuildResourceTree_FileInSubFolder() throws Exception {
@ -817,24 +817,24 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry);
// create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder = ResourceHelper.createFolder(project, "Folder");
IFile file = ResourceHelper.createFile(project, "Folder/file.cpp");
// create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, null, entries);
// build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, null));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
}
/**
*/
public void testBuildResourceTree_TwoSubFolders() throws Exception {
@ -843,31 +843,31 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
entries1.add(new CMacroEntry("MACRO_1", null, 0));
List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>();
entries2.add(new CMacroEntry("MACRO_2", null, 0));
// create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder1 = ResourceHelper.createFolder(project, "Folder1");
IFolder folder2 = ResourceHelper.createFolder(project, "Folder2");
IFile file1 = ResourceHelper.createFile(project, "Folder1/file1.cpp");
IFile file2 = ResourceHelper.createFile(project, "Folder2/file2.cpp");
// create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file1, null, entries1);
provider.setSettingEntries(null, file2, null, entries2);
// build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, null, project);
// check that entries go to highest possible level
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file1, null));
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder1, null));
assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file2, null));
assertEquals(entries2, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder2, null));
assertEquals(0, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null).size());
}
/**
*/
public void testBuildResourceTree_FlippingSettings() throws Exception {
@ -876,16 +876,16 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
entries1.add(new CMacroEntry("MACRO_1", null, 0));
List<ICLanguageSettingEntry> entries2 = new ArrayList<ICLanguageSettingEntry>();
entries2.add(new CMacroEntry("MACRO_2", null, 0));
// create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile file1 = ResourceHelper.createFile(project, "file1.cpp");
IFile file2 = ResourceHelper.createFile(project, "file2.cpp");
IFile file3 = ResourceHelper.createFile(project, "file3.cpp");
// create a provider
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
// set the entries for the first 2 files
provider.setSettingEntries(null, file1, 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, file2, null));
assertEquals(entries1, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, project, null));
// set the entries for the second+third files (second file flips the settings)
provider.setSettingEntries(null, file2, null, entries2);
provider.setSettingEntries(null, file3, null, entries2);
@ -915,22 +915,22 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
CMacroEntry entry = new CMacroEntry("MACRO", null, 0);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(entry);
// create resources
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFolder folder = ResourceHelper.createFolder(project, "Folder");
IFile file = ResourceHelper.createFile(project, "Folder/file.cpp");
// create a provider and set the entries
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
provider.setSettingEntries(null, file, LANG_CPP, entries);
// build the hierarchy
LanguageSettingsManager.buildResourceTree(provider, null, LANG_CPP, project);
// check that entries go to highest possible level
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, file, LANG_CPP));
assertEquals(entries, LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, null, folder, 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
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -1238,17 +1238,17 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
sampleLanguages.add(LANG_ID);
// create a model provider
class LanguageSettingsSerializableMock extends LanguageSettingsSerializableProvider implements Cloneable {
public LanguageSettingsSerializableMock(String id, String name) {
class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable {
public MockSerializableProvider(String id, String name) {
super(id, name);
}
@Override
public LanguageSettingsSerializableMock clone() throws CloneNotSupportedException {
return (LanguageSettingsSerializableMock) super.clone();
public MockSerializableProvider clone() throws CloneNotSupportedException {
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.setCustomParameter(CUSTOM_PARAMETER);
assertEquals(false, provider1.isStoringEntriesInProjectArea());
@ -1257,7 +1257,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
provider1.setSettingEntries(null, null, LANG_ID, sampleEntries_2);
// clone provider
LanguageSettingsSerializableMock providerClone = provider1.clone();
MockSerializableProvider providerClone = provider1.clone();
assertNotSame(provider1, providerClone);
assertTrue(provider1.equals(providerClone));
assertTrue(provider1.getClass()==providerClone.getClass());
@ -1286,17 +1286,17 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
sampleLanguages.add(LANG_ID);
// create a model provider
class LanguageSettingsSerializableMock extends LanguageSettingsSerializableProvider implements Cloneable {
public LanguageSettingsSerializableMock(String id, String name) {
class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable {
public MockSerializableProvider(String id, String name) {
super(id, name);
}
@Override
public LanguageSettingsSerializableMock cloneShallow() throws CloneNotSupportedException {
return (LanguageSettingsSerializableMock) super.cloneShallow();
public MockSerializableProvider cloneShallow() throws CloneNotSupportedException {
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.setCustomParameter(CUSTOM_PARAMETER);
assertEquals(false, provider1.isStoringEntriesInProjectArea());
@ -1307,7 +1307,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
provider1.setSettingEntries(null, null, null, entries);
// clone provider
LanguageSettingsSerializableMock providerClone = provider1.cloneShallow();
MockSerializableProvider providerClone = provider1.cloneShallow();
assertNotSame(provider1, providerClone);
assertFalse(provider1.equals(providerClone));
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
* 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 (Quoin Inc.) - initial API and implementation
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
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 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.ICLanguageSettingEntry;
import org.eclipse.core.resources.IResource;
@ -22,6 +21,7 @@ import org.eclipse.core.resources.IResource;
public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase
implements ILanguageSettingsProvider {
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
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
* 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 (Quoin Inc.) - initial API and implementation
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
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 boolean isEmpty();
public void clear();
public ILanguageSettingsEditableProvider cloneShallow() 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
* include paths (-I) or preprocessor defines (-D) and others (see
* {@link ICSettingEntry#INCLUDE_PATH} and other kinds).
* <br>
* <br><br>
* To define a provider like that use extension point
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this
* 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.settings.model.ICConfigurationDescription;
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;
/**
* {@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
* the extension point.
*
* the extension point.
*
* @since 6.0
*/
public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
@ -43,11 +45,12 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
* Default constructor.
*/
public LanguageSettingsBaseProvider() {
super();
}
/**
* Constructor. Creates an "empty" provider.
*
* Constructor. Creates an "empty" non-configured provider.
*
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
*/
@ -57,7 +60,7 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
/**
* Constructor.
*
*
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @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.
* 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);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries);
this.entries = getPooledList(entries);
}
/**
* Constructor.
*
*
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @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
* 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);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries);
this.entries = getPooledList(entries);
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
* an executable extension using the default provider. Then this method is
* used to configure the provider.
*
* FIXME It is not allowed to reconfigure the provider.
*
*<br><br>
* It is not allowed to reconfigure the provider.
*
* @param id - id of the provider.
* @param name - name of the provider to be presented to a user.
* @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.
* @param customParameter - a custom parameter as the means to customize
* 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) {
// if (this.entries!=null)
// throw new UnsupportedOperationException(SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$
public void configureProvider(String id, String name, List<String> languages,
List<ICLanguageSettingEntry> entries, String customParameter) {
if (this.entries!=null)
throw new UnsupportedOperationException(SettingsModelMessages.getString("LanguageSettingsBaseProvider.CanBeConfiguredOnlyOnce")); //$NON-NLS-1$
setId(id);
setName(name);
this.languageScope = languages!=null ? new ArrayList<String>(languages) : null;
this.entries = cloneList(entries);
this.entries = getPooledList(entries);
this.customParameter = customParameter;
}
private List<ICLanguageSettingEntry> getPooledList(List<ICLanguageSettingEntry> entries) {
if (entries != null) {
return LanguageSettingsStorage.getPooledList(entries);
}
return LanguageSettingsStorage.getPooledEmptyList();
}
/**
* {@inheritDoc}
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder.
*
* @param languageId - language id. If {@code null}, then entries defined for
* 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
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
if (languageScope==null) {
if (entries==null)
return null;
return Collections.unmodifiableList(entries);
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription,
IResource rc, String languageId) {
if (languageScope == null) {
return entries;
}
for (String lang : languageScope) {
if (lang.equals(languageId)) {
if (entries==null)
return null;
return Collections.unmodifiableList(entries);
return entries;
}
}
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.
*/
public List<String> getLanguageScope() {
@ -163,13 +176,4 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
public String getCustomParameter() {
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.
* This class is temporary and not intended to be used by clients.
*
*
* @noextend This class is not intended to be subclassed 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
* and replaced with language settings providers in plugin.xml.
* 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
* or org.eclipse.cdt.managedbuilder.internal.core.ToolChain.
* @return legacy scannerConfigDiscoveryProfileId.
@ -108,8 +108,9 @@ public class ScannerDiscoveryLegacySupport {
public static String getDeprecatedLegacyProfiles(String id) {
if (legacyProfiles == null) {
legacyProfiles = new HashMap<String, String>();
// InputTypes
// TODO -doublecheck
// 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.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.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");
// Toolchains
// TODO -doublecheck
// legacyProfiles.put(toolchainId, scannerConfigDiscoveryProfileId);
}
return legacyProfiles.get(id);
}

View file

@ -71,7 +71,6 @@ public class LanguageSettingsExtensionManager {
loadProviderExtensions();
} catch (Throwable e) {
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.
*/
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>(
new Comparator<ILanguageSettingsProvider>() {
@Override
@ -111,7 +110,7 @@ public class LanguageSettingsExtensionManager {
for (IExtension ext : extensions) {
for (IConfigurationElement cfgEl : ext.getConfigurationElements()) {
ILanguageSettingsProvider provider = null;
String id=null;
String id = null;
try {
if (cfgEl.getName().equals(ELEM_PROVIDER)) {
id = determineAttributeValue(cfgEl, ATTR_ID);
@ -169,8 +168,8 @@ public class LanguageSettingsExtensionManager {
for (IConfigurationElement ceLang : ce.getChildren(ELEM_LANGUAGE_SCOPE)) {
String langId = determineAttributeValue(ceLang, ATTR_ID);
if (langId.trim().length()>0) {
if (languages==null) {
if (langId.length() > 0) {
if (languages == null) {
languages = new ArrayList<String>();
}
languages.add(langId);
@ -192,8 +191,9 @@ public class LanguageSettingsExtensionManager {
ICLanguageSettingEntry entry = (ICLanguageSettingEntry) CDataUtil.createEntry(
entryKind, entryName, entryValue, null, flags);
if (entries == null)
if (entries == null) {
entries = new ArrayList<ICLanguageSettingEntry>();
}
entries.add(entry);
} catch (Exception e) {
@ -213,7 +213,7 @@ public class LanguageSettingsExtensionManager {
* Creates empty non-configured provider from extension point definition. The method will
* inspect extension registry for extension point "org.eclipse.cdt.core.LanguageSettingsProvider"
* 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 registry - extension registry

View file

@ -65,7 +65,8 @@
<annotation>
<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.
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>
<appInfo>
<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">
<annotation>
<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>
</annotation>
</attribute>
@ -256,7 +257,7 @@ For those cases where contributed settings entries (representing the compiler op
<meta.section type="copyright"/>
</appInfo>
<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
are made available under the terms of the Eclipse Public License v1.0
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
* 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 (Quoin Inc.) - initial API and implementation
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core;
@ -19,7 +19,7 @@ package org.eclipse.cdt.core;
public abstract class AbstractExecutableExtensionBase {
private String fId;
private String fName;
/**
* Default constructor will initialize with the name of the class
* using reflection mechanism.