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:
parent
ba7591a95b
commit
da8e44baef
13 changed files with 222 additions and 210 deletions
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -65,7 +65,8 @@
|
|||
<annotation>
|
||||
<documentation>
|
||||
A fully qualified name of the Java class that implements <samp>org.eclipse.cdt.core.settings.model.ILanguageSettingsProvider</samp> interface. If empty, <samp>org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider</samp> 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 <samp>LanguageSettingsBaseProvider</samp>.
|
||||
If there is a need to configure a provider in more deliberate way, attribute <samp>parameter</samp> could be used in a class extending <samp>LanguageSettingsBaseProvider</samp>.
|
||||
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
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue