1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

JavaDoc and one more unit test

This commit is contained in:
Andrew Gvozdev 2011-12-14 15:18:22 -05:00
parent 8715c43cde
commit 9415c4d5b3
2 changed files with 67 additions and 13 deletions

View file

@ -44,6 +44,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
private static final String EXTENSION_BASE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_ID;
private static final String EXTENSION_BASE_PROVIDER_NAME = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_NAME;
private static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_SERIALIZABLE_PROVIDER_ID;
private static final String EXTENSION_USER_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_USER_PROVIDER_ID;
private static final ICLanguageSettingEntry EXTENSION_SERIALIZABLE_PROVIDER_ENTRY = LanguageSettingsExtensionsTests.EXTENSION_SERIALIZABLE_PROVIDER_ENTRY;
private static final String LANGUAGE_SETTINGS_PROJECT_XML = ".settings/language.settings.xml";
@ -530,6 +531,64 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
}
}
/**
*/
public void testProjectPersistence_UserProviderDOM() throws Exception {
Element rootElement = null;
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 0));
{
// create a provider
MockProjectDescription mockPrjDescription = new MockProjectDescription(new MockConfigurationDescription(CFG_ID));
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
ILanguageSettingsProvider provider = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_USER_PROVIDER_ID, false);
assertTrue(provider instanceof LanguageSettingsGenericProvider);
LanguageSettingsGenericProvider serializableProvider = (LanguageSettingsGenericProvider) provider;
serializableProvider.setSettingEntries(null, null, null, entries);
LanguageSettingsManager.setStoringEntriesInProjectArea(serializableProvider, true);
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(serializableProvider);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage
Document doc = XmlUtil.newDocument();
rootElement = XmlUtil.appendElement(doc, ELEM_TEST);
// serialize language settings to the DOM
LanguageSettingsProvidersSerializer.serializeLanguageSettingsInternal(rootElement, null, mockPrjDescription);
assertTrue(XmlUtil.toString(doc).contains(EXTENSION_USER_PROVIDER_ID));
assertTrue(XmlUtil.toString(doc).contains(LanguageSettingsGenericProvider.class.getName()));
}
{
// re-load and check language settings of the newly loaded provider
MockProjectDescription mockPrjDescription = new MockProjectDescription(new MockConfigurationDescription(CFG_ID));
LanguageSettingsProvidersSerializer.loadLanguageSettingsInternal(rootElement, null, mockPrjDescription);
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
assertNotNull(cfgDescriptions);
assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers);
assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0);
assertTrue(provider instanceof LanguageSettingsGenericProvider);
List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null);
assertEquals(entries.get(0), actual.get(0));
assertEquals(entries.size(), actual.size());
}
}
/**
*/
public void testProjectPersistence_TwoConfigurationsDOM() throws Exception {

View file

@ -60,8 +60,8 @@ public class LanguageSettingsExtensionManager {
static final String ELEM_ENTRY_FLAG = "flag"; //$NON-NLS-1$
/**
* Extension providers loaded once. If the provider is editable (read cloneable)
* external callers get copy rather than real instance.
* Extension providers loaded once and used for equality only.
* Those who request extension provider will get copy rather than real instance.
*/
private static final LinkedHashMap<String, ILanguageSettingsProvider> fExtensionProviders = new LinkedHashMap<String, ILanguageSettingsProvider>();
@ -80,7 +80,7 @@ public class LanguageSettingsExtensionManager {
* Load language settings providers contributed via the extension point.
*/
synchronized private static void loadProviderExtensions() {
// sort by name - the providers defined via extensions are kept in separate list sorted
// sort by name - the providers defined via extensions are kept in separate list sorted by name
Set<ILanguageSettingsProvider> sortedProviders = new TreeSet<ILanguageSettingsProvider>(
new Comparator<ILanguageSettingsProvider>() {
@Override
@ -131,7 +131,7 @@ public class LanguageSettingsExtensionManager {
private static String determineAttributeValue(IConfigurationElement ce, String attr) {
String value = ce.getAttribute(attr);
return value!=null ? value : ""; //$NON-NLS-1$
return value != null ? value : ""; //$NON-NLS-1$
}
/**
@ -254,7 +254,7 @@ public class LanguageSettingsExtensionManager {
/**
* Create an instance of non-configured language settings provider of given class name.
* The class should be known or registered with the extension point.
* The class should be known to this method or registered with the extension point.
*
* @param className - class name to instantiate.
* @return new instance of language settings provider.
@ -263,15 +263,9 @@ public class LanguageSettingsExtensionManager {
if (className==null || className.equals(LanguageSettingsSerializableProvider.class.getName())) {
return new LanguageSettingsSerializableProvider();
}
// TODO unit test case for this
if (className.equals(LanguageSettingsGenericProvider.class.getName())) {
return new LanguageSettingsGenericProvider();
}
// FIXME - older usage, will fade it out
if (className.equals("org.eclipse.cdt.internal.ui.language.settings.providers.UserLanguageSettingsProvider")) {
return new LanguageSettingsGenericProvider();
}
// Create it as executable extension from the extension registry.
ILanguageSettingsProvider provider = loadProviderFromRegistry(ATTR_CLASS, className, Platform.getExtensionRegistry(), false);
@ -305,7 +299,7 @@ public class LanguageSettingsExtensionManager {
/**
* Returns list of provider id-s contributed by all extensions.
* @return list of provider id-s contributed by all extensions.
* @return the provider id-s.
*/
public static Set<String> getExtensionProviderIds() {
return fExtensionProviders.keySet();
@ -320,7 +314,7 @@ public class LanguageSettingsExtensionManager {
* @param deep - {@code true} to request deep copy including copying settings entries
* or {@code false} to return shallow copy with no settings entries.
*
* @return a copy of the provider or null if copying is not possible.
* @return a copy of the provider or {@code null} if copying is not possible.
*/
public static ILanguageSettingsEditableProvider getProviderCopy(ILanguageSettingsEditableProvider provider, boolean deep) {
try {
@ -362,6 +356,7 @@ public class LanguageSettingsExtensionManager {
* @param provider - the provider to test.
* @param deep - {@code true} to check for deep equality testing also settings entries
* or {@code false} to test shallow copy with no settings entries.
* Shallow equality is applicable only for {@link ILanguageSettingsEditableProvider}.
* @return - {@code true} if the provider matches the extension or {@code false} otherwise.
*/
public static boolean isEqualsExtensionProvider(ILanguageSettingsProvider provider, boolean deep) {