mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Consolidate usage of constants
This commit is contained in:
parent
e64c995ff0
commit
8715c43cde
8 changed files with 112 additions and 100 deletions
|
@ -103,7 +103,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
|
|
||||||
private class SDMarkerGenerator implements IMarkerGenerator {
|
private class SDMarkerGenerator implements IMarkerGenerator {
|
||||||
protected static final String SCANNER_DISCOVERY_PROBLEM_MARKER = MakeCorePlugin.PLUGIN_ID + ".scanner.discovery.problem"; //$NON-NLS-1$
|
protected static final String SCANNER_DISCOVERY_PROBLEM_MARKER = MakeCorePlugin.PLUGIN_ID + ".scanner.discovery.problem"; //$NON-NLS-1$
|
||||||
protected static final String PROVIDER = "provider"; //$NON-NLS-1$
|
protected static final String ATTR_PROVIDER = "provider"; //$NON-NLS-1$
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
||||||
|
@ -142,7 +142,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
IMarker marker = problemMarkerInfo.file.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
|
IMarker marker = problemMarkerInfo.file.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
|
||||||
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
||||||
marker.setAttribute(IMarker.SEVERITY, problemMarkerInfo.severity);
|
marker.setAttribute(IMarker.SEVERITY, problemMarkerInfo.severity);
|
||||||
marker.setAttribute(SDMarkerGenerator.PROVIDER, providerId);
|
marker.setAttribute(SDMarkerGenerator.ATTR_PROVIDER, providerId);
|
||||||
|
|
||||||
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
|
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
|
||||||
marker.setAttribute(IMarker.LOCATION, "SD90 Providers, [" + providerName + "] options in Preferences");
|
marker.setAttribute(IMarker.LOCATION, "SD90 Providers, [" + providerName + "] options in Preferences");
|
||||||
|
@ -360,7 +360,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
try {
|
try {
|
||||||
IMarker[] cur = markersResource.findMarkers(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
|
IMarker[] cur = markersResource.findMarkers(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
|
||||||
for (IMarker marker : cur) {
|
for (IMarker marker : cur) {
|
||||||
if (getId().equals(marker.getAttribute(SDMarkerGenerator.PROVIDER))) {
|
if (getId().equals(marker.getAttribute(SDMarkerGenerator.ATTR_PROVIDER))) {
|
||||||
marker.delete();
|
marker.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.eclipse.cdt.core.settings.model.CMacroFileEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
||||||
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
|
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
|
||||||
|
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
|
@ -59,10 +60,10 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
||||||
private static final String LANG_ID = "test.lang.id";
|
private static final String LANG_ID = "test.lang.id";
|
||||||
private static final IFile FILE_0 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/project/path0"));
|
private static final IFile FILE_0 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/project/path0"));
|
||||||
|
|
||||||
// These must match constants used in LanguageSettingsSerializableProvider
|
// Constants used in LanguageSettingsSerializableProvider
|
||||||
private static final String ATTR_ID = "id"; //$NON-NLS-1$
|
private static final String ATTR_ID = LanguageSettingsProvidersSerializer.ATTR_ID;
|
||||||
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
|
private static final String ATTR_NAME = LanguageSettingsProvidersSerializer.ATTR_NAME;
|
||||||
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
private static final String ATTR_CLASS = LanguageSettingsProvidersSerializer.ATTR_CLASS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
@ -255,11 +256,11 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(new CIncludePathEntry("/usr/include/", 0));
|
entries.add(new CIncludePathEntry("/usr/include/", 0));
|
||||||
// configure it
|
// configure it
|
||||||
provider.configureProvider("id", "name", null, entries, null);
|
provider.configureProvider("test.id", "test.name", null, entries, null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// attempt to configure it twice should fail
|
// attempt to configure it twice should fail
|
||||||
provider.configureProvider("id", "name", null, entries, null);
|
provider.configureProvider("test.id", "test.name", null, entries, null);
|
||||||
fail("LanguageSettingsBaseProvider is not allowed to be configured twice");
|
fail("LanguageSettingsBaseProvider is not allowed to be configured twice");
|
||||||
} catch (UnsupportedOperationException e) {
|
} catch (UnsupportedOperationException e) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -810,7 +810,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
|
||||||
public void testCIncludeFileEntryDOM() throws Exception {
|
public void testCIncludeFileEntryDOM() throws Exception {
|
||||||
Element elementProvider;
|
Element elementProvider;
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(new CIncludeFileEntry("name", 1));
|
entries.add(new CIncludeFileEntry("a-path", 1));
|
||||||
{
|
{
|
||||||
// create a provider and serialize its settings
|
// create a provider and serialize its settings
|
||||||
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
||||||
|
@ -874,7 +874,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
|
||||||
public void testCMacroFileEntryDOM() throws Exception {
|
public void testCMacroFileEntryDOM() throws Exception {
|
||||||
Element elementProvider;
|
Element elementProvider;
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(new CMacroFileEntry("name", 1));
|
entries.add(new CMacroFileEntry("a-path", 1));
|
||||||
{
|
{
|
||||||
// create a provider and serialize its settings
|
// create a provider and serialize its settings
|
||||||
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
||||||
|
@ -906,7 +906,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
|
||||||
public void testCLibraryPathEntryDOM() throws Exception {
|
public void testCLibraryPathEntryDOM() throws Exception {
|
||||||
Element elementProvider;
|
Element elementProvider;
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(new CLibraryPathEntry("name", 1));
|
entries.add(new CLibraryPathEntry("a-path", 1));
|
||||||
{
|
{
|
||||||
// create a provider and serialize its settings
|
// create a provider and serialize its settings
|
||||||
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
||||||
|
@ -938,7 +938,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
|
||||||
public void testCLibraryFileEntryDOM() throws Exception {
|
public void testCLibraryFileEntryDOM() throws Exception {
|
||||||
Element elementProvider;
|
Element elementProvider;
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(new CLibraryFileEntry("name", 1));
|
entries.add(new CLibraryFileEntry("a-path", 1));
|
||||||
{
|
{
|
||||||
// create a provider and serialize its settings
|
// create a provider and serialize its settings
|
||||||
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
|
||||||
|
|
|
@ -1017,7 +1017,7 @@ public class CProjectDescriptionDeltaTests extends BaseTestCase{
|
||||||
List<ILanguageSettingsProvider> originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
List<ILanguageSettingsProvider> originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||||
|
|
||||||
// Modification LANGUAGE_SETTINGS_PROVIDERS
|
// Modification LANGUAGE_SETTINGS_PROVIDERS
|
||||||
ILanguageSettingsProvider provider = new LanguageSettingsSerializableProvider("id", "name");
|
ILanguageSettingsProvider provider = new LanguageSettingsSerializableProvider("test.id", "test.name");
|
||||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||||
providers.add(provider);
|
providers.add(provider);
|
||||||
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
|
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
||||||
import org.eclipse.cdt.internal.core.XmlUtil;
|
import org.eclipse.cdt.internal.core.XmlUtil;
|
||||||
|
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
|
||||||
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsSerializableStorage;
|
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsSerializableStorage;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
@ -37,13 +38,11 @@ import org.w3c.dom.NodeList;
|
||||||
* {@link ILanguageSettingsProvider}.
|
* {@link ILanguageSettingsProvider}.
|
||||||
*/
|
*/
|
||||||
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsBroadcastingProvider {
|
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsBroadcastingProvider {
|
||||||
/** This field is for internal use only */
|
protected static final String ATTR_ID = LanguageSettingsProvidersSerializer.ATTR_ID;
|
||||||
public static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
|
protected static final String ATTR_NAME = LanguageSettingsProvidersSerializer.ATTR_NAME;
|
||||||
private static final String ATTR_ID = "id"; //$NON-NLS-1$
|
protected static final String ATTR_CLASS = LanguageSettingsProvidersSerializer.ATTR_CLASS;
|
||||||
|
protected static final String ELEM_PROVIDER = LanguageSettingsProvidersSerializer.ELEM_PROVIDER;
|
||||||
private static final String ELEM_LANGUAGE_SCOPE = "language-scope"; //$NON-NLS-1$
|
protected static final String ELEM_LANGUAGE_SCOPE = LanguageSettingsProvidersSerializer.ELEM_LANGUAGE_SCOPE;
|
||||||
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
|
|
||||||
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
private LanguageSettingsSerializableStorage fStorage = new LanguageSettingsSerializableStorage();
|
private LanguageSettingsSerializableStorage fStorage = new LanguageSettingsSerializableStorage();
|
||||||
|
|
||||||
|
|
|
@ -44,20 +44,20 @@ import org.eclipse.core.runtime.Status;
|
||||||
*/
|
*/
|
||||||
public class LanguageSettingsExtensionManager {
|
public class LanguageSettingsExtensionManager {
|
||||||
/** Name of the extension point for contributing language settings */
|
/** Name of the extension point for contributing language settings */
|
||||||
static final String PROVIDER_EXTENSION_FULL_ID = "org.eclipse.cdt.core.LanguageSettingsProvider"; //$NON-NLS-1$
|
static final String PROVIDER_EXTENSION_POINT_ID = "org.eclipse.cdt.core.LanguageSettingsProvider"; //$NON-NLS-1$
|
||||||
static final String PROVIDER_EXTENSION_SIMPLE_ID = "LanguageSettingsProvider"; //$NON-NLS-1$
|
static final String PROVIDER_EXTENSION_SIMPLE_ID = "LanguageSettingsProvider"; //$NON-NLS-1$
|
||||||
|
|
||||||
static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
|
|
||||||
static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
|
||||||
static final String ATTR_ID = "id"; //$NON-NLS-1$
|
static final String ATTR_ID = "id"; //$NON-NLS-1$
|
||||||
static final String ATTR_NAME = "name"; //$NON-NLS-1$
|
static final String ATTR_NAME = "name"; //$NON-NLS-1$
|
||||||
|
static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
|
||||||
static final String ELEM_LANGUAGE_SCOPE = "language-scope"; //$NON-NLS-1$
|
static final String ELEM_LANGUAGE_SCOPE = "language-scope"; //$NON-NLS-1$
|
||||||
|
|
||||||
static final String ELEM_ENTRY = "entry"; //$NON-NLS-1$
|
static final String ELEM_ENTRY = "entry"; //$NON-NLS-1$
|
||||||
static final String ELEM_FLAG = "flag"; //$NON-NLS-1$
|
static final String ATTR_ENTRY_NAME = "name"; //$NON-NLS-1$
|
||||||
static final String ATTR_KIND = "kind"; //$NON-NLS-1$
|
static final String ATTR_ENTRY_KIND = "kind"; //$NON-NLS-1$
|
||||||
static final String ATTR_VALUE = "value"; //$NON-NLS-1$
|
static final String ATTR_ENTRY_VALUE = "value"; //$NON-NLS-1$
|
||||||
|
static final String ELEM_ENTRY_FLAG = "flag"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extension providers loaded once. If the provider is editable (read cloneable)
|
* Extension providers loaded once. If the provider is editable (read cloneable)
|
||||||
|
@ -186,13 +186,13 @@ public class LanguageSettingsExtensionManager {
|
||||||
|
|
||||||
for (IConfigurationElement ceEntry : ce.getChildren(ELEM_ENTRY)) {
|
for (IConfigurationElement ceEntry : ce.getChildren(ELEM_ENTRY)) {
|
||||||
try {
|
try {
|
||||||
int entryKind = LanguageSettingEntriesSerializer.stringToKind(determineAttributeValue(ceEntry, ATTR_KIND));
|
int entryKind = LanguageSettingEntriesSerializer.stringToKind(determineAttributeValue(ceEntry, ATTR_ENTRY_KIND));
|
||||||
String entryName = determineAttributeValue(ceEntry, ATTR_NAME);
|
String entryName = determineAttributeValue(ceEntry, ATTR_ENTRY_NAME);
|
||||||
String entryValue = determineAttributeValue(ceEntry, ATTR_VALUE);
|
String entryValue = determineAttributeValue(ceEntry, ATTR_ENTRY_VALUE);
|
||||||
|
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
for (IConfigurationElement ceFlags : ceEntry.getChildren(ELEM_FLAG)) {
|
for (IConfigurationElement ceFlags : ceEntry.getChildren(ELEM_ENTRY_FLAG)) {
|
||||||
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(determineAttributeValue(ceFlags, ATTR_VALUE));
|
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(determineAttributeValue(ceFlags, ATTR_ENTRY_VALUE));
|
||||||
flags |= bitFlag;
|
flags |= bitFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,16 +64,23 @@ import org.w3c.dom.NodeList;
|
||||||
* Helper class handling serialization and notifications for language settings entries {@link ICLanguageSettingEntry}.
|
* Helper class handling serialization and notifications for language settings entries {@link ICLanguageSettingEntry}.
|
||||||
*/
|
*/
|
||||||
public class LanguageSettingsProvidersSerializer {
|
public class LanguageSettingsProvidersSerializer {
|
||||||
|
public static final String PROVIDER_EXTENSION_POINT_ID = LanguageSettingsExtensionManager.PROVIDER_EXTENSION_POINT_ID;
|
||||||
|
public static final String ATTR_ID = LanguageSettingsExtensionManager.ATTR_ID;
|
||||||
|
public static final String ATTR_NAME = LanguageSettingsExtensionManager.ATTR_NAME;
|
||||||
|
public static final String ATTR_CLASS = LanguageSettingsExtensionManager.ATTR_CLASS;
|
||||||
|
public static final String ELEM_PROVIDER = LanguageSettingsExtensionManager.ELEM_PROVIDER;
|
||||||
|
public static final String ELEM_LANGUAGE_SCOPE = LanguageSettingsExtensionManager.ELEM_LANGUAGE_SCOPE;
|
||||||
|
|
||||||
private static final String PREFERENCE_WORSPACE_PROVIDERS_SET = "language.settings.providers.set.for.workspace"; //$NON-NLS-1$
|
private static final String PREFERENCE_WORSPACE_PROVIDERS_SET = "language.settings.providers.set.for.workspace"; //$NON-NLS-1$
|
||||||
private static final String STORAGE_WORKSPACE_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$
|
private static final String STORAGE_WORKSPACE_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$
|
||||||
private static final String SETTINGS_FOLDER_NAME = ".settings/"; //$NON-NLS-1$
|
private static final String SETTINGS_FOLDER_NAME = ".settings/"; //$NON-NLS-1$
|
||||||
private static final String STORAGE_PROJECT_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$
|
private static final String STORAGE_PROJECT_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ELEM_PLUGIN = "plugin"; //$NON-NLS-1$
|
private static final String ELEM_PLUGIN = "plugin"; //$NON-NLS-1$
|
||||||
private static final String ELEM_EXTENSION = "extension"; //$NON-NLS-1$
|
private static final String ELEM_EXTENSION = "extension"; //$NON-NLS-1$
|
||||||
private static final String ATTR_POINT = "point"; //$NON-NLS-1$
|
private static final String ATTR_EXTENSION_POINT = "point"; //$NON-NLS-1$
|
||||||
private static final String ELEM_PROJECT = "project"; //$NON-NLS-1$
|
private static final String ELEM_PROJECT = "project"; //$NON-NLS-1$
|
||||||
private static final String ELEM_CONFIGURATION = "configuration"; //$NON-NLS-1$
|
private static final String ELEM_CONFIGURATION = "configuration"; //$NON-NLS-1$
|
||||||
private static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
|
|
||||||
private static final String ELEM_PROVIDER_REFERENCE = "provider-reference"; //$NON-NLS-1$
|
private static final String ELEM_PROVIDER_REFERENCE = "provider-reference"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_STORE_ENTRIES = "store-entries"; //$NON-NLS-1$
|
private static final String ATTR_STORE_ENTRIES = "store-entries"; //$NON-NLS-1$
|
||||||
|
@ -290,8 +297,7 @@ public class LanguageSettingsProvidersSerializer {
|
||||||
*/
|
*/
|
||||||
private static URI getStoreInWorkspaceArea(String store) {
|
private static URI getStoreInWorkspaceArea(String store) {
|
||||||
IPath location = CCorePlugin.getDefault().getStateLocation().append(store);
|
IPath location = CCorePlugin.getDefault().getStateLocation().append(store);
|
||||||
URI uri = URIUtil.toURI(location);
|
return URIUtil.toURI(location);
|
||||||
return uri;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -315,43 +321,40 @@ public class LanguageSettingsProvidersSerializer {
|
||||||
* is passed user defined providers are cleared.
|
* is passed user defined providers are cleared.
|
||||||
*/
|
*/
|
||||||
private static void setWorkspaceProvidersInternal(List<ILanguageSettingsProvider> providers) {
|
private static void setWorkspaceProvidersInternal(List<ILanguageSettingsProvider> providers) {
|
||||||
Map<String, ILanguageSettingsProvider> rawWorkspaceProviders = new HashMap<String, ILanguageSettingsProvider>();
|
Map<String, ILanguageSettingsProvider> rawNewProviders = new HashMap<String, ILanguageSettingsProvider>();
|
||||||
|
|
||||||
// given providers
|
// add given providers
|
||||||
List<ILanguageSettingsProvider> rawProviders = new ArrayList<ILanguageSettingsProvider>();
|
if (providers != null) {
|
||||||
if (providers!=null) {
|
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
for (ILanguageSettingsProvider provider : providers) {
|
||||||
if (isWorkspaceProvider(provider)) {
|
if (isWorkspaceProvider(provider)) {
|
||||||
provider = rawGlobalWorkspaceProviders.get(provider.getId());
|
provider = rawGlobalWorkspaceProviders.get(provider.getId());
|
||||||
}
|
}
|
||||||
if (provider!=null) {
|
if (provider != null) {
|
||||||
rawProviders.add(provider);
|
rawNewProviders.put(provider.getId(), provider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (ILanguageSettingsProvider provider : rawProviders) {
|
|
||||||
rawWorkspaceProviders.put(provider.getId(), provider);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill the rest from extension registry
|
// fill the rest from extension registry
|
||||||
// this list is independent from the internal list of extensions in LanguageSettingsExtensionManager
|
// this list is independent from the internal list of extensions in LanguageSettingsExtensionManager
|
||||||
for (String id : LanguageSettingsExtensionManager.getExtensionProviderIds()) {
|
for (String id : LanguageSettingsExtensionManager.getExtensionProviderIds()) {
|
||||||
if (!rawWorkspaceProviders.containsKey(id)) {
|
if (!rawNewProviders.containsKey(id)) {
|
||||||
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.getExtensionProviderCopy(id, true);
|
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.getExtensionProviderCopy(id, true);
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
provider = LanguageSettingsExtensionManager.loadProvider(id);
|
provider = LanguageSettingsExtensionManager.loadProvider(id);
|
||||||
}
|
}
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
rawWorkspaceProviders.put(provider.getId(), provider);
|
rawNewProviders.put(provider.getId(), provider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// register listeners
|
||||||
List<ICListenerAgent> oldListeners = selectListeners(rawGlobalWorkspaceProviders.values());
|
List<ICListenerAgent> oldListeners = selectListeners(rawGlobalWorkspaceProviders.values());
|
||||||
List<ICListenerAgent> newListeners = selectListeners(rawProviders);
|
List<ICListenerAgent> newListeners = selectListeners(rawNewProviders.values());
|
||||||
|
|
||||||
for (ICListenerAgent oldListener : oldListeners) {
|
for (ICListenerAgent oldListener : oldListeners) {
|
||||||
if (!isObjectInTheList(newListeners, oldListener)) {
|
if (!isInList(newListeners, oldListener)) {
|
||||||
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)oldListener).getId());
|
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)oldListener).getId());
|
||||||
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
|
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
|
||||||
oldListener.unregisterListener();
|
oldListener.unregisterListener();
|
||||||
|
@ -360,7 +363,7 @@ public class LanguageSettingsProvidersSerializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ICListenerAgent newListener : newListeners) {
|
for (ICListenerAgent newListener : newListeners) {
|
||||||
if (!isObjectInTheList(oldListeners, newListener)) {
|
if (!isInList(oldListeners, newListener)) {
|
||||||
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)newListener).getId());
|
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)newListener).getId());
|
||||||
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
|
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
|
||||||
newListener.registerListener(null);
|
newListener.registerListener(null);
|
||||||
|
@ -368,7 +371,7 @@ public class LanguageSettingsProvidersSerializer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rawGlobalWorkspaceProviders = rawWorkspaceProviders;
|
rawGlobalWorkspaceProviders = rawNewProviders;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<LanguageSettingsChangeEvent> createLanguageSettingsChangeEvents(List<LanguageSettingsSerializableProvider> serializableProviders) {
|
private static List<LanguageSettingsChangeEvent> createLanguageSettingsChangeEvents(List<LanguageSettingsSerializableProvider> serializableProviders) {
|
||||||
|
@ -410,10 +413,10 @@ projects:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save language settings providers of the workspace (global providers) to persistent storage.
|
* Save language settings providers of the workspace (global providers) to persistent storage.
|
||||||
*
|
|
||||||
* @throws CoreException
|
* @throws CoreException
|
||||||
*/
|
*/
|
||||||
public static void serializeLanguageSettingsWorkspace() throws CoreException {
|
public static void serializeLanguageSettingsWorkspace() throws CoreException {
|
||||||
|
// FIXME - temporary log to remove before CDT 9.0 release
|
||||||
LanguageSettingsLogger.logWarning("LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace()");
|
LanguageSettingsLogger.logWarning("LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace()");
|
||||||
|
|
||||||
URI uriStoreWsp = getStoreInWorkspaceArea(STORAGE_WORKSPACE_LANGUAGE_SETTINGS);
|
URI uriStoreWsp = getStoreInWorkspaceArea(STORAGE_WORKSPACE_LANGUAGE_SETTINGS);
|
||||||
|
@ -438,7 +441,8 @@ projects:
|
||||||
} else {
|
} else {
|
||||||
Document doc = XmlUtil.newDocument();
|
Document doc = XmlUtil.newDocument();
|
||||||
Element rootElement = XmlUtil.appendElement(doc, ELEM_PLUGIN);
|
Element rootElement = XmlUtil.appendElement(doc, ELEM_PLUGIN);
|
||||||
Element elementExtension = XmlUtil.appendElement(rootElement, ELEM_EXTENSION, new String[] {ATTR_POINT, LanguageSettingsExtensionManager.PROVIDER_EXTENSION_FULL_ID});
|
Element elementExtension = XmlUtil.appendElement(rootElement, ELEM_EXTENSION,
|
||||||
|
new String[] {ATTR_EXTENSION_POINT, PROVIDER_EXTENSION_POINT_ID});
|
||||||
|
|
||||||
for (LanguageSettingsSerializableProvider provider : serializableWorkspaceProviders) {
|
for (LanguageSettingsSerializableProvider provider : serializableWorkspaceProviders) {
|
||||||
if (!LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
|
if (!LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
|
||||||
|
@ -480,19 +484,21 @@ projects:
|
||||||
serializingLock.acquire();
|
serializingLock.acquire();
|
||||||
doc = XmlUtil.loadXml(uriStoreWsp);
|
doc = XmlUtil.loadXml(uriStoreWsp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log("Can't load preferences from file "+uriStoreWsp, e); //$NON-NLS-1$
|
CCorePlugin.log("Can't load preferences from file " + uriStoreWsp, e); //$NON-NLS-1$
|
||||||
} finally {
|
} finally {
|
||||||
serializingLock.release();
|
serializingLock.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc != null) {
|
if (doc != null) {
|
||||||
Element rootElement = doc.getDocumentElement();
|
Element rootElement = doc.getDocumentElement();
|
||||||
NodeList providerNodes = rootElement.getElementsByTagName(LanguageSettingsSerializableProvider.ELEM_PROVIDER);
|
NodeList providerNodes = rootElement.getElementsByTagName(ELEM_PROVIDER);
|
||||||
|
|
||||||
|
List<String> userDefinedProvidersIds = new ArrayList<String>(providerNodes.getLength());
|
||||||
|
providers = new ArrayList<ILanguageSettingsProvider>(providerNodes.getLength());
|
||||||
|
|
||||||
List<String> userDefinedProvidersIds = new ArrayList<String>();
|
|
||||||
for (int i = 0; i < providerNodes.getLength(); i++) {
|
for (int i = 0; i < providerNodes.getLength(); i++) {
|
||||||
Node providerNode = providerNodes.item(i);
|
Node providerNode = providerNodes.item(i);
|
||||||
String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
|
String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
|
||||||
if (userDefinedProvidersIds.contains(providerId)) {
|
if (userDefinedProvidersIds.contains(providerId)) {
|
||||||
String msg = "Ignored an attempt to persist duplicate language settings provider, id=" + providerId; //$NON-NLS-1$
|
String msg = "Ignored an attempt to persist duplicate language settings provider, id=" + providerId; //$NON-NLS-1$
|
||||||
CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception()));
|
CCorePlugin.log(new Status(IStatus.WARNING, CCorePlugin.PLUGIN_ID, msg, new Exception()));
|
||||||
|
@ -502,9 +508,6 @@ projects:
|
||||||
|
|
||||||
ILanguageSettingsProvider provider = loadProvider(providerNode);
|
ILanguageSettingsProvider provider = loadProvider(providerNode);
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
if (providers == null) {
|
|
||||||
providers = new ArrayList<ILanguageSettingsProvider>();
|
|
||||||
}
|
|
||||||
providers.add(provider);
|
providers.add(provider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -524,20 +527,20 @@ projects:
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Element elementConfiguration = XmlUtil.appendElement(projectElementPrjStore, ELEM_CONFIGURATION, new String[] {
|
Element elementConfiguration = XmlUtil.appendElement(projectElementPrjStore, ELEM_CONFIGURATION, new String[] {
|
||||||
LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(),
|
ATTR_ID, cfgDescription.getId(),
|
||||||
LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(),
|
ATTR_NAME, cfgDescription.getName(),
|
||||||
});
|
});
|
||||||
Element elementConfigurationWsp = null;
|
Element elementConfigurationWsp = null;
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||||
if (providers.size()>0) {
|
if (providers.size()>0) {
|
||||||
Element elementExtension = XmlUtil.appendElement(elementConfiguration, ELEM_EXTENSION, new String[] {
|
Element elementExtension = XmlUtil.appendElement(elementConfiguration, ELEM_EXTENSION, new String[] {
|
||||||
ATTR_POINT, LanguageSettingsExtensionManager.PROVIDER_EXTENSION_FULL_ID});
|
ATTR_EXTENSION_POINT, PROVIDER_EXTENSION_POINT_ID});
|
||||||
Element elementExtensionWsp = null;
|
Element elementExtensionWsp = null;
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
for (ILanguageSettingsProvider provider : providers) {
|
||||||
if (isWorkspaceProvider(provider)) {
|
if (isWorkspaceProvider(provider)) {
|
||||||
// Element elementProviderReference =
|
// Element elementProviderReference =
|
||||||
XmlUtil.appendElement(elementExtension, ELEM_PROVIDER_REFERENCE, new String[] {
|
XmlUtil.appendElement(elementExtension, ELEM_PROVIDER_REFERENCE, new String[] {
|
||||||
LanguageSettingsExtensionManager.ATTR_ID, provider.getId()});
|
ATTR_ID, provider.getId()});
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (provider instanceof LanguageSettingsSerializableProvider) {
|
if (provider instanceof LanguageSettingsSerializableProvider) {
|
||||||
|
@ -553,23 +556,23 @@ projects:
|
||||||
if (elementExtensionWsp==null) {
|
if (elementExtensionWsp==null) {
|
||||||
if (elementConfigurationWsp==null) {
|
if (elementConfigurationWsp==null) {
|
||||||
elementConfigurationWsp = XmlUtil.appendElement(projectElementWspStore, ELEM_CONFIGURATION, new String[] {
|
elementConfigurationWsp = XmlUtil.appendElement(projectElementWspStore, ELEM_CONFIGURATION, new String[] {
|
||||||
LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(),
|
ATTR_ID, cfgDescription.getId(),
|
||||||
LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(),
|
ATTR_NAME, cfgDescription.getName(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
elementExtensionWsp = XmlUtil.appendElement(elementConfigurationWsp, ELEM_EXTENSION, new String[] {
|
elementExtensionWsp = XmlUtil.appendElement(elementConfigurationWsp, ELEM_EXTENSION, new String[] {
|
||||||
ATTR_POINT, LanguageSettingsExtensionManager.PROVIDER_EXTENSION_FULL_ID});
|
ATTR_EXTENSION_POINT, PROVIDER_EXTENSION_POINT_ID});
|
||||||
}
|
}
|
||||||
Element elementProviderWsp = XmlUtil.appendElement(elementExtensionWsp, ELEM_PROVIDER, new String[] {
|
Element elementProviderWsp = XmlUtil.appendElement(elementExtensionWsp, ELEM_PROVIDER, new String[] {
|
||||||
LanguageSettingsExtensionManager.ATTR_ID, provider.getId()});
|
ATTR_ID, provider.getId()});
|
||||||
lss.serializeEntries(elementProviderWsp);
|
lss.serializeEntries(elementProviderWsp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Element elementProvider =
|
// Element elementProvider =
|
||||||
XmlUtil.appendElement(elementExtension, LanguageSettingsExtensionManager.ELEM_PROVIDER, new String[] {
|
XmlUtil.appendElement(elementExtension, ELEM_PROVIDER, new String[] {
|
||||||
LanguageSettingsExtensionManager.ATTR_ID, provider.getId(),
|
ATTR_ID, provider.getId(),
|
||||||
LanguageSettingsExtensionManager.ATTR_NAME, provider.getName(),
|
ATTR_NAME, provider.getName(),
|
||||||
LanguageSettingsExtensionManager.ATTR_CLASS, provider.getClass().getCanonicalName(),
|
ATTR_CLASS, provider.getClass().getCanonicalName(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -657,9 +660,9 @@ projects:
|
||||||
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
|
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
|
||||||
continue;
|
continue;
|
||||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||||
String cfgId = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_ID);
|
String cfgId = XmlUtil.determineAttributeValue(cfgNode, ATTR_ID);
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
String cfgName = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_NAME);
|
String cfgName = XmlUtil.determineAttributeValue(cfgNode, ATTR_NAME);
|
||||||
|
|
||||||
NodeList extensionAndReferenceNodes = cfgNode.getChildNodes();
|
NodeList extensionAndReferenceNodes = cfgNode.getChildNodes();
|
||||||
for (int ie=0;ie<extensionAndReferenceNodes.getLength();ie++) {
|
for (int ie=0;ie<extensionAndReferenceNodes.getLength();ie++) {
|
||||||
|
@ -677,9 +680,9 @@ projects:
|
||||||
|
|
||||||
ILanguageSettingsProvider provider=null;
|
ILanguageSettingsProvider provider=null;
|
||||||
if (providerNode.getNodeName().equals(ELEM_PROVIDER_REFERENCE)) {
|
if (providerNode.getNodeName().equals(ELEM_PROVIDER_REFERENCE)) {
|
||||||
String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
|
String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
|
||||||
provider = getWorkspaceProvider(providerId);
|
provider = getWorkspaceProvider(providerId);
|
||||||
} else if (providerNode.getNodeName().equals(LanguageSettingsExtensionManager.ELEM_PROVIDER)) {
|
} else if (providerNode.getNodeName().equals(ELEM_PROVIDER)) {
|
||||||
provider = loadProvider(providerNode);
|
provider = loadProvider(providerNode);
|
||||||
if (provider instanceof LanguageSettingsSerializableProvider) {
|
if (provider instanceof LanguageSettingsSerializableProvider) {
|
||||||
LanguageSettingsSerializableProvider lss = (LanguageSettingsSerializableProvider) provider;
|
LanguageSettingsSerializableProvider lss = (LanguageSettingsSerializableProvider) provider;
|
||||||
|
@ -726,7 +729,7 @@ projects:
|
||||||
Node cfgNode = configurationNodes.item(ic);
|
Node cfgNode = configurationNodes.item(ic);
|
||||||
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
|
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
|
||||||
continue;
|
continue;
|
||||||
String cfgIdXml = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_ID);
|
String cfgIdXml = XmlUtil.determineAttributeValue(cfgNode, ATTR_ID);
|
||||||
if (!cfgId.equals(cfgIdXml))
|
if (!cfgId.equals(cfgIdXml))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -743,9 +746,9 @@ projects:
|
||||||
Node providerNode = providerNodes.item(i);
|
Node providerNode = providerNodes.item(i);
|
||||||
if (!(providerNode instanceof Element))
|
if (!(providerNode instanceof Element))
|
||||||
continue;
|
continue;
|
||||||
if (!providerNode.getNodeName().equals(LanguageSettingsExtensionManager.ELEM_PROVIDER))
|
if (!providerNode.getNodeName().equals(ELEM_PROVIDER))
|
||||||
continue;
|
continue;
|
||||||
String providerIdXml = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
|
String providerIdXml = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
|
||||||
if (!provider.getId().equals(providerIdXml))
|
if (!provider.getId().equals(providerIdXml))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -761,7 +764,7 @@ projects:
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ILanguageSettingsProvider loadProvider(Node providerNode) {
|
private static ILanguageSettingsProvider loadProvider(Node providerNode) {
|
||||||
String attrClass = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_CLASS);
|
String attrClass = XmlUtil.determineAttributeValue(providerNode, ATTR_CLASS);
|
||||||
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.instantiateProviderClass(attrClass);
|
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.instantiateProviderClass(attrClass);
|
||||||
|
|
||||||
if (provider instanceof LanguageSettingsSerializableProvider)
|
if (provider instanceof LanguageSettingsSerializableProvider)
|
||||||
|
@ -898,7 +901,7 @@ projects:
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
for (ILanguageSettingsProvider provider : providers) {
|
||||||
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||||
if (isObjectInTheList(prjProviders, provider)) {
|
if (isInList(prjProviders, provider)) {
|
||||||
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Inconsistent state, duplicate LSP in project description "
|
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Inconsistent state, duplicate LSP in project description "
|
||||||
+ "[" + System.identityHashCode(provider) + "] "
|
+ "[" + System.identityHashCode(provider) + "] "
|
||||||
+ provider);
|
+ provider);
|
||||||
|
@ -913,7 +916,10 @@ projects:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> boolean isObjectInTheList(Collection<T> list, T element) {
|
/**
|
||||||
|
* Check that this particular element is in the list.
|
||||||
|
*/
|
||||||
|
private static <T> boolean isInList(Collection<T> list, T element) {
|
||||||
// list.contains(element) won't do it as we are interested in exact object, not in equal object
|
// list.contains(element) won't do it as we are interested in exact object, not in equal object
|
||||||
for (T elem : list) {
|
for (T elem : list) {
|
||||||
if (elem == element)
|
if (elem == element)
|
||||||
|
@ -922,6 +928,9 @@ projects:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that this particular element is in the association list.
|
||||||
|
*/
|
||||||
private static boolean isListenerInTheListOfAssociations(Collection<ListenerAssociation> list, ICListenerAgent element) {
|
private static boolean isListenerInTheListOfAssociations(Collection<ListenerAssociation> list, ICListenerAgent element) {
|
||||||
// list.contains(element) won't do it as we are interested in exact object, not in equal object
|
// list.contains(element) won't do it as we are interested in exact object, not in equal object
|
||||||
for (ListenerAssociation la : list) {
|
for (ListenerAssociation la : list) {
|
||||||
|
@ -944,7 +953,7 @@ projects:
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
for (ILanguageSettingsProvider provider : providers) {
|
||||||
if (provider instanceof ICListenerAgent) {
|
if (provider instanceof ICListenerAgent) {
|
||||||
ICListenerAgent listener = (ICListenerAgent) provider;
|
ICListenerAgent listener = (ICListenerAgent) provider;
|
||||||
if (!isObjectInTheList(listeners, listener)) {
|
if (!isInList(listeners, listener)) {
|
||||||
listeners.add(listener);
|
listeners.add(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -955,6 +964,9 @@ projects:
|
||||||
return listeners;
|
return listeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pick from the list providers which are listeners, i.e. instances of type {@link ICListenerAgent}.
|
||||||
|
*/
|
||||||
private static List<ICListenerAgent> selectListeners(Collection<ILanguageSettingsProvider> values) {
|
private static List<ICListenerAgent> selectListeners(Collection<ILanguageSettingsProvider> values) {
|
||||||
List<ICListenerAgent> listeners = new ArrayList<ICListenerAgent>();
|
List<ICListenerAgent> listeners = new ArrayList<ICListenerAgent>();
|
||||||
for (ILanguageSettingsProvider provider : values) {
|
for (ILanguageSettingsProvider provider : values) {
|
||||||
|
@ -1024,7 +1036,7 @@ projects:
|
||||||
|
|
||||||
for (ListenerAssociation newListenerAssociation : newAssociations) {
|
for (ListenerAssociation newListenerAssociation : newAssociations) {
|
||||||
ICListenerAgent newListener = newListenerAssociation.listener;
|
ICListenerAgent newListener = newListenerAssociation.listener;
|
||||||
if (!isObjectInTheList(oldListeners, newListener)) {
|
if (!isInList(oldListeners, newListener)) {
|
||||||
int count = 1;
|
int count = 1;
|
||||||
if (newListener instanceof LanguageSettingsWorkspaceProvider) {
|
if (newListener instanceof LanguageSettingsWorkspaceProvider) {
|
||||||
count = ((LanguageSettingsWorkspaceProvider) newListener).incrementProjectCount();
|
count = ((LanguageSettingsWorkspaceProvider) newListener).incrementProjectCount();
|
||||||
|
|
|
@ -34,11 +34,11 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
|
||||||
private static final String ELEM_RESOURCE = "resource"; //$NON-NLS-1$
|
private static final String ELEM_RESOURCE = "resource"; //$NON-NLS-1$
|
||||||
private static final String ATTR_PROJECT_PATH = "project-relative-path"; //$NON-NLS-1$
|
private static final String ATTR_PROJECT_PATH = "project-relative-path"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ELEM_ENTRY = "entry"; //$NON-NLS-1$
|
private static final String ELEM_ENTRY = LanguageSettingsExtensionManager.ELEM_ENTRY;
|
||||||
private static final String ATTR_KIND = "kind"; //$NON-NLS-1$
|
private static final String ATTR_ENTRY_KIND = LanguageSettingsExtensionManager.ATTR_ENTRY_KIND;
|
||||||
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
|
private static final String ATTR_ENTRY_NAME = LanguageSettingsExtensionManager.ATTR_ENTRY_NAME;
|
||||||
private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
|
private static final String ATTR_ENTRY_VALUE = LanguageSettingsExtensionManager.ATTR_ENTRY_VALUE;
|
||||||
private static final String ELEM_FLAG = "flag"; //$NON-NLS-1$
|
private static final String ELEM_ENTRY_FLAG = LanguageSettingsExtensionManager.ELEM_ENTRY_FLAG;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serialize the provider entries under parent XML element.
|
* Serialize the provider entries under parent XML element.
|
||||||
|
@ -83,12 +83,12 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
|
||||||
private void serializeSettingEntries(Element parentElement, List<ICLanguageSettingEntry> settingEntries) {
|
private void serializeSettingEntries(Element parentElement, List<ICLanguageSettingEntry> settingEntries) {
|
||||||
for (ICLanguageSettingEntry entry : settingEntries) {
|
for (ICLanguageSettingEntry entry : settingEntries) {
|
||||||
Element elementSettingEntry = XmlUtil.appendElement(parentElement, ELEM_ENTRY, new String[] {
|
Element elementSettingEntry = XmlUtil.appendElement(parentElement, ELEM_ENTRY, new String[] {
|
||||||
ATTR_KIND, LanguageSettingEntriesSerializer.kindToString(entry.getKind()),
|
ATTR_ENTRY_KIND, LanguageSettingEntriesSerializer.kindToString(entry.getKind()),
|
||||||
ATTR_NAME, entry.getName(),
|
ATTR_ENTRY_NAME, entry.getName(),
|
||||||
});
|
});
|
||||||
switch (entry.getKind()) {
|
switch (entry.getKind()) {
|
||||||
case ICSettingEntry.MACRO:
|
case ICSettingEntry.MACRO:
|
||||||
elementSettingEntry.setAttribute(ATTR_VALUE, entry.getValue());
|
elementSettingEntry.setAttribute(ATTR_ENTRY_VALUE, entry.getValue());
|
||||||
break;
|
break;
|
||||||
// case ICLanguageSettingEntry.LIBRARY_FILE:
|
// case ICLanguageSettingEntry.LIBRARY_FILE:
|
||||||
// // YAGNI: sourceAttachment fields may need to be covered
|
// // YAGNI: sourceAttachment fields may need to be covered
|
||||||
|
@ -97,8 +97,8 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
|
||||||
int flags = entry.getFlags();
|
int flags = entry.getFlags();
|
||||||
if (flags != 0) {
|
if (flags != 0) {
|
||||||
// Element elementFlag =
|
// Element elementFlag =
|
||||||
XmlUtil.appendElement(elementSettingEntry, ELEM_FLAG, new String[] {
|
XmlUtil.appendElement(elementSettingEntry, ELEM_ENTRY_FLAG, new String[] {
|
||||||
ATTR_VALUE, LanguageSettingEntriesSerializer.composeFlagsString(entry.getFlags())
|
ATTR_ENTRY_VALUE, LanguageSettingEntriesSerializer.composeFlagsString(entry.getFlags())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,17 +138,17 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
|
||||||
* Load a setting entry from XML element.
|
* Load a setting entry from XML element.
|
||||||
*/
|
*/
|
||||||
private ICLanguageSettingEntry loadSettingEntry(Node parentElement) {
|
private ICLanguageSettingEntry loadSettingEntry(Node parentElement) {
|
||||||
String settingKind = XmlUtil.determineAttributeValue(parentElement, ATTR_KIND);
|
String settingKind = XmlUtil.determineAttributeValue(parentElement, ATTR_ENTRY_KIND);
|
||||||
String settingName = XmlUtil.determineAttributeValue(parentElement, ATTR_NAME);
|
String settingName = XmlUtil.determineAttributeValue(parentElement, ATTR_ENTRY_NAME);
|
||||||
|
|
||||||
NodeList flagNodes = parentElement.getChildNodes();
|
NodeList flagNodes = parentElement.getChildNodes();
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
for (int i=0;i<flagNodes.getLength();i++) {
|
for (int i=0;i<flagNodes.getLength();i++) {
|
||||||
Node flagNode = flagNodes.item(i);
|
Node flagNode = flagNodes.item(i);
|
||||||
if (flagNode.getNodeType() != Node.ELEMENT_NODE || !ELEM_FLAG.equals(flagNode.getNodeName()))
|
if (flagNode.getNodeType() != Node.ELEMENT_NODE || !ELEM_ENTRY_FLAG.equals(flagNode.getNodeName()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String settingFlags = XmlUtil.determineAttributeValue(flagNode, ATTR_VALUE);
|
String settingFlags = XmlUtil.determineAttributeValue(flagNode, ATTR_ENTRY_VALUE);
|
||||||
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(settingFlags);
|
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(settingFlags);
|
||||||
flags |= bitFlag;
|
flags |= bitFlag;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
|
||||||
String settingValue = null;
|
String settingValue = null;
|
||||||
int kind = LanguageSettingEntriesSerializer.stringToKind(settingKind);
|
int kind = LanguageSettingEntriesSerializer.stringToKind(settingKind);
|
||||||
if (kind == ICSettingEntry.MACRO)
|
if (kind == ICSettingEntry.MACRO)
|
||||||
settingValue = XmlUtil.determineAttributeValue(parentElement, ATTR_VALUE);
|
settingValue = XmlUtil.determineAttributeValue(parentElement, ATTR_ENTRY_VALUE);
|
||||||
ICLanguageSettingEntry entry = (ICLanguageSettingEntry) CDataUtil.createEntry(kind, settingName, settingValue, null, flags);
|
ICLanguageSettingEntry entry = (ICLanguageSettingEntry) CDataUtil.createEntry(kind, settingName, settingValue, null, flags);
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue