mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
ILanguageSettingsBroadcastingProvider introduced, some code maintenance
This commit is contained in:
parent
da8e44baef
commit
0962b1efbb
17 changed files with 279 additions and 224 deletions
|
@ -15,7 +15,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.AbstractExecutableExtensionBase;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsBroadcastingProvider;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICFileDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICFolderDescription;
|
||||
|
@ -27,9 +27,7 @@ import org.eclipse.core.resources.IFile;
|
|||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
||||
//public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsEditableProvider {
|
||||
public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsProvider {
|
||||
|
||||
public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase implements ILanguageSettingsBroadcastingProvider {
|
||||
@Override
|
||||
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId) {
|
||||
|
||||
|
@ -92,6 +90,7 @@ public class MBSLanguageSettingsProvider extends AbstractExecutableExtensionBase
|
|||
return array;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId,
|
||||
List<ICLanguageSettingEntry> entries) {
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2009, 2010 Andrew Gvozdev and others.
|
||||
* Copyright (c) 2009, 2011 Andrew Gvozdev and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
|
@ -35,16 +35,19 @@ import org.eclipse.core.runtime.Path;
|
|||
*/
|
||||
public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
||||
// These should match corresponding entries defined in plugin.xml
|
||||
private static final String EXTENSION_BASE_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider";
|
||||
private static final String EXTENSION_BASE_PROVIDER_NAME = "Test Plugin Mock Language Settings Base Provider";
|
||||
private static final String EXTENSION_BASE_PROVIDER_LANG_ID = "org.eclipse.cdt.core.tests.language.id";
|
||||
private static final String EXTENSION_BASE_PROVIDER_PARAMETER = "custom parameter";
|
||||
private static final String EXTENSION_CUSTOM_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.language.settings.provider";
|
||||
private static final String EXTENSION_CUSTOM_PROVIDER_NAME = "Test Plugin Mock Language Settings Provider";
|
||||
private static final String EXTENSION_BASE_SUBCLASS_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider.subclass";
|
||||
private static final String EXTENSION_BASE_SUBCLASS_PROVIDER_PARAMETER = "custom parameter subclass";
|
||||
private static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.serializable.language.settings.provider";
|
||||
private static final String EXTENSION_EDITABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.editable.language.settings.provider";
|
||||
/*package*/ static final String EXTENSION_BASE_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider";
|
||||
/*package*/ static final String EXTENSION_BASE_PROVIDER_NAME = "Test Plugin Mock Language Settings Base Provider";
|
||||
/*package*/ static final String EXTENSION_BASE_PROVIDER_LANG_ID = "org.eclipse.cdt.core.tests.language.id";
|
||||
/*package*/ static final String EXTENSION_BASE_PROVIDER_PARAMETER = "custom parameter";
|
||||
/*package*/ static final String EXTENSION_CUSTOM_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.language.settings.provider";
|
||||
/*package*/ static final String EXTENSION_CUSTOM_PROVIDER_NAME = "Test Plugin Mock Language Settings Provider";
|
||||
/*package*/ static final String EXTENSION_BASE_SUBCLASS_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider.subclass";
|
||||
/*package*/ static final String EXTENSION_BASE_SUBCLASS_PROVIDER_PARAMETER = "custom parameter subclass";
|
||||
/*package*/ static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.serializable.language.settings.provider";
|
||||
/*package*/ static final String EXTENSION_SERIALIZABLE_PROVIDER_NAME = "Test Plugin Mock Serializable Language Settings Provider";
|
||||
/*package*/ static final String EXTENSION_EDITABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.editable.language.settings.provider";
|
||||
/*package*/ static final String EXTENSION_EDITABLE_PROVIDER_NAME = "Test Plugin Mock Editable Language Settings Provider";
|
||||
/*package*/ static final String EXTENSION_REGISTERER_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.listener.registerer.provider";
|
||||
|
||||
// These are made up
|
||||
private static final String PROVIDER_0 = "test.provider.0.id";
|
||||
|
|
|
@ -33,8 +33,8 @@ import org.eclipse.core.resources.IProject;
|
|||
*/
|
||||
public class LanguageSettingsListenersTests extends BaseTestCase {
|
||||
// Must match provider id defined as extension point
|
||||
private static final String EXTENSION_REGISTERER_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.listener.registerer.provider";
|
||||
private static final String EXTENSION_EDITABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.editable.language.settings.provider";
|
||||
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;
|
||||
|
||||
private static final String PROVIDER_1 = "test.provider.1.id";
|
||||
private static final String PROVIDER_NAME_1 = "test.provider.1.name";
|
||||
|
|
|
@ -42,9 +42,10 @@ import org.eclipse.core.runtime.Path;
|
|||
*/
|
||||
public class LanguageSettingsManagerTests extends BaseTestCase {
|
||||
// Those should match ids of plugin extensions defined in plugin.xml
|
||||
private static final String EXTENSION_BASE_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider";
|
||||
private static final String EXTENSION_EDITABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.editable.language.settings.provider";
|
||||
private static final String EXTENSION_EDITABLE_PROVIDER_NAME = "Test Plugin Mock Editable Language Settings Provider";
|
||||
private static final String EXTENSION_BASE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_ID;
|
||||
private static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_SERIALIZABLE_PROVIDER_ID;
|
||||
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";
|
||||
|
@ -688,14 +689,14 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
|
|||
*/
|
||||
public void testWorkspaceProvider_Basic() throws Exception {
|
||||
// get workspace provider
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
|
||||
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, provider.getId());
|
||||
assertEquals(EXTENSION_EDITABLE_PROVIDER_NAME, provider.getName());
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
|
||||
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_ID, provider.getId());
|
||||
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_NAME, provider.getName());
|
||||
|
||||
// get raw provider
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertEquals(EXTENSION_EDITABLE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_EDITABLE_PROVIDER_NAME, rawProvider.getName());
|
||||
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_SERIALIZABLE_PROVIDER_NAME, rawProvider.getName());
|
||||
assertTrue(rawProvider instanceof LanguageSettingsSerializableProvider);
|
||||
// assert they are not the same object
|
||||
assertNotSame(provider, rawProvider);
|
||||
|
@ -726,8 +727,8 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
|
|||
* Test workspace providers equality.
|
||||
*/
|
||||
public void testWorkspaceProvider_Equals() throws Exception {
|
||||
ILanguageSettingsProvider providerA = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider providerB = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider providerA = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider providerB = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
|
||||
assertEquals(providerA, providerB);
|
||||
}
|
||||
|
||||
|
@ -738,7 +739,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
|
|||
// get sample workspace provider
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
|
||||
{
|
||||
// check on its entries
|
||||
// check on its entries (1 predefined entry via extension point)
|
||||
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null);
|
||||
assertEquals(1, entries.size()); // defined in the extension
|
||||
}
|
||||
|
@ -771,7 +772,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
|
|||
*/
|
||||
public void testWorkspaceProvider_ReplaceWithWorkspaceProvider() throws Exception {
|
||||
// get sample workspace provider
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_SERIALIZABLE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertNotSame(provider, rawProvider);
|
||||
|
||||
|
|
|
@ -40,12 +40,13 @@ import org.w3c.dom.Element;
|
|||
* Test cases testing LanguageSettingsProvider functionality
|
||||
*/
|
||||
public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
||||
// These should match extension points defined in plugin.xml
|
||||
private static final String EXTENSION_BASE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_ID;
|
||||
private static final String EXTENSION_BASE_PROVIDER_NAME = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_NAME;
|
||||
private static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_SERIALIZABLE_PROVIDER_ID;
|
||||
|
||||
private static final String LANGUAGE_SETTINGS_PROJECT_XML = ".settings/language.settings.xml";
|
||||
private static final String LANGUAGE_SETTINGS_WORKSPACE_XML = "language.settings.xml";
|
||||
// Should match extension points defined in plugin.xml
|
||||
private static final String EXTENSION_PROVIDER_ID = "org.eclipse.cdt.core.tests.language.settings.base.provider.subclass";
|
||||
private static final String EXTENSION_PROVIDER_NAME = "Test Plugin Mock Base Provider Subclass";
|
||||
private static final String EXTENSION_SERIALIZABLE_PROVIDER_ID = "org.eclipse.cdt.core.tests.custom.serializable.language.settings.provider";
|
||||
|
||||
private static final String CFG_ID = "test.configuration.id.0";
|
||||
private static final String CFG_ID_2 = "test.configuration.id.2";
|
||||
|
@ -103,20 +104,6 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
private class MockEditableProvider extends LanguageSettingsSerializableProvider implements ILanguageSettingsEditableProvider {
|
||||
public MockEditableProvider(String id, String name) {
|
||||
super(id, name);
|
||||
}
|
||||
@Override
|
||||
public MockEditableProvider cloneShallow() throws CloneNotSupportedException {
|
||||
return (MockEditableProvider) super.cloneShallow();
|
||||
}
|
||||
@Override
|
||||
public MockEditableProvider clone() throws CloneNotSupportedException {
|
||||
return (MockEditableProvider) super.clone();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* @param name - name of the test.
|
||||
|
@ -200,7 +187,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
int originalSize = originalProviders.size();
|
||||
|
||||
// create new provider list
|
||||
LanguageSettingsSerializableProvider mockProvider = new MockEditableProvider(PROVIDER_0, PROVIDER_NAME_0);
|
||||
LanguageSettingsSerializableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_0, PROVIDER_NAME_0);
|
||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(originalProviders);
|
||||
providers.add(mockProvider);
|
||||
assertTrue(originalSize != providers.size());
|
||||
|
@ -245,7 +232,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
ICConfigurationDescription cfgDescription = cfgDescriptions[0];
|
||||
|
||||
// create a provider
|
||||
LanguageSettingsSerializableProvider mockProvider = new MockEditableProvider(PROVIDER_0, PROVIDER_NAME_0);
|
||||
LanguageSettingsSerializableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_0, PROVIDER_NAME_0);
|
||||
mockProvider.setStoringEntriesInProjectArea(true);
|
||||
mockProvider.setSettingEntries(cfgDescription, null, null, entries);
|
||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||
|
@ -268,7 +255,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders();
|
||||
assertEquals(1, providers.size());
|
||||
ILanguageSettingsProvider loadedProvider = providers.get(0);
|
||||
assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider);
|
||||
assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider);
|
||||
assertEquals(PROVIDER_0, loadedProvider.getId());
|
||||
assertEquals(PROVIDER_NAME_0, loadedProvider.getName());
|
||||
|
||||
|
@ -287,7 +274,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders();
|
||||
assertEquals(1, providers.size());
|
||||
ILanguageSettingsProvider loadedProvider = providers.get(0);
|
||||
assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider);
|
||||
assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider);
|
||||
assertEquals(PROVIDER_0, loadedProvider.getId());
|
||||
assertEquals(PROVIDER_NAME_0, loadedProvider.getName());
|
||||
|
||||
|
@ -375,16 +362,16 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
public void testWorkspacePersistence_ShadowedExtensionProvider() throws Exception {
|
||||
{
|
||||
// get the raw extension provider
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
// confirm its type and name
|
||||
assertTrue(rawProvider instanceof LanguageSettingsBaseProvider);
|
||||
assertEquals(EXTENSION_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_PROVIDER_NAME, rawProvider.getName());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_NAME, rawProvider.getName());
|
||||
}
|
||||
{
|
||||
// replace extension provider
|
||||
ILanguageSettingsProvider provider = new MockLanguageSettingsSerializableProvider(EXTENSION_PROVIDER_ID, PROVIDER_NAME_0);
|
||||
ILanguageSettingsProvider provider = new MockLanguageSettingsSerializableProvider(EXTENSION_BASE_PROVIDER_ID, PROVIDER_NAME_0);
|
||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||
providers.add(provider);
|
||||
// note that this will also serialize workspace providers
|
||||
|
@ -392,10 +379,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
}
|
||||
{
|
||||
// doublecheck it's in the list
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertTrue(rawProvider instanceof MockLanguageSettingsSerializableProvider);
|
||||
assertEquals(EXTENSION_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(PROVIDER_NAME_0, rawProvider.getName());
|
||||
}
|
||||
|
||||
|
@ -403,10 +390,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
// re-load to check serialization
|
||||
LanguageSettingsProvidersSerializer.loadLanguageSettingsWorkspace();
|
||||
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertTrue(rawProvider instanceof MockLanguageSettingsSerializableProvider);
|
||||
assertEquals(EXTENSION_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(PROVIDER_NAME_0, rawProvider.getName());
|
||||
}
|
||||
|
||||
|
@ -416,21 +403,21 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
}
|
||||
{
|
||||
// doublecheck original one is in the list
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertTrue(rawProvider instanceof LanguageSettingsBaseProvider);
|
||||
assertEquals(EXTENSION_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_PROVIDER_NAME, rawProvider.getName());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_NAME, rawProvider.getName());
|
||||
}
|
||||
{
|
||||
// re-load to check serialization
|
||||
LanguageSettingsProvidersSerializer.loadLanguageSettingsWorkspace();
|
||||
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
assertTrue(rawProvider instanceof LanguageSettingsBaseProvider);
|
||||
assertEquals(EXTENSION_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_PROVIDER_NAME, rawProvider.getName());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_ID, rawProvider.getId());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_NAME, rawProvider.getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -674,7 +661,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
Element rootElement = null;
|
||||
|
||||
// provider of other type (not LanguageSettingsSerializableProvider) defined as an extension
|
||||
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
|
||||
{
|
||||
// create cfg description
|
||||
|
@ -721,7 +708,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
Element rootElement = null;
|
||||
|
||||
// provider set on workspace level overriding an extension
|
||||
String idExt = EXTENSION_PROVIDER_ID;
|
||||
String idExt = EXTENSION_BASE_PROVIDER_ID;
|
||||
ILanguageSettingsProvider providerExt = LanguageSettingsManager.getWorkspaceProvider(idExt);
|
||||
assertNotNull(providerExt);
|
||||
{
|
||||
|
@ -791,7 +778,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
|
|||
assertNotNull(cfgDescription);
|
||||
|
||||
// 1. Provider reference to extension from plugin.xml
|
||||
providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_PROVIDER_ID);
|
||||
providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
|
||||
|
||||
// 2. TODO Provider reference to provider defined in the project
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2011 Andrew Gvozdev and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Andrew Gvozdev - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.core.language.settings.providers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public interface ILanguageSettingsBroadcastingProvider extends ILanguageSettingsProvider {
|
||||
@Override
|
||||
public String getId();
|
||||
@Override
|
||||
public String getName();
|
||||
@Override
|
||||
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId);
|
||||
|
||||
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId, List<ICLanguageSettingEntry> entries);
|
||||
}
|
|
@ -23,11 +23,15 @@ import org.eclipse.core.resources.IResource;
|
|||
* their settings themselves and not providing such option to the user.
|
||||
*
|
||||
*/
|
||||
public interface ILanguageSettingsEditableProvider extends ILanguageSettingsProvider, Cloneable {
|
||||
|
||||
public interface ILanguageSettingsEditableProvider extends ILanguageSettingsBroadcastingProvider, Cloneable {
|
||||
@Override
|
||||
public String getId();
|
||||
@Override
|
||||
public String getName();
|
||||
@Override
|
||||
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId);
|
||||
@Override
|
||||
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId, List<ICLanguageSettingEntry> entries);
|
||||
public boolean isEmpty();
|
||||
public void clear();
|
||||
|
||||
public ILanguageSettingsEditableProvider cloneShallow() throws CloneNotSupportedException;
|
||||
public ILanguageSettingsEditableProvider clone() throws CloneNotSupportedException;
|
||||
|
|
|
@ -29,8 +29,8 @@ import org.eclipse.core.resources.IResource;
|
|||
* {@code org.eclipse.cdt.core.LanguageSettingsProvider} and implement this
|
||||
* interface. CDT provides a few general use implementations such as
|
||||
* {@link LanguageSettingsBaseProvider} or {@link LanguageSettingsSerializableProvider}
|
||||
* which could be used out of the box or extended. See also extension point
|
||||
* schema description LanguageSettingsProvider.exsd.
|
||||
* or {@link LanguageSettingsGenericProvider} which could be used out of the box or
|
||||
* extended. See also extension point schema description LanguageSettingsProvider.exsd.
|
||||
*
|
||||
* @since 6.0
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2009, 2011 Andrew Gvozdev and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Andrew Gvozdev - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.core.language.settings.providers;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
final public class LanguageSettingsGenericProvider extends LanguageSettingsSerializableProvider implements ILanguageSettingsEditableProvider {
|
||||
@Override
|
||||
public LanguageSettingsGenericProvider clone() throws CloneNotSupportedException {
|
||||
return (LanguageSettingsGenericProvider) super.clone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LanguageSettingsGenericProvider cloneShallow() throws CloneNotSupportedException {
|
||||
return (LanguageSettingsGenericProvider) super.cloneShallow();
|
||||
}
|
||||
|
||||
}
|
|
@ -34,12 +34,11 @@ public class LanguageSettingsManager_TBD {
|
|||
return false;
|
||||
|
||||
for (ILanguageSettingsProvider provider: cfgDescription.getLanguageSettingProviders()) {
|
||||
// FIXME
|
||||
// if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
if (provider instanceof ILanguageSettingsEditableProvider || provider instanceof LanguageSettingsSerializableProvider) {
|
||||
if (provider instanceof ILanguageSettingsBroadcastingProvider) {
|
||||
for (String languageId : LanguageSettingsManager.getLanguages(rc, cfgDescription)) {
|
||||
List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId);
|
||||
if (list!=null) {
|
||||
// TODO - check default or check parent?
|
||||
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(null, null, languageId);
|
||||
// != is OK here due as the equal lists will have the same reference in WeakHashSet
|
||||
if (list != listDefault)
|
||||
|
|
|
@ -31,7 +31,7 @@ import org.w3c.dom.NodeList;
|
|||
* TODO - more JavaDoc, info and hints about class hierarchy
|
||||
*
|
||||
*/
|
||||
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider {
|
||||
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsBroadcastingProvider {
|
||||
public static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
|
||||
private static final String ATTR_ID = "id"; //$NON-NLS-1$
|
||||
|
||||
|
@ -158,6 +158,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
|
|||
* the language scope. See {@link #getLanguageScope()}
|
||||
* @param entries - language settings entries to set.
|
||||
*/
|
||||
@Override
|
||||
public void setSettingEntries(ICConfigurationDescription cfgDescription, IResource rc, String languageId, List<ICLanguageSettingEntry> entries) {
|
||||
String rcProjectPath = rc!=null ? rc.getProjectRelativePath().toString() : null;
|
||||
fStorage.setSettingEntries(rcProjectPath, languageId, entries);
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.eclipse.cdt.core.CCorePlugin;
|
|||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsGenericProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
|
||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
|
||||
|
@ -260,6 +261,11 @@ public class LanguageSettingsExtensionManager {
|
|||
return new LanguageSettingsSerializableProvider();
|
||||
}
|
||||
|
||||
// TODO unit test case for this
|
||||
if (className.equals(LanguageSettingsGenericProvider.class.getName())) {
|
||||
return new LanguageSettingsGenericProvider();
|
||||
}
|
||||
|
||||
ILanguageSettingsProvider provider = createProviderCarcass(className, Platform.getExtensionRegistry());
|
||||
if (provider==null) {
|
||||
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Not able to load provider class=" + className);
|
||||
|
|
|
@ -337,7 +337,7 @@ public class LanguageSettingsProvidersSerializer {
|
|||
rawGlobalWorkspaceProviders = rawWorkspaceProviders;
|
||||
}
|
||||
|
||||
private static List<LanguageSettingsChangeEvent> createLanguageLettingsChangeEvents(List<LanguageSettingsSerializableProvider> serializableProviders) {
|
||||
private static List<LanguageSettingsChangeEvent> createLanguageSettingsChangeEvents(List<LanguageSettingsSerializableProvider> serializableProviders) {
|
||||
List<LanguageSettingsChangeEvent> events = new ArrayList<LanguageSettingsProvidersSerializer.LanguageSettingsChangeEvent>();
|
||||
|
||||
List<String> serializableIds = new ArrayList<String>();
|
||||
|
@ -379,13 +379,9 @@ projects:
|
|||
List<LanguageSettingsSerializableProvider> serializableWorkspaceProviders = new ArrayList<LanguageSettingsSerializableProvider>();
|
||||
for (ILanguageSettingsProvider provider : rawGlobalWorkspaceProviders.values()) {
|
||||
if (provider instanceof LanguageSettingsSerializableProvider) {
|
||||
// serialize all editable providers which are different from corresponding extension
|
||||
// and serialize all serializable ones that are not editable (those are singletons and we don't know whether they changed)
|
||||
if (!(provider instanceof ILanguageSettingsEditableProvider) || !LanguageSettingsExtensionManager.equalsExtensionProvider(provider)) {
|
||||
serializableWorkspaceProviders.add((LanguageSettingsSerializableProvider)provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
List<LanguageSettingsChangeEvent> events = null;
|
||||
if (serializableWorkspaceProviders.isEmpty()) {
|
||||
|
@ -394,7 +390,7 @@ projects:
|
|||
serializingLock.acquire();
|
||||
fileStoreWsp.delete();
|
||||
// manufacture events while inside the lock
|
||||
events = createLanguageLettingsChangeEvents(serializableWorkspaceProviders);
|
||||
events = createLanguageSettingsChangeEvents(serializableWorkspaceProviders);
|
||||
} finally {
|
||||
serializingLock.release();
|
||||
}
|
||||
|
@ -411,7 +407,7 @@ projects:
|
|||
serializingLock.acquire();
|
||||
XmlUtil.serializeXml(doc, uriStoreWsp);
|
||||
// manufacture events while inside the lock
|
||||
events = createLanguageLettingsChangeEvents(serializableWorkspaceProviders);
|
||||
events = createLanguageSettingsChangeEvents(serializableWorkspaceProviders);
|
||||
} finally {
|
||||
serializingLock.release();
|
||||
}
|
||||
|
|
|
@ -42,11 +42,11 @@ import org.eclipse.swt.widgets.Tree;
|
|||
import org.eclipse.swt.widgets.TreeColumn;
|
||||
import org.eclipse.swt.widgets.TreeItem;
|
||||
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsBroadcastingProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
|
||||
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
|
||||
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
|
||||
import org.eclipse.cdt.core.model.ILanguage;
|
||||
import org.eclipse.cdt.core.model.LanguageManager;
|
||||
|
@ -122,7 +122,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
if (entriesParent != null /*&& entriesParent.size() > 0*/) {
|
||||
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_PARENT;
|
||||
}
|
||||
} else if (provider instanceof ILanguageSettingsEditableProvider && (page.isForFile() || page.isForFolder())) {
|
||||
} else if (provider instanceof ILanguageSettingsBroadcastingProvider && (page.isForFile() || page.isForFolder())) {
|
||||
// Assuming that the default entries for a resource are always null.
|
||||
// Using that for performance reasons. See note in PerformDefaults().
|
||||
List<ICLanguageSettingEntry> entriesParent = provider.getSettingEntries(null, null, currentLanguageId);
|
||||
|
@ -682,7 +682,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
}
|
||||
|
||||
private void saveEntries(ILanguageSettingsProvider provider, List<ICLanguageSettingEntry> entries) {
|
||||
if (provider instanceof LanguageSettingsSerializableProvider) {
|
||||
if (provider instanceof ILanguageSettingsEditableProvider) {
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
IResource rc = getResource();
|
||||
if (entries!=null && rc!=null) {
|
||||
|
@ -697,7 +697,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
entries = null;
|
||||
}
|
||||
}
|
||||
((LanguageSettingsSerializableProvider)provider).setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
|
||||
((ILanguageSettingsEditableProvider)provider).setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -961,11 +961,11 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
boolean changed = false;
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
IResource rc = getResource();
|
||||
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders();
|
||||
List<ILanguageSettingsProvider> writableProviders = new ArrayList<ILanguageSettingsProvider>(providers.size());
|
||||
List<ILanguageSettingsProvider> oldProviders = cfgDescription.getLanguageSettingProviders();
|
||||
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(oldProviders.size());
|
||||
|
||||
providers: for (ILanguageSettingsProvider provider : providers) {
|
||||
ILanguageSettingsEditableProvider writableProvider = null;
|
||||
providers: for (ILanguageSettingsProvider provider : oldProviders) {
|
||||
ILanguageSettingsEditableProvider providerCopy = null;
|
||||
if (provider instanceof ILanguageSettingsEditableProvider) {
|
||||
for (TreeItem langItems : treeLanguages.getItems()) {
|
||||
String langId = (String)langItems.getData();
|
||||
|
@ -973,10 +973,10 @@ providers: for (ILanguageSettingsProvider provider : providers) {
|
|||
if (provider.getSettingEntries(cfgDescription, rc, langId)!=null) {
|
||||
try {
|
||||
// clone providers to be able to "Cancel" in UI
|
||||
if (writableProvider==null) {
|
||||
writableProvider = ((ILanguageSettingsEditableProvider) provider).clone();
|
||||
if (providerCopy==null) {
|
||||
providerCopy = ((ILanguageSettingsEditableProvider) provider).clone();
|
||||
}
|
||||
writableProvider.setSettingEntries(cfgDescription, rc, langId, null);
|
||||
providerCopy.setSettingEntries(cfgDescription, rc, langId, null);
|
||||
changed = true;
|
||||
} catch (CloneNotSupportedException e) {
|
||||
CUIPlugin.log("Internal Error: cannot clone provider "+provider.getId(), e);
|
||||
|
@ -986,13 +986,13 @@ providers: for (ILanguageSettingsProvider provider : providers) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (writableProvider!=null)
|
||||
writableProviders.add(writableProvider);
|
||||
if (providerCopy!=null)
|
||||
newProviders.add(providerCopy);
|
||||
else
|
||||
writableProviders.add(provider);
|
||||
newProviders.add(provider);
|
||||
}
|
||||
if (changed) {
|
||||
cfgDescription.setLanguageSettingProviders(writableProviders);
|
||||
cfgDescription.setLanguageSettingProviders(newProviders);
|
||||
// updateTreeEntries();
|
||||
// updateData(getResDesc());
|
||||
List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageId);
|
||||
|
|
|
@ -150,14 +150,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
Assert.isTrue(rawProvider instanceof ILanguageSettingsEditableProvider);
|
||||
|
||||
ILanguageSettingsEditableProvider editableProvider = (ILanguageSettingsEditableProvider)rawProvider;
|
||||
try {
|
||||
ILanguageSettingsEditableProvider newProvider = editableProvider.clone();
|
||||
ILanguageSettingsEditableProvider newProvider = ((ILanguageSettingsEditableProvider)rawProvider).clone();
|
||||
replaceSelectedProvider(newProvider);
|
||||
return newProvider;
|
||||
|
||||
} catch (CloneNotSupportedException e) {
|
||||
CUIPlugin.log("Error cloning provider " + editableProvider.getId(), e);
|
||||
CUIPlugin.log("Error cloning provider " + rawProvider.getId(), e);
|
||||
// TODO warning dialog for user?
|
||||
}
|
||||
|
||||
|
@ -744,8 +743,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
private void performClear(ILanguageSettingsProvider selectedProvider) {
|
||||
if (isWorkingCopy(selectedProvider)) {
|
||||
if (selectedProvider instanceof ILanguageSettingsEditableProvider) {
|
||||
ILanguageSettingsEditableProvider editableProvider = (ILanguageSettingsEditableProvider) selectedProvider;
|
||||
if (selectedProvider instanceof LanguageSettingsSerializableProvider) {
|
||||
LanguageSettingsSerializableProvider editableProvider = (LanguageSettingsSerializableProvider) selectedProvider;
|
||||
editableProvider.clear();
|
||||
tableProvidersViewer.update(selectedProvider, null);
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2009, 2009 Andrew Gvozdev (Quoin Inc.) and others.
|
||||
* Copyright (c) 2009, 2011 Andrew Gvozdev) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Andrew Gvozdev (Quoin Inc.) - initial API and implementation
|
||||
* Andrew Gvozdev - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||
|
|
Loading…
Add table
Reference in a new issue