From cdc386ba11c8336a344a49982984c2222cc2236c Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Thu, 26 Jan 2012 14:34:13 -0500 Subject: [PATCH] clean-up --- .../META-INF/MANIFEST.MF | 2 +- ...AllLanguageSettingsProvidersCoreTests.java | 10 +- .../LanguageSettingsExtensionsTests.java | 31 +-- .../LanguageSettingsListenersTests.java | 249 ++++++++++-------- .../LanguageSettingsManagerTests.java | 89 ++++--- ...nguageSettingsPersistenceProjectTests.java | 243 +++++++++-------- ...guageSettingsScannerInfoProviderTests.java | 8 +- ...ageSettingsSerializableProviderTests.java} | 53 +++- .../MockLanguageSettingsBaseProvider.java | 5 +- .../MockLanguageSettingsEditableProvider.java | 15 +- .../MockLanguageSettingsProvider.java | 9 +- ...kLanguageSettingsSerializableProvider.java | 12 +- .../providers/MockListenerRegisterer.java | 24 +- .../cdt/core/testplugin/CModelMock.java | 8 +- .../providers/LanguageSettingsDelta.java | 8 +- .../LanguageSettingsProvidersSerializer.java | 6 +- .../LanguageSettingsScannerInfoProvider.java | 23 +- .../pdom/LanguageSettingsChangeListener.java | 2 - .../schema/LanguageSettingsProvider.exsd | 4 +- 19 files changed, 456 insertions(+), 345 deletions(-) rename core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/{LanguageSettingsSerializableTests.java => LanguageSettingsSerializableProviderTests.java} (96%) diff --git a/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF index 4bdfe1306e8..5083f3d95c8 100644 --- a/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF +++ b/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF @@ -12,7 +12,7 @@ Export-Package: org.eclipse.cdt.core.cdescriptor.tests, org.eclipse.cdt.core.internal.tests;x-internal:=true, org.eclipse.cdt.core.internal.tests.filesystem.ram, org.eclipse.cdt.core.language, - org.eclipse.cdt.core.language.settings.providers;x-internal:=true, + org.eclipse.cdt.core.language.settings.providers, org.eclipse.cdt.core.model.tests, org.eclipse.cdt.core.parser.tests, org.eclipse.cdt.core.parser.tests.ast2, diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java index 15d6813587c..f6542d6d709 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java @@ -1,19 +1,21 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Andrew Gvozdev and others. + * Copyright (c) 2010, 2012 Andrew Gvozdev and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Andrew Gvozdev - Initial API and implementation + * Andrew Gvozdev - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.language.settings.providers; import junit.framework.Test; import junit.framework.TestSuite; - +/** + * Test suite to cover core Language Settings Providers functionality. + */ public class AllLanguageSettingsProvidersCoreTests { public static void main(String[] args) { junit.textui.TestRunner.run(suite()); @@ -24,7 +26,7 @@ public class AllLanguageSettingsProvidersCoreTests { suite.addTest(LanguageSettingsExtensionsTests.suite()); suite.addTest(LanguageSettingsManagerTests.suite()); - suite.addTest(LanguageSettingsSerializableTests.suite()); + suite.addTest(LanguageSettingsSerializableProviderTests.suite()); suite.addTest(LanguageSettingsPersistenceProjectTests.suite()); suite.addTest(LanguageSettingsListenersTests.suite()); suite.addTest(LanguageSettingsScannerInfoProviderTests.suite()); diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsExtensionsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsExtensionsTests.java index a41b5f5b898..77cc4ebee59 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsExtensionsTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsExtensionsTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -34,7 +34,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; /** - * Test cases testing LanguageSettingsProvider functionality + * Test cases testing LanguageSettingsProvider extensions */ public class LanguageSettingsExtensionsTests extends BaseTestCase { // These should match corresponding entries defined in plugin.xml @@ -57,7 +57,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { /*package*/ static final String EXTENSION_REGISTERER_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.listener.registerer.provider"; /*package*/ static final String EXTENSION_USER_PROVIDER_ID = "org.eclipse.cdt.ui.UserLanguageSettingsProvider"; - // These are made up + // Arbitrary sample parameters used by the test private static final String PROVIDER_0 = "test.provider.0.id"; private static final String PROVIDER_NAME_0 = "test.provider.0.name"; private static final String LANG_ID = "test.lang.id"; @@ -104,10 +104,11 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * Check that regular ICLanguageSettingsProvider extension defined in plugin.xml is accessible. + * Check that regular {@link ICLanguageSettingsProvider} extension defined in plugin.xml is accessible. */ public void testExtension() throws Exception { { + // test provider defined as an extension List providers = LanguageSettingsManager.getWorkspaceProviders(); List ids = new ArrayList(); for (ILanguageSettingsProvider provider : providers) { @@ -117,7 +118,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } { - // test provider not in the list + // test provider that is not in the list ILanguageSettingsProvider providerExt = LanguageSettingsManager.getExtensionProviderCopy("missing.povider", true); assertNull(providerExt); } @@ -126,7 +127,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { ILanguageSettingsProvider providerExtCopy = LanguageSettingsManager.getExtensionProviderCopy(EXTENSION_BASE_PROVIDER_ID, true); assertNull(providerExtCopy); - // get raw extension provider - retrieve the only instance via workspace provider + // test raw workspace provider defined as an extension ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID); assertTrue(LanguageSettingsManager.isWorkspaceProvider(providerExt)); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(providerExt); @@ -167,7 +168,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * Check that subclassed LanguageSettingsBaseProvider extension defined in plugin.xml is accessible. + * Check that subclassed {@link LanguageSettingsBaseProvider} extension defined in plugin.xml is accessible. */ public void testExtensionBaseProviderSubclass() throws Exception { // get test plugin extension provider @@ -217,18 +218,18 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * Basic test for LanguageSettingsBaseProvider. + * Basic test for {@link LanguageSettingsBaseProvider}. */ public void testBaseProvider() throws Exception { + // define benchmarks List entries = new ArrayList(); entries.add(new CIncludePathEntry("path0", 0)); List languages = new ArrayList(2); languages.add("bogus.language.id"); languages.add(LANG_ID); - // add default provider - LanguageSettingsBaseProvider provider = new LanguageSettingsBaseProvider( - PROVIDER_0, PROVIDER_NAME_0, languages, entries); + // create base provider + LanguageSettingsBaseProvider provider = new LanguageSettingsBaseProvider(PROVIDER_0, PROVIDER_NAME_0, languages, entries); { // attempt to get entries for wrong language @@ -251,7 +252,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * TODO + * Test ability to configure {@link LanguageSettingsBaseProvider}. */ public void testBaseProviderConfigure() throws Exception { // sample entries @@ -300,7 +301,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * LanguageSettingsBaseProvider is not allowed to be configured twice. + * {@link LanguageSettingsBaseProvider} is not allowed to be configured twice. */ public void testBaseProviderCantReconfigure() throws Exception { // create LanguageSettingsBaseProvider @@ -319,7 +320,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * TODO + * Test {@link LanguageSettingsSerializableProvider} defined via extension point. */ public void testSerializableProvider() throws Exception { // get test plugin extension for serializable provider @@ -342,7 +343,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase { } /** - * TODO + * Test {@link ILanguageSettingsEditableProvider} defined via extension point. */ public void testEditableProvider() throws Exception { // Non-editable providers cannot be copied so they are singletons diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java index 922cf8e2ed9..40423414c94 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2011 Andrew Gvozdev and others. + * Copyright (c) 2011, 2012 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 @@ -23,13 +23,14 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.testplugin.ResourceHelper; import org.eclipse.cdt.core.testplugin.util.BaseTestCase; +import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager; import org.eclipse.core.resources.IProject; /** - * Test cases testing LanguageSettingsProvider functionality + * Test cases to cover {@link ILanguageSettingsChangeListener} capabilities. */ public class LanguageSettingsListenersTests extends BaseTestCase { - // Must match provider id defined as extension point + // These should match corresponding entries defined in plugin.xml private static final String EXTENSION_REGISTERER_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_REGISTERER_PROVIDER_ID; private static final String EXTENSION_EDITABLE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_EDITABLE_PROVIDER_ID; @@ -39,25 +40,25 @@ public class LanguageSettingsListenersTests extends BaseTestCase { private static final String PROVIDER_CUSTOM_GLOBAL_NAME = "test.provider.custom.global.name"; private static final CMacroEntry SAMPLE_LSE = new CMacroEntry("MACRO", "value",0); + + /** + * Mock {@link ILanguageSettingsChangeListener}. + */ private class MockLanguageSettingsChangeListener implements ILanguageSettingsChangeListener { private int count = 0; private ILanguageSettingsChangeEvent lastEvent = null; - @Override public void handleEvent(ILanguageSettingsChangeEvent event) { count++; lastEvent = event; } - public int getCount() { return count; } - public void resetCount() { count = 0; lastEvent = null; } - public ILanguageSettingsChangeEvent getLastEvent() { return lastEvent; } @@ -82,7 +83,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { protected void tearDown() throws Exception { LanguageSettingsManager.unregisterLanguageSettingsChangeListener(mockLseListener); LanguageSettingsManager.setWorkspaceProviders(null); - super.tearDown(); + super.tearDown(); // includes ResourceHelper cleanup } /** @@ -102,6 +103,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Check that global provider does not get unnecessarily registered on start. */ public void testListenerRegisterer_CheckExtensionProvider() throws Exception { // check if extension provider exists @@ -113,15 +115,17 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for non-shared configuration owned provider. */ public void testListenerRegisterer_OneOwnedByCfg() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -135,7 +139,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(PROVIDER_1)); } { @@ -146,7 +150,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { // reopen the project project.open(null); - CoreModel.getDefault().getProjectDescription(project); + // initialize project description + CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertEquals(1, MockListenerRegisterer.getCount(PROVIDER_1)); // and delete project.delete(true, null); @@ -156,8 +161,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for non-shared configuration owned multiple providers. */ public void testListenerRegisterer_TwoOwnedByCfgs() throws Exception { + // create project IProject project = ResourceHelper.createCDTProject(this.getName(), null, new String[] { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", @@ -165,9 +172,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(2, cfgDescriptions.length); ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; @@ -194,7 +201,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(2, MockListenerRegisterer.getCount(PROVIDER_1)); } { @@ -205,7 +212,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { // reopen the project project.open(null); - CoreModel.getDefault().getProjectDescription(project); + // initialize project description + CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertEquals(2, MockListenerRegisterer.getCount(PROVIDER_1)); // and delete project.delete(true, null); @@ -215,14 +223,16 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for shared provider. */ public void testListenerRegisterer_OneGlobal() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -236,7 +246,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } { @@ -247,7 +257,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { // reopen the project project.open(null); - CoreModel.getDefault().getProjectDescription(project); + // initialize project description + CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); // and delete project.delete(true, null); @@ -257,8 +268,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for multiple shared providers. */ public void testListenerRegisterer_TwoGlobal() throws Exception { + // create project IProject project = ResourceHelper.createCDTProject(this.getName(), null, new String[] { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", @@ -268,9 +281,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // retrieve global provider ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(2, cfgDescriptions.length); ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; @@ -294,7 +307,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); } // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } { @@ -305,7 +318,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { // reopen the project project.open(null); - CoreModel.getDefault().getProjectDescription(project); + // initialize project description + CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); // and delete project.delete(true, null); @@ -314,8 +328,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for shared provider when the provider removed from the list. */ public void testListenerRegisterer_TwoGlobalMinusOne() throws Exception { + // create project IProject project = ResourceHelper.createCDTProject(this.getName(), null, new String[] { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", @@ -325,9 +341,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // retrieve workspace provider ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(2, cfgDescriptions.length); ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; @@ -351,16 +367,16 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); } // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } { // retrieve workspace provider ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(2, cfgDescriptions.length); ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; @@ -375,7 +391,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(0, storedProviders.size()); } // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } { @@ -386,15 +402,16 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for shared provider define in multiple projects. */ public void testListenerRegisterer_GlobalProviderTwoProjects() throws Exception { // create project 1 IProject project_1 = ResourceHelper.createCDTProjectWithConfig(this.getName() + ".1"); { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project_1); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project_1, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -408,7 +425,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project_1, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project_1, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } @@ -416,9 +433,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { IProject project_2 = ResourceHelper.createCDTProjectWithConfig(this.getName() + ".2"); { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project_2); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project_2, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -432,7 +449,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project_2, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project_2, prjDescriptionWritable); assertEquals(1, MockListenerRegisterer.getCount(EXTENSION_REGISTERER_PROVIDER_ID)); } @@ -450,8 +467,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for shared global providers not included in any configuration. */ public void testListenerRegisterer_GlobalProviderNotInUse() throws Exception { + // create project ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(PROVIDER_CUSTOM_GLOBAL); // the global custom provider has not been added yet @@ -477,8 +496,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered for shared global provider replacing another one in global list. */ public void testListenerRegisterer_GlobalProviderAddRemoveOutsideTheProject() throws Exception { + // create project ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(PROVIDER_CUSTOM_GLOBAL); // the global custom provider has not been added yet @@ -491,9 +512,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -506,7 +527,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); // the global custom provider has not been added yet assertEquals(0, MockListenerRegisterer.getCount(PROVIDER_CUSTOM_GLOBAL)); } @@ -534,15 +555,17 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered when empty provider added and the resulting list of entries does not change. */ public void testNotification_cfgProvider_AddEmptyProvider() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // First clear default providers { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -554,7 +577,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(0, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -565,9 +588,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Add empty provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -581,7 +604,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // No notifications expected @@ -590,15 +613,17 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered where non-empty provider added. */ public void testNotification_cfgProvider_AddNonEmptyProvider() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // First clear default providers { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -610,7 +635,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(0, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -621,9 +646,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Add non-empty provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; String cfgDescriptionId = cfgDescription.getId(); @@ -641,7 +666,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); // inspect notifications assertEquals(1, mockLseListener.getCount()); @@ -655,16 +680,18 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered during serialization. */ public void testNotification_cfgProvider_SerializeEntries() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // add the mock provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -677,7 +704,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -688,7 +715,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Change the provider's entries { // get project descriptions - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false); + ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(prjDescription); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); assertEquals(1, cfgDescriptions.length); @@ -722,16 +749,18 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered when providers are being added by 2 independent parties in parallel. */ public void testNotification_cfgProvider_SerializeEntriesConcurrent() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // add the mock provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -744,7 +773,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -755,26 +784,26 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Change the provider's entries concurrently // get project descriptions - ICProjectDescription prjDescription_1 = CoreModel.getDefault().getProjectDescription(project, false); + ICProjectDescription prjDescription_1 = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(prjDescription_1); - ICProjectDescription prjDescription_2 = CoreModel.getDefault().getProjectDescription(project, false); + ICProjectDescription prjDescription_2 = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(prjDescription_2); { ICConfigurationDescription[] cfgDescriptions = prjDescription_1.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; - assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescription = cfgDescriptions[0]; + assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); - String cfgDescriptionId = cfgDescriptionWritable.getId(); + String cfgDescriptionId = cfgDescription.getId(); // Add entries List entries = new ArrayList(); entries.add(SAMPLE_LSE); - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); assertEquals(1, providers.size()); assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider); MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0); - mockProvider.setSettingEntries(cfgDescriptionWritable, project, null, entries); + mockProvider.setSettingEntries(cfgDescription, project, null, entries); // reset count mockLseListener.resetCount(); @@ -795,18 +824,18 @@ public class LanguageSettingsListenersTests extends BaseTestCase { { ICConfigurationDescription[] cfgDescriptions = prjDescription_2.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; - assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); - String cfgDescriptionId = cfgDescriptionWritable.getId(); + ICConfigurationDescription cfgDescription = cfgDescriptions[0]; + assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + String cfgDescriptionId = cfgDescription.getId(); // Add same entries List entries = new ArrayList(); entries.add(SAMPLE_LSE); - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); assertEquals(1, providers.size()); assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider); MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0); - mockProvider.setSettingEntries(cfgDescriptionWritable, project, null, entries); + mockProvider.setSettingEntries(cfgDescription, project, null, entries); // reset count mockLseListener.resetCount(); @@ -823,15 +852,17 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered during adding global empty provider. */ public void testNotification_globalProvider_AddEmptyProvider() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // First clear default providers { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -843,7 +874,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(0, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -854,9 +885,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Add empty global provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -877,7 +908,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // No notifications expected @@ -886,15 +917,17 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered during adding global non-empty provider. */ public void testNotification_globalProvider_AddNonEmptyProvider() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // First clear default providers { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -906,7 +939,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(0, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // register mock listener to inspect the notifications @@ -917,9 +950,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Add non-empty provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -945,7 +978,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); // inspect notifications assertEquals(1, mockLseListener.getCount()); @@ -959,8 +992,10 @@ public class LanguageSettingsListenersTests extends BaseTestCase { } /** + * Test events triggered during serialization of global shared providers. */ public void testNotification_globalProvider_SerializeEntries() throws Exception { + // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); // register mock listener to inspect the notifications @@ -969,9 +1004,9 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // Add empty global provider { // get project descriptions - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -992,7 +1027,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { assertEquals(1, storedProviders.size()); // write to project description - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CoreModel.getDefault().setProjectDescription(project, prjDescriptionWritable); } // Change the provider's entries @@ -1018,7 +1053,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { LanguageSettingsManager.serializeLanguageSettingsWorkspace(); // get cfgDescriptionId - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false); + ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(prjDescription); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); assertEquals(1, cfgDescriptions.length); @@ -1053,7 +1088,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { LanguageSettingsManager.serializeLanguageSettingsWorkspace(); // get cfgDescriptionId - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false); + ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(prjDescription); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); assertEquals(1, cfgDescriptions.length); diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManagerTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManagerTests.java index 37ab92f213c..4ec0625febc 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManagerTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManagerTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -18,7 +18,6 @@ import junit.framework.TestSuite; import org.eclipse.cdt.core.AbstractExecutableExtensionBase; import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage; -import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.CIncludePathEntry; import org.eclipse.cdt.core.settings.model.CMacroEntry; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -30,6 +29,7 @@ import org.eclipse.cdt.core.testplugin.ResourceHelper; import org.eclipse.cdt.core.testplugin.util.BaseTestCase; import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer; import org.eclipse.cdt.internal.core.settings.model.CConfigurationDescription; +import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; @@ -38,7 +38,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; /** - * Test cases testing LanguageSettingsProvider functionality + * Test cases testing {@link LanguageSettingsManager} utility methods. */ public class LanguageSettingsManagerTests extends BaseTestCase { // Those should match ids of plugin extensions defined in plugin.xml @@ -47,61 +47,60 @@ public class LanguageSettingsManagerTests extends BaseTestCase { private static final String EXTENSION_SERIALIZABLE_PROVIDER_NAME = LanguageSettingsExtensionsTests.EXTENSION_SERIALIZABLE_PROVIDER_NAME; private static final String EXTENSION_EDITABLE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_EDITABLE_PROVIDER_ID; - private static final IFile FILE_0 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/project/path0")); - private static final String CFG_ID = "test.configuration.id"; - private static final String LANG_ID = "test.lang.id"; - private static final String LANG_CPP = GPPLanguage.ID; + // Arbitrary sample parameters used by the test case private static final String PROVIDER_0 = "test.provider.0.id"; private static final String PROVIDER_1 = "test.provider.1.id"; private static final String PROVIDER_2 = "test.provider.2.id"; private static final String PROVIDER_NAME_0 = "test.provider.0.name"; private static final String PROVIDER_NAME_1 = "test.provider.1.name"; private static final String PROVIDER_NAME_2 = "test.provider.2.name"; + private static final String CFG_ID = "test.configuration.id"; + private static final String LANG_ID = "test.lang.id"; + private static final String LANG_CPP = GPPLanguage.ID; + private static final IFile FILE_0 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/project/path0")); + /** + * Mock configuration description. + */ class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription implements ILanguageSettingsProvidersKeeper { List providers = new ArrayList(); String[] defaultProvidersIds = null; - public MockConfigurationDescription(String id) { super(id); } - @Override public void setLanguageSettingProviders(List providers) { this.providers = new ArrayList(providers); } - @Override public List getLanguageSettingProviders() { return providers; } - @Override public void setDefaultLanguageSettingsProvidersIds(String[] ids) { defaultProvidersIds = ids; } - @Override public String[] getDefaultLanguageSettingsProvidersIds() { return defaultProvidersIds; } } + /** + * Mock language sttings provider. + */ private class MockProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider { private List entries; - public MockProvider(String id, String name, List entries) { super(id, name); this.entries = entries; } - @Override public List getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) { return entries; } } - /** * Constructor. * @param name - name of the test. @@ -119,7 +118,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { @Override protected void tearDown() throws Exception { LanguageSettingsManager.setWorkspaceProviders(null); - super.tearDown(); + super.tearDown(); // includes ResourceHelper cleanup } /** @@ -142,6 +141,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { * Test ILanguageSettingsProvidersKeeper API (getters and setters). */ public void testConfigurationDescription_Providers() throws Exception { + // mock configuration description MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); // set providers @@ -174,11 +174,11 @@ public class LanguageSettingsManagerTests extends BaseTestCase { // Create model project and accompanied descriptions String projectName = getName(); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project, true); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertTrue(cfgDescription instanceof CConfigurationDescription); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertTrue(cfgDescriptionWritable instanceof CConfigurationDescription); // attempt to add duplicate providers MockProvider dupe1 = new MockProvider(PROVIDER_0, PROVIDER_NAME_1, null); @@ -189,7 +189,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { providers.add(dupe2); try { - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); fail("cfgDescription.setLanguageSettingProviders() should not accept duplicate providers"); } catch (Exception e) { // Exception is welcome here @@ -200,6 +200,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { * Test various cases of ill-defined providers. */ public void testRudeProviders() throws Exception { + // mock configuration description MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); // set impolite provider returning null by getSettingEntries() ILanguageSettingsProvider providerNull = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null); @@ -230,7 +231,6 @@ public class LanguageSettingsManagerTests extends BaseTestCase { add(null); } }); - { List providers = new ArrayList(); providers.add(providerNull); @@ -273,7 +273,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** - * Test simple use case. + * Test assigning and retrieving providers from a configuration. */ public void testProvider_Basic() throws Exception { final MockConfigurationDescription modelCfgDescription = new MockConfigurationDescription(CFG_ID); @@ -377,16 +377,17 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * Test getting entries from resource hierarchy. */ public void testProvider_ParentFolder() throws Exception { // Create model project and accompanied descriptions String projectName = getName(); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); - ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertTrue(cfgDescription instanceof CConfigurationDescription); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertTrue(cfgDescriptionWritable instanceof CConfigurationDescription); final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/"); assertNotNull(parentFolder); @@ -411,13 +412,13 @@ public class LanguageSettingsManagerTests extends BaseTestCase { }; providers.add(provider); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); { // retrieve entries for a derived resource (in a subfolder) IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource"); List actual = LanguageSettingsManager - .getSettingEntriesUpResourceTree(provider, cfgDescription, derived, LANG_ID); + .getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, derived, LANG_ID); // taken from parent folder assertEquals(entries.get(0),actual.get(0)); assertEquals(entries.size(), actual.size()); @@ -427,30 +428,31 @@ public class LanguageSettingsManagerTests extends BaseTestCase { // retrieve entries for not related resource IFile notRelated = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/AnotherFolder/Subfolder/resource")); List actual = LanguageSettingsManager - .getSettingEntriesUpResourceTree(provider, cfgDescription, notRelated, LANG_ID); + .getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, notRelated, LANG_ID); assertEquals(0, actual.size()); } { // test distinction between no settings and empty settings List actual = LanguageSettingsManager - .getSettingEntriesUpResourceTree(provider, cfgDescription, emptySettingsPath, LANG_ID); + .getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, emptySettingsPath, LANG_ID); // NOT taken from parent folder assertEquals(0, actual.size()); } } /** + * Test getting entries from resource hierarchy up to default entries. */ public void testProvider_DefaultEntries() throws Exception { // Create model project and accompanied descriptions String projectName = getName(); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); - ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertTrue(cfgDescription instanceof CConfigurationDescription); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertTrue(cfgDescriptionWritable instanceof CConfigurationDescription); final IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/"); assertNotNull(parentFolder); @@ -472,13 +474,13 @@ public class LanguageSettingsManagerTests extends BaseTestCase { }; providers.add(provider); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); { // retrieve entries for a resource IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource"); List actual = LanguageSettingsManager - .getSettingEntriesUpResourceTree(provider, cfgDescription, derived, LANG_ID); + .getSettingEntriesUpResourceTree(provider, cfgDescriptionWritable, derived, LANG_ID); // default entries given assertEquals(entries.get(0),actual.get(0)); assertEquals(entries.size(), actual.size()); @@ -656,9 +658,9 @@ public class LanguageSettingsManagerTests extends BaseTestCase { // Create model project and accompanied descriptions String projectName = getName(); IProject project = ResourceHelper.createCDTProjectWithConfig(projectName); - ICProjectDescription writableProjDescription = CoreModel.getDefault().getProjectDescription(project, true); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); ICConfigurationDescription cfgDescription = cfgDescriptions[0]; assertTrue(cfgDescription instanceof CConfigurationDescription); @@ -683,7 +685,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { { // serialize - CoreModel.getDefault().setProjectDescription(project, writableProjDescription); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); // close and reopen the project project.close(null); project.open(null); @@ -691,7 +693,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { { // check that test provider got loaded - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); + ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); ICConfigurationDescription[] loadedCfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription loadedCfgDescription = loadedCfgDescriptions[0]; assertTrue(cfgDescription instanceof CConfigurationDescription); @@ -806,6 +808,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * TODO - YAGNI? */ public void testBuildResourceTree_FileInFolder() throws Exception { // sample entries @@ -830,6 +833,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * TODO - YAGNI? */ public void testBuildResourceTree_FileInSubFolder() throws Exception { // sample entries @@ -855,6 +859,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * TODO - YAGNI? */ public void testBuildResourceTree_TwoSubFolders() throws Exception { // sample entries @@ -888,6 +893,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * TODO - YAGNI? */ public void testBuildResourceTree_FlippingSettings() throws Exception { // sample entries @@ -928,6 +934,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase { } /** + * TODO - YAGNI? */ public void testBuildResourceTree_WithLanguage() throws Exception { // sample entries diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java index 3cf74ffaab2..c56327649a5 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -18,12 +18,10 @@ import java.util.List; import junit.framework.TestSuite; import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.CIncludePathEntry; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; import org.eclipse.cdt.core.settings.model.ICProjectDescription; -import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager; import org.eclipse.cdt.core.settings.model.WriteAccessException; import org.eclipse.cdt.core.testplugin.CModelMock; import org.eclipse.cdt.core.testplugin.ResourceHelper; @@ -38,7 +36,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; /** - * Test cases testing LanguageSettingsProvider functionality + * Test cases testing LanguageSettingsProvider functionality related to persistence. */ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { // These should match extension points defined in plugin.xml @@ -49,9 +47,11 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { 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; + // Constants from LanguageSettingsProvidersSerializer public static final String LANGUAGE_SETTINGS_PROJECT_XML = ".settings/language.settings.xml"; public static final String LANGUAGE_SETTINGS_WORKSPACE_XML = "language.settings.xml"; + // Arbitrary sample parameters used by the test private static final String CFG_ID = "test.configuration.id.0"; private static final String CFG_ID_2 = "test.configuration.id.2"; private static final String PROVIDER_0 = "test.provider.0.id"; @@ -66,50 +66,47 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { private static final String ELEM_PROVIDER = "provider "; // keep space for more reliable comparison private static final String ELEM_PROVIDER_REFERENCE = "provider-reference"; - private static CoreModel coreModel = CoreModel.getDefault(); - + /** + * Mock configuration description. + */ class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription implements ILanguageSettingsProvidersKeeper { List providers; public MockConfigurationDescription(String id) { super(id); } - @Override public void setLanguageSettingProviders(List providers) { this.providers = new ArrayList(providers); } - @Override public List getLanguageSettingProviders() { return providers; } - @Override public void setDefaultLanguageSettingsProvidersIds(String[] ids) { } - @Override public String[] getDefaultLanguageSettingsProvidersIds() { return null; } } + + /** + * Mock project description. + */ class MockProjectDescription extends CModelMock.DummyCProjectDescription { ICConfigurationDescription[] cfgDescriptions; - public MockProjectDescription(ICConfigurationDescription[] cfgDescriptions) { this.cfgDescriptions = cfgDescriptions; } - public MockProjectDescription(ICConfigurationDescription cfgDescription) { this.cfgDescriptions = new ICConfigurationDescription[] { cfgDescription }; } - @Override public ICConfigurationDescription[] getConfigurations() { return cfgDescriptions; } - @Override public ICConfigurationDescription getConfigurationById(String id) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) { @@ -126,7 +123,6 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { */ public LanguageSettingsPersistenceProjectTests(String name) { super(name); - } @Override @@ -137,7 +133,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { @Override protected void tearDown() throws Exception { LanguageSettingsManager.setWorkspaceProviders(null); - super.tearDown(); + super.tearDown(); // includes ResourceHelper cleanup } /** @@ -156,10 +152,12 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { junit.textui.TestRunner.run(suite()); } + /** + * Get read-only configuration descriptions. + */ private ICConfigurationDescription[] getConfigurationDescriptions(IProject project) { - ICProjectDescriptionManager mngr = coreModel.getProjectDescriptionManager(); // project description - ICProjectDescription projectDescription = mngr.getProjectDescription(project); + ICProjectDescription projectDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); assertNotNull(projectDescription); assertEquals(1, projectDescription.getConfigurations().length); // configuration description @@ -168,6 +166,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { return cfgDescriptions; } + /** + * Get first read-only configuration description. + */ private ICConfigurationDescription getFirstConfigurationDescription(IProject project) { ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project); @@ -178,8 +179,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Persist and reload when no customized providers are defined in the workspace. */ - public void testNoProviders() throws Exception { + public void testWorkspacePersistence_NoProviders() throws Exception { // serialize language settings of user defined providers (on workspace level) LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace(); LanguageSettingsProvidersSerializer.loadLanguageSettingsWorkspace(); @@ -188,21 +190,22 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Make sure providers in configuration cannot be modified accidentally outside of API. */ public void testProjectDescription_PreventBackDoorAccess() throws Exception { // create a project IProject project = ResourceHelper.createCDTProjectWithConfig(getName()); // get project descriptions - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); - List originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + List originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); int originalSize = originalProviders.size(); // create new provider list @@ -212,28 +215,29 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { assertTrue(originalSize != providers.size()); // changing providers shouldn't affect the original list - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); assertEquals(originalSize, originalProviders.size()); } /** + * Test assigning providers to read-only vs. writable configuration descriptions. */ - public void testProjectDescription_ReadWriteProviders() throws Exception { + public void testProjectDescription_ReadWriteDescription() throws Exception { // create a project IProject project = ResourceHelper.createCDTProjectWithConfig(getName()); { // get read-only description - ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); - assertNotNull(prjDescription); - ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICProjectDescription prjDescriptionReadOnly = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); + assertNotNull(prjDescriptionReadOnly); + ICConfigurationDescription cfgDescriptionReadOnly = prjDescriptionReadOnly.getDefaultSettingConfiguration(); + assertNotNull(cfgDescriptionReadOnly); + assertTrue(cfgDescriptionReadOnly instanceof ILanguageSettingsProvidersKeeper); // try to write to it providers try { List providers = new ArrayList(); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionReadOnly).setLanguageSettingProviders(providers); fail("WriteAccessException was expected but it was not throw."); } catch (WriteAccessException e) { // exception is expected @@ -241,7 +245,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { // try to write to it default providers ids try { - ((ILanguageSettingsProvidersKeeper) cfgDescription).setDefaultLanguageSettingsProvidersIds(new String[] { PROVIDER_0 }); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionReadOnly).setDefaultLanguageSettingsProvidersIds(new String[] { PROVIDER_0 }); fail("WriteAccessException was expected but it was not throw."); } catch (WriteAccessException e) { // exception is expected @@ -253,85 +257,86 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { { // get project descriptions - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); // create a provider and write to cfgDescription LanguageSettingsSerializableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1); LanguageSettingsManager.setStoringEntriesInProjectArea(mockProvider, true); - mockProvider.setSettingEntries(cfgDescription, null, null, entries); + mockProvider.setSettingEntries(cfgDescriptionWritable, null, null, entries); List providers = new ArrayList(); providers.add(mockProvider); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); - List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); + List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(1, storedProviders.size()); // write to cfgDescription default providers ids - ((ILanguageSettingsProvidersKeeper) cfgDescription).setDefaultLanguageSettingsProvidersIds(new String[] { PROVIDER_0 }); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setDefaultLanguageSettingsProvidersIds(new String[] { PROVIDER_0 }); // apply new project description to the project model - coreModel.setProjectDescription(project, writableProjDescription); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); } { // get read-only project descriptions - ICProjectDescription readOnlyProjDescription = coreModel.getProjectDescription(project, false); - assertNotNull(readOnlyProjDescription); - ICConfigurationDescription[] cfgDescriptions = readOnlyProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionReadOnly = CProjectDescriptionManager.getInstance().getProjectDescription(project, false); + assertNotNull(prjDescriptionReadOnly); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionReadOnly.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionReadOnly = cfgDescriptions[0]; + assertNotNull(cfgDescriptionReadOnly); + assertTrue(cfgDescriptionReadOnly instanceof ILanguageSettingsProvidersKeeper); // double-check providers - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionReadOnly).getLanguageSettingProviders(); assertEquals(1, providers.size()); ILanguageSettingsProvider loadedProvider = providers.get(0); assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider); assertEquals(PROVIDER_1, loadedProvider.getId()); assertEquals(PROVIDER_NAME_1, loadedProvider.getName()); // double-check provider's setting entries - List actual = loadedProvider.getSettingEntries(cfgDescription, null, null); + List actual = loadedProvider.getSettingEntries(cfgDescriptionReadOnly, null, null); assertEquals(entries.get(0), actual.get(0)); assertEquals(entries.size(), actual.size()); // double-check default providers ids - String[] actualDefaultProvidersIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds(); + String[] actualDefaultProvidersIds = ((ILanguageSettingsProvidersKeeper) cfgDescriptionReadOnly).getDefaultLanguageSettingsProvidersIds(); assertTrue(Arrays.equals(new String[] { PROVIDER_0 }, actualDefaultProvidersIds)); } { // get writable project descriptions - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); // check providers - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(1, providers.size()); ILanguageSettingsProvider loadedProvider = providers.get(0); assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider); assertEquals(PROVIDER_1, loadedProvider.getId()); assertEquals(PROVIDER_NAME_1, loadedProvider.getName()); // check provider's setting entries - List actual = loadedProvider.getSettingEntries(cfgDescription, null, null); + List actual = loadedProvider.getSettingEntries(cfgDescriptionWritable, null, null); assertEquals(entries.get(0), actual.get(0)); assertEquals(entries.size(), actual.size()); // check default providers ids - String[] actualDefaultProvidersIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds(); + String[] actualDefaultProvidersIds = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getDefaultLanguageSettingsProvidersIds(); assertTrue(Arrays.equals(new String[] { PROVIDER_0 }, actualDefaultProvidersIds)); } } /** + * Persist and reload a customized provider defined in the workspace. */ public void testWorkspacePersistence_ModifiedExtensionProvider() throws Exception { List entries = new ArrayList(); @@ -376,6 +381,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Check persistence of unmodified extension provider in the workspace. */ public void testWorkspacePersistence_UnmodifiedExtensionProvider() throws Exception { List extensionEntries = new ArrayList(); @@ -419,6 +425,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test persistence of global providers in the workspace. */ public void testWorkspacePersistence_GlobalProvider() throws Exception { { @@ -448,6 +455,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test persistence of global providers with ID matching an extension provider in the workspace. */ public void testWorkspacePersistence_ShadowedExtensionProvider() throws Exception { { @@ -512,6 +520,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of providers to project storage. */ public void testProjectPersistence_SerializableProviderDOM() throws Exception { Element rootElement = null; @@ -568,6 +577,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test User language settings provider defined as extension in cdt.ui. */ public void testProjectPersistence_UserProviderDOM() throws Exception { Element rootElement = null; @@ -626,6 +636,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of providers to project storage where the project has multiple configurations. */ public void testProjectPersistence_TwoConfigurationsDOM() throws Exception { Element rootElement = null; @@ -766,6 +777,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of providers subclassing {@link LanguageSettingsSerializableProvider}. */ public void testProjectPersistence_SubclassedSerializableProviderDOM() throws Exception { Element rootElement = null; @@ -821,6 +833,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Serialization of providers exactly equal extension providers. */ public void testProjectPersistence_ReferenceExtensionProviderDOM() throws Exception { Element rootElement = null; @@ -870,6 +883,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of providers overriding/shadowing extension providers. */ public void testProjectPersistence_OverrideExtensionProviderDOM() throws Exception { Element rootElement = null; @@ -926,6 +940,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { /** + * Test serialization flavors in one storage. */ public void testProjectPersistence_MixedProvidersDOM() throws Exception { Element rootElement = null; @@ -937,7 +952,6 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { entries_32.add(new CIncludePathEntry("path2", 0)); ILanguageSettingsProvider providerExt; - ILanguageSettingsProvider providerWsp; { // Define providers a bunch MockProjectDescription mockPrjDescription = new MockProjectDescription(new MockConfigurationDescription(CFG_ID)); @@ -950,14 +964,12 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { // 1. Provider reference to extension from plugin.xml providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID); - // 2. TODO Provider reference to provider defined in the project - - // 3. Providers defined in a configuration - // 3.1 + // 2. Providers defined in a configuration + // 2.1 LanguageSettingsSerializableProvider mockProvider1 = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsManager.setStoringEntriesInProjectArea(mockProvider1, true); mockProvider1.setSettingEntries(null, null, null, entries_31); - // 3.2 + // 2.2 LanguageSettingsSerializableProvider mockProvider2 = new MockLanguageSettingsSerializableProvider(PROVIDER_2, PROVIDER_NAME_2); LanguageSettingsManager.setStoringEntriesInProjectArea(mockProvider2, true); mockProvider2.setSettingEntries(null, null, null, entries_32); @@ -994,10 +1006,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { ILanguageSettingsProvider provider0 = providers.get(0); assertTrue(LanguageSettingsManager.isWorkspaceProvider(provider0)); - // 2. TODO Provider reference to provider defined in the project - - // 3. Providers defined in a configuration - // 3.1 + // 2. Providers defined in a configuration + // 2.1 { ILanguageSettingsProvider provider1 = providers.get(1); assertTrue(provider1 instanceof LanguageSettingsSerializableProvider); @@ -1005,7 +1015,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { assertEquals(entries_31.get(0), actual.get(0)); assertEquals(entries_31.size(), actual.size()); } - // 3.2 + // 2.2 { ILanguageSettingsProvider provider2 = providers.get(2); assertTrue(provider2 instanceof MockLanguageSettingsSerializableProvider); @@ -1018,6 +1028,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of real project. */ public void testProjectPersistence_RealProject() throws Exception { IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); @@ -1029,32 +1040,31 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { { // get project descriptions - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); // create a provider LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsManager.setStoringEntriesInProjectArea(mockProvider, true); - mockProvider.setSettingEntries(cfgDescription, null, null, entries); + mockProvider.setSettingEntries(cfgDescriptionWritable, null, null, entries); List providers = new ArrayList(); providers.add(mockProvider); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); - List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); + List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(1, storedProviders.size()); // write to project description - coreModel.setProjectDescription(project, writableProjDescription); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); IFile xmlStorageFile = project.getFile(LANGUAGE_SETTINGS_PROJECT_XML); assertTrue(xmlStorageFile.exists()); xmlStorageFileLocation = xmlStorageFile.getLocation().toOSString(); } { - coreModel.getProjectDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); assertNotNull(cfgDescription); assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -1088,16 +1098,16 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { { // clear configuration - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(new ArrayList()); - coreModel.setProjectDescription(project, writableProjDescription); - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(new ArrayList()); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(0, providers.size()); } { @@ -1160,6 +1170,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test case when the storage is split between project and workspace area. */ public void testProjectPersistence_SplitStorageDOM() throws Exception { Element prjStorageElement = null; @@ -1230,6 +1241,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test split storage in a real project. */ public void testProjectPersistence_RealProjectSplitStorage() throws Exception { IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); @@ -1243,26 +1255,26 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { { // get project descriptions - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - assertNotNull(writableProjDescription); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + assertNotNull(prjDescriptionWritable); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); // create a provider LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsManager.setStoringEntriesInProjectArea(mockProvider, false); - mockProvider.setSettingEntries(cfgDescription, null, null, entries); + mockProvider.setSettingEntries(cfgDescriptionWritable, null, null, entries); List providers = new ArrayList(); providers.add(mockProvider); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); - List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(providers); + List storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(1, storedProviders.size()); // write to project description - coreModel.setProjectDescription(project, writableProjDescription); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); IFile xmlStorageFile = project.getFile(LANGUAGE_SETTINGS_PROJECT_XML); assertTrue(xmlStorageFile.exists()); xmlStorageFileLocation = xmlStorageFile.getLocation().toOSString(); @@ -1272,7 +1284,6 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { assertTrue(xmlStorageFileWsp.exists()); } { - coreModel.getProjectDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); assertNotNull(cfgDescription); assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); @@ -1311,16 +1322,16 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { { // clear configuration - ICProjectDescription writableProjDescription = coreModel.getProjectDescription(project); - ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); + ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); + ICConfigurationDescription[] cfgDescriptions = prjDescriptionWritable.getConfigurations(); assertEquals(1, cfgDescriptions.length); - ICConfigurationDescription cfgDescription = cfgDescriptions[0]; - assertNotNull(cfgDescription); - assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper); + ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; + assertNotNull(cfgDescriptionWritable); + assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(new ArrayList()); - coreModel.setProjectDescription(project, writableProjDescription); - List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); + ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).setLanguageSettingProviders(new ArrayList()); + CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescriptionWritable); + List providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders(); assertEquals(0, providers.size()); } { @@ -1395,6 +1406,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of providers referring to global shared instance. */ public void testProjectPersistence_ProviderExtensionReferenceDOM() throws Exception { Document doc = XmlUtil.newDocument(); @@ -1447,6 +1459,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Walk the scenario when a provider is cloned to a configuration from extension. */ public void testProjectPersistence_ProviderExtensionCopyDOM() throws Exception { Document doc = XmlUtil.newDocument(); @@ -1499,9 +1512,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test that default settings do not cause the files to appear in the project or file-system. */ public void testProjectPersistence_Defaults() throws Exception { - // AG TODO - create and check real MBS projects with some providers IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); IFile xmlStorageFile = project.getFile(LANGUAGE_SETTINGS_PROJECT_XML); assertFalse(xmlStorageFile.exists()); @@ -1512,6 +1525,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test serialization of global providers exactly equal extension in workspace area. */ public void testWorkspacePersistence_ProviderExtensionCopy() throws Exception { List entries = new ArrayList(); @@ -1552,6 +1566,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase { } /** + * Test that default settings do not cause the file to appear on the file-system. */ public void testWorkspacePersistence_Defaults() throws Exception { // reset and serialize workspace providers diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsScannerInfoProviderTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsScannerInfoProviderTests.java index ed178ac4982..de54edc6425 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsScannerInfoProviderTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsScannerInfoProviderTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -86,7 +86,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase { @Override protected void tearDown() throws Exception { - super.tearDown(); + super.tearDown(); // includes ResourceHelper cleanup } /** @@ -852,8 +852,10 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase { assertEquals(1, actualIncludePaths.length); } + /** + * Get languages for the folder. + */ private List getLanguages(IFolder folder, ICConfigurationDescription cfgDescription) { - // Get first 2 languages IPath rcPath = folder.getProjectRelativePath(); ICFolderDescription rcDes = (ICFolderDescription) cfgDescription.getResourceDescription(rcPath, false); ICLanguageSetting[] langSettings = rcDes.getLanguageSettings(); diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProviderTests.java similarity index 96% rename from core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableTests.java rename to core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProviderTests.java index ff506fafcda..7e6289b8cc1 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProviderTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -39,9 +39,10 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; /** - * Test cases testing LanguageSettingsProvider functionality + * Test cases testing serialization of LanguageSettingsProviders. */ -public class LanguageSettingsSerializableTests extends BaseTestCase { +public class LanguageSettingsSerializableProviderTests extends BaseTestCase { + // Arbitrary sample parameters used by the test private static final String CFG_ID = "test.configuration.id"; private static final ICConfigurationDescription MOCK_CFG = new CModelMock.DummyCConfigurationDescription(CFG_ID); private static final IResource MOCK_RC = ResourcesPlugin.getWorkspace().getRoot(); @@ -68,7 +69,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { * Constructor. * @param name - name of the test. */ - public LanguageSettingsSerializableTests(String name) { + public LanguageSettingsSerializableProviderTests(String name) { super(name); } @@ -80,14 +81,14 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { @Override protected void tearDown() throws Exception { - super.tearDown(); + super.tearDown(); // includes ResourceHelper cleanup } /** * @return - new TestSuite. */ public static TestSuite suite() { - return new TestSuite(LanguageSettingsSerializableTests.class); + return new TestSuite(LanguageSettingsSerializableProviderTests.class); } /** @@ -100,6 +101,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test basic methods, getters and setters. */ public void testProvider_SettersGetters() throws Exception { // benchmark data @@ -138,6 +140,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test property defining whether to store entries in project or workspace area. */ public void testProvider_SetStoringEntriesInProjectArea() throws Exception { // create a provider @@ -151,6 +154,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Check basic serialization. */ public void testProvider_RegularDOM() throws Exception { Element elementProvider; @@ -198,6 +202,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of properties of the provider. */ public void testProvider_serializeAttributesDOM() throws Exception { Element elementProvider; @@ -245,6 +250,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries. */ public void testProvider_serializeEntriesDOM() throws Exception { Element rootElement; @@ -297,6 +303,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of empty provider. */ public void testProvider_EmptyDOM() throws Exception { Element elementProvider; @@ -324,6 +331,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of custom parameter. */ public void testCustomParameterDOM() throws Exception { Element elementProvider; @@ -347,6 +355,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization to project area storage. */ public void testStoreEntriesWithProjectDOM() throws Exception { Element elementProvider; @@ -372,6 +381,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of language scope. */ public void testLanguagesDOM() throws Exception { List expectedLanguageIds = new ArrayList(); @@ -406,6 +416,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Edge cases for language scope. */ public void testLanguageScopeDOM() throws Exception { // benchmark entries @@ -491,6 +502,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when configuration description is null. */ public void testNullConfigurationDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -520,6 +532,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when language is null. */ public void testNullLanguageDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -550,6 +563,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { /** + * Test serialization of entries when language scope is null. */ public void testNullLanguageScopeDOM() throws Exception { // define benchmark entries @@ -625,6 +639,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when resource is null. */ public void testNullResourceDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -654,6 +669,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when configuration and language are both null. */ public void testNullConfigurationLanguageDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -684,6 +700,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when configuration and resource are both null. */ public void testNullConfigurationResourceDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -714,6 +731,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when language and resource are both null. */ public void testNullLanguageResourceDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -744,6 +762,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test serialization of entries when configuration, language and resource are all null. */ public void testNullConfigurationLanguageResourceFlagDOM() throws Exception { // provider/configuration/language/resource/settingEntry @@ -777,6 +796,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of include path. */ public void testCIncludePathEntryDOM() throws Exception { Element elementProvider; @@ -810,6 +830,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of include file. */ public void testCIncludeFileEntryDOM() throws Exception { Element elementProvider; @@ -842,6 +863,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of macro. */ public void testCMacroEntryDOM() throws Exception { Element elementProvider; @@ -874,6 +896,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of macro file. */ public void testCMacroFileEntryDOM() throws Exception { Element elementProvider; @@ -906,6 +929,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of library path. */ public void testCLibraryPathEntryDOM() throws Exception { Element elementProvider; @@ -938,6 +962,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of library file. */ public void testCLibraryFileEntryDOM() throws Exception { Element elementProvider; @@ -970,6 +995,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of entries of different types. */ public void testMixedSettingEntriesDOM() throws Exception { Element elementProvider; @@ -1000,6 +1026,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of entries for default and specific languages together. */ public void testLanguageAndNullDOM() throws Exception { Element elementProvider = null; @@ -1036,6 +1063,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of entries for 2 languages. */ public void testTwoLanguagesDOM() throws Exception { Element elementProvider = null; @@ -1074,6 +1102,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of entries for different resources. */ public void testTwoResourcesDOM() throws Exception { // Create resources @@ -1120,6 +1149,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Serialization of entries for resource hierarchy. */ public void testParentFolder() throws Exception { // Create model project and accompanied descriptions @@ -1171,8 +1201,10 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test equals() and hashCode(). */ public void testEquals() throws Exception { + // create sample entries List sampleEntries_1 = new ArrayList(); sampleEntries_1.add(new CMacroEntry("MACRO0", "value0",1)); sampleEntries_1.add(new CIncludePathEntry("path0", 1)); @@ -1181,6 +1213,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { List sampleEntries_2 = new ArrayList(); sampleEntries_2.add(new CIncludePathEntry("path0", 1)); + // create sample languages List sampleLanguages = new ArrayList(); sampleLanguages.add(LANG_ID); @@ -1289,6 +1322,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test equality for properties. */ public void testEquals_DefaultProperties() throws Exception { // create model providers @@ -1335,6 +1369,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test cloning of provider. */ public void testClone() throws Exception { // define sample data @@ -1400,6 +1435,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Test shallow clone. */ public void testCloneShallow() throws Exception { // define sample data @@ -1441,6 +1477,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Verify that entries are sorted by kinds. */ public void testSort_Kinds() throws Exception { // create sample entries @@ -1496,6 +1533,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Check how entries are sorted inside a kind. */ public void testSort_Entries() throws Exception { // create sample entries @@ -1553,6 +1591,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } /** + * Sorting including undefined entries. */ public void testSort_Undef() throws Exception { // create sample entries @@ -1588,5 +1627,3 @@ public class LanguageSettingsSerializableTests extends BaseTestCase { } } - - diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsBaseProvider.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsBaseProvider.java index ce5a88584d6..2f818f2e0b6 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsBaseProvider.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsBaseProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.cdt.core.language.settings.providers; +/** + * Mock of {@link LanguageSettingsBaseProvider} for testing. + */ public class MockLanguageSettingsBaseProvider extends LanguageSettingsBaseProvider { private static final String ATTR_PARAMETER = "parameter"; //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsEditableProvider.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsEditableProvider.java index 8db8881ad72..ccf4103932b 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsEditableProvider.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsEditableProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -11,22 +11,25 @@ package org.eclipse.cdt.core.language.settings.providers; -import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; - +/** + * Mock of {@link ILanguageSettingsEditableProvider} for testing. + */ public class MockLanguageSettingsEditableProvider extends LanguageSettingsSerializableProvider implements ILanguageSettingsEditableProvider { public MockLanguageSettingsEditableProvider() { super(); } - + public MockLanguageSettingsEditableProvider(String id, String name) { super(id, name); } - + + @Override public MockLanguageSettingsEditableProvider cloneShallow() throws CloneNotSupportedException { return (MockLanguageSettingsEditableProvider) super.cloneShallow(); } - + + @Override public MockLanguageSettingsEditableProvider clone() throws CloneNotSupportedException { return (MockLanguageSettingsEditableProvider) super.clone(); } diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsProvider.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsProvider.java index 5b6675f250c..ca1dd40b390 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsProvider.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Andrew Gvozdev and others. + * Copyright (c) 2009, 2012 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 @@ -18,9 +18,10 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; import org.eclipse.core.resources.IResource; -public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase - implements ILanguageSettingsProvider { - +/** + * Mock of {@link ILanguageSettingsProvider} for testing. + */ +public class MockLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider { @Override public List getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) { return null; diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsSerializableProvider.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsSerializableProvider.java index 2120f81fdb8..3c344176a8e 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsSerializableProvider.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockLanguageSettingsSerializableProvider.java @@ -1,24 +1,24 @@ /******************************************************************************* - * Copyright (c) 2009, 2009 Andrew Gvozdev (Quoin Inc.) and others. + * Copyright (c) 2009, 2012 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; -import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; - - +/** + * Mock of {@link LanguageSettingsSerializableProvider} for testing. + */ public class MockLanguageSettingsSerializableProvider extends LanguageSettingsSerializableProvider { public MockLanguageSettingsSerializableProvider() { super(); } - + public MockLanguageSettingsSerializableProvider(String id, String name) { super(id, name); } diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockListenerRegisterer.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockListenerRegisterer.java index f5ad3f3750e..c39835629ec 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockListenerRegisterer.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/MockListenerRegisterer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2011 Andrew Gvozdev and others. + * Copyright (c) 2011, 2012 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 @@ -18,11 +18,11 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.core.runtime.Assert; /** - * Language Settings Provider that keeps count how many times it has been registered. + * Mock Language Settings Provider that keeps count how many times it has been registered. */ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider implements ILanguageSettingsEditableProvider, ICListenerAgent { private static MockListenerManager mockListenerManager = new MockListenerManager(); - + private static class MockListenerManager { private class ListenerCount { private MockListenerRegisterer listener; @@ -33,7 +33,7 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider } } private List register = new ArrayList(); - + public void registerListener(MockListenerRegisterer listener) { for (ListenerCount lc : register) { if (lc.listener == listener) { @@ -41,10 +41,10 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider return; } } - + register.add(new ListenerCount(listener, 1)); } - + public void unregisterListener(MockListenerRegisterer listener) { for (ListenerCount lc : register) { if (lc.listener == listener) { @@ -53,11 +53,11 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider return; } } - + // attempt to unregister non-registered listener Assert.isTrue(false); } - + /** * Note that that count includes all listeners with that id. */ @@ -69,7 +69,7 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider count = count + lc.count; } } - + return count; } } @@ -80,10 +80,12 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider public MockListenerRegisterer(String id, String name) { super(id, name); } + @Override public void registerListener(ICConfigurationDescription cfgDescription) { mockListenerManager.registerListener(this); } - + + @Override public void unregisterListener() { mockListenerManager.unregisterListener(this); } @@ -95,7 +97,7 @@ public class MockListenerRegisterer extends LanguageSettingsSerializableProvider public MockListenerRegisterer clone() throws CloneNotSupportedException { return (MockListenerRegisterer) super.clone(); } - + public static int getCount(String id) { return mockListenerManager.getCount(id); } diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/CModelMock.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/CModelMock.java index 4b463573366..a6c0a5d2551 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/CModelMock.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/CModelMock.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Andrew Gvozdev and others. + * Copyright (c) 2010, 2012 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 @@ -37,12 +37,13 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.QualifiedName; +/** + * Collection of mock classes for testing + */ public class CModelMock { - /** * Dummy implementation of ICProjectDescription for testing. * Feel free to override the methods you are interested to mock. - * */ public static class DummyCProjectDescription implements ICProjectDescription { @@ -217,7 +218,6 @@ public class CModelMock { /** * Dummy implementation of ICConfigurationDescription for testing. * Feel free to override the methods you are interested to mock. - * */ public static class DummyCConfigurationDescription implements ICConfigurationDescription { private String id; diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsDelta.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsDelta.java index ab21380266d..5fd372612aa 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsDelta.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsDelta.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2011 Andrew Gvozdev and others. + * Copyright (c) 2011, 2012 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 @@ -35,11 +35,9 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; public class LanguageSettingsDelta { // maps need to be ordered by providers @SuppressWarnings("unused") - private LinkedHashMap oldLanguageSettingsState; + private LinkedHashMap oldLanguageSettingsState; @SuppressWarnings("unused") - private LinkedHashMap newLanguageSettingsState; + private LinkedHashMap newLanguageSettingsState; /** * Constructor. diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java index 14e7077bc25..72ad3e0e1f5 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java @@ -236,7 +236,7 @@ public class LanguageSettingsProvidersSerializer { */ private static class LanguageSettingsChangeEvent implements ILanguageSettingsChangeEvent { private String projectName = null; - private Map deltaMap = new HashMap(); + private Map deltaMap = new HashMap(); /** * The act of creating event resets internal delta count in configuration state. @@ -732,7 +732,6 @@ public class LanguageSettingsProvidersSerializer { return true; } - /** * Save language settings providers of a project to persistent storage. * @@ -751,7 +750,6 @@ public class LanguageSettingsProvidersSerializer { CCorePlugin.log("Internal error while trying to serialize language settings", e); //$NON-NLS-1$ } - try { // The storage could be split in two, one for provider properties, another one for entries, // depending on provider flag @@ -1177,8 +1175,8 @@ public class LanguageSettingsProvidersSerializer { * Check that this particular element is in the association list. */ private static boolean isListenerInTheListOfAssociations(Collection list, ICListenerAgent element) { - // list.contains(element) won't do it as we are interested in exact object, not in equal object for (ListenerAssociation la : list) { + // we are interested in exact object, not in equal object if (la.listener == element) return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsScannerInfoProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsScannerInfoProvider.java index 537353c0c3f..29171966649 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsScannerInfoProvider.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsScannerInfoProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Andrew Gvozdev and others. + * Copyright (c) 2010, 2012 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 @@ -22,6 +22,7 @@ import org.eclipse.cdt.core.cdtvariables.CdtVariableException; import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.parser.ExtendedScannerInfo; +import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.IScannerInfoChangeListener; import org.eclipse.cdt.core.parser.IScannerInfoProvider; import org.eclipse.cdt.core.settings.model.ACPathEntry; @@ -45,8 +46,12 @@ import org.eclipse.osgi.util.NLS; * language settings providers of "default settings configuration" * (see {@link ICProjectDescription#getDefaultSettingConfiguration()}). * + * @see IScannerInfo#getIncludePaths() + * */ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider { + private static final String FRAMEWORK_PRIVATE_HEADERS_INCLUDE = "/__framework__.framework/PrivateHeaders/__header__"; //$NON-NLS-1$ + private static final String FRAMEWORK_HEADERS_INCLUDE = "/__framework__.framework/Headers/__header__"; //$NON-NLS-1$ private static final ExtendedScannerInfo DUMMY_SCANNER_INFO = new ExtendedScannerInfo(); @Override @@ -143,9 +148,11 @@ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider } else { ICdtVariableManager mngr = CCorePlugin.getDefault().getCdtVariableManager(); try { - // FIXME IPath buildCWD can hold variables i.e. ${workspace_loc:/path} + // Note that IPath buildCWD holding variables is mis-constructed, + // i.e. ${workspace_loc:/path} gets split into 2 path segments + // still, MBS does that and we need to handle that String buildPathString = buildCWD.toString(); - buildPathString = mngr.resolveValue(buildPathString, "", null, cfgDescription); + buildPathString = mngr.resolveValue(buildPathString, "", null, cfgDescription); //$NON-NLS-1$ buildCWD = new Path(buildPathString); } catch (CdtVariableException e) { CCorePlugin.log(e); @@ -212,8 +219,9 @@ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider IPath loc = entryPath.getLocation(); if (loc!=null) { if (checkBit(entryPath.getFlags(), ICSettingEntry.FRAMEWORKS_MAC)) { - locations.add(loc.append("/__framework__.framework/Headers/__header__").toOSString()); - locations.add(loc.append("/__framework__.framework/PrivateHeaders/__header__").toOSString()); + // handle frameworks, see IScannerInfo.getIncludePaths() + locations.add(loc.append(FRAMEWORK_HEADERS_INCLUDE).toOSString()); + locations.add(loc.append(FRAMEWORK_PRIVATE_HEADERS_INCLUDE).toOSString()); } else { locations.add(loc.toOSString()); } @@ -226,8 +234,9 @@ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider locStr = resolveEntry(locStr, cfgDescription); if (locStr!=null) { if (checkBit(entryPath.getFlags(), ICSettingEntry.FRAMEWORKS_MAC)) { - locations.add(locStr+"/__framework__.framework/Headers/__header__"); - locations.add(locStr+"/__framework__.framework/PrivateHeaders/__header__"); + // handle frameworks, see IScannerInfo.getIncludePaths() + locations.add(locStr+FRAMEWORK_HEADERS_INCLUDE); + locations.add(locStr+FRAMEWORK_PRIVATE_HEADERS_INCLUDE); } else { locations.add(locStr); // add relative paths again for indexer to resolve from source file location diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/LanguageSettingsChangeListener.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/LanguageSettingsChangeListener.java index bed48f79a17..bc1846adba7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/LanguageSettingsChangeListener.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/LanguageSettingsChangeListener.java @@ -53,7 +53,5 @@ public class LanguageSettingsChangeListener implements ILanguageSettingsChangeLi } } } - } - } diff --git a/core/org.eclipse.cdt.core/schema/LanguageSettingsProvider.exsd b/core/org.eclipse.cdt.core/schema/LanguageSettingsProvider.exsd index 7b32bd2225b..9cfae19859f 100644 --- a/core/org.eclipse.cdt.core/schema/LanguageSettingsProvider.exsd +++ b/core/org.eclipse.cdt.core/schema/LanguageSettingsProvider.exsd @@ -76,7 +76,7 @@ Default constructor (constructor without arguments) of this class must be public - Unique ID of the provider + Unique ID of the provider. @@ -139,7 +139,7 @@ The value "true" of this attribute is meaningful only for providers ca Kind of language settings entry which maps to compiler options. For example, following mapping is used for gcc options: -<br><samp>"-I"</samp> : includePath +<br>"<samp>-I</samp>" : includePath <br>"<samp>-D</samp>" : macro <br>"<samp>-include</samp>" : includeFile <br>"<samp>-L</samp>" : libraryPath