1
0
Fork 0
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:
Andrew Gvozdev 2011-12-14 14:37:27 -05:00
parent e64c995ff0
commit 8715c43cde
8 changed files with 112 additions and 100 deletions

View file

@ -103,7 +103,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
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 PROVIDER = "provider"; //$NON-NLS-1$
protected static final String ATTR_PROVIDER = "provider"; //$NON-NLS-1$
@Override
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);
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
marker.setAttribute(IMarker.SEVERITY, problemMarkerInfo.severity);
marker.setAttribute(SDMarkerGenerator.PROVIDER, providerId);
marker.setAttribute(SDMarkerGenerator.ATTR_PROVIDER, providerId);
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
marker.setAttribute(IMarker.LOCATION, "SD90 Providers, [" + providerName + "] options in Preferences");
@ -360,7 +360,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
try {
IMarker[] cur = markersResource.findMarkers(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
for (IMarker marker : cur) {
if (getId().equals(marker.getAttribute(SDMarkerGenerator.PROVIDER))) {
if (getId().equals(marker.getAttribute(SDMarkerGenerator.ATTR_PROVIDER))) {
marker.delete();
}
}

View file

@ -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.ICSettingEntry;
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.ResourcesPlugin;
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 IFile FILE_0 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/project/path0"));
// These must match constants used in LanguageSettingsSerializableProvider
private static final String ATTR_ID = "id"; //$NON-NLS-1$
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
// Constants used in LanguageSettingsSerializableProvider
private static final String ATTR_ID = LanguageSettingsProvidersSerializer.ATTR_ID;
private static final String ATTR_NAME = LanguageSettingsProvidersSerializer.ATTR_NAME;
private static final String ATTR_CLASS = LanguageSettingsProvidersSerializer.ATTR_CLASS;
/**
* Constructor.
@ -255,11 +256,11 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("/usr/include/", 0));
// configure it
provider.configureProvider("id", "name", null, entries, null);
provider.configureProvider("test.id", "test.name", null, entries, null);
try {
// 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");
} catch (UnsupportedOperationException e) {
}

View file

@ -810,7 +810,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
public void testCIncludeFileEntryDOM() throws Exception {
Element elementProvider;
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
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
@ -874,7 +874,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
public void testCMacroFileEntryDOM() throws Exception {
Element elementProvider;
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
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
@ -906,7 +906,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
public void testCLibraryPathEntryDOM() throws Exception {
Element elementProvider;
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
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);
@ -938,7 +938,7 @@ public class LanguageSettingsSerializableTests extends BaseTestCase {
public void testCLibraryFileEntryDOM() throws Exception {
Element elementProvider;
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
LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1);

View file

@ -1017,7 +1017,7 @@ public class CProjectDescriptionDeltaTests extends BaseTestCase{
List<ILanguageSettingsProvider> originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
// Modification LANGUAGE_SETTINGS_PROVIDERS
ILanguageSettingsProvider provider = new LanguageSettingsSerializableProvider("id", "name");
ILanguageSettingsProvider provider = new LanguageSettingsSerializableProvider("test.id", "test.name");
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);

View file

@ -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.ICProjectDescription;
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.core.resources.IResource;
import org.w3c.dom.Element;
@ -37,13 +38,11 @@ import org.w3c.dom.NodeList;
* {@link ILanguageSettingsProvider}.
*/
public class LanguageSettingsSerializableProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsBroadcastingProvider {
/** This field is for internal use only */
public static final String ELEM_PROVIDER = "provider"; //$NON-NLS-1$
private static final String ATTR_ID = "id"; //$NON-NLS-1$
private static final String ELEM_LANGUAGE_SCOPE = "language-scope"; //$NON-NLS-1$
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
protected static final String ATTR_ID = LanguageSettingsProvidersSerializer.ATTR_ID;
protected static final String ATTR_NAME = LanguageSettingsProvidersSerializer.ATTR_NAME;
protected static final String ATTR_CLASS = LanguageSettingsProvidersSerializer.ATTR_CLASS;
protected static final String ELEM_PROVIDER = LanguageSettingsProvidersSerializer.ELEM_PROVIDER;
protected static final String ELEM_LANGUAGE_SCOPE = LanguageSettingsProvidersSerializer.ELEM_LANGUAGE_SCOPE;
private LanguageSettingsSerializableStorage fStorage = new LanguageSettingsSerializableStorage();

View file

@ -44,20 +44,20 @@ import org.eclipse.core.runtime.Status;
*/
public class LanguageSettingsExtensionManager {
/** 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 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_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_ENTRY = "entry"; //$NON-NLS-1$
static final String ELEM_FLAG = "flag"; //$NON-NLS-1$
static final String ATTR_KIND = "kind"; //$NON-NLS-1$
static final String ATTR_VALUE = "value"; //$NON-NLS-1$
static final String ATTR_ENTRY_NAME = "name"; //$NON-NLS-1$
static final String ATTR_ENTRY_KIND = "kind"; //$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)
@ -186,13 +186,13 @@ public class LanguageSettingsExtensionManager {
for (IConfigurationElement ceEntry : ce.getChildren(ELEM_ENTRY)) {
try {
int entryKind = LanguageSettingEntriesSerializer.stringToKind(determineAttributeValue(ceEntry, ATTR_KIND));
String entryName = determineAttributeValue(ceEntry, ATTR_NAME);
String entryValue = determineAttributeValue(ceEntry, ATTR_VALUE);
int entryKind = LanguageSettingEntriesSerializer.stringToKind(determineAttributeValue(ceEntry, ATTR_ENTRY_KIND));
String entryName = determineAttributeValue(ceEntry, ATTR_ENTRY_NAME);
String entryValue = determineAttributeValue(ceEntry, ATTR_ENTRY_VALUE);
int flags = 0;
for (IConfigurationElement ceFlags : ceEntry.getChildren(ELEM_FLAG)) {
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(determineAttributeValue(ceFlags, ATTR_VALUE));
for (IConfigurationElement ceFlags : ceEntry.getChildren(ELEM_ENTRY_FLAG)) {
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(determineAttributeValue(ceFlags, ATTR_ENTRY_VALUE));
flags |= bitFlag;
}

View file

@ -64,16 +64,23 @@ import org.w3c.dom.NodeList;
* Helper class handling serialization and notifications for language settings entries {@link ICLanguageSettingEntry}.
*/
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 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 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_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_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 ATTR_STORE_ENTRIES = "store-entries"; //$NON-NLS-1$
@ -290,8 +297,7 @@ public class LanguageSettingsProvidersSerializer {
*/
private static URI getStoreInWorkspaceArea(String store) {
IPath location = CCorePlugin.getDefault().getStateLocation().append(store);
URI uri = URIUtil.toURI(location);
return uri;
return URIUtil.toURI(location);
}
/**
@ -315,43 +321,40 @@ public class LanguageSettingsProvidersSerializer {
* is passed user defined providers are cleared.
*/
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
List<ILanguageSettingsProvider> rawProviders = new ArrayList<ILanguageSettingsProvider>();
// add given providers
if (providers != null) {
for (ILanguageSettingsProvider provider : providers) {
if (isWorkspaceProvider(provider)) {
provider = rawGlobalWorkspaceProviders.get(provider.getId());
}
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
// this list is independent from the internal list of extensions in LanguageSettingsExtensionManager
for (String id : LanguageSettingsExtensionManager.getExtensionProviderIds()) {
if (!rawWorkspaceProviders.containsKey(id)) {
if (!rawNewProviders.containsKey(id)) {
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.getExtensionProviderCopy(id, true);
if (provider == null) {
provider = LanguageSettingsExtensionManager.loadProvider(id);
}
if (provider != null) {
rawWorkspaceProviders.put(provider.getId(), provider);
rawNewProviders.put(provider.getId(), provider);
}
}
}
// register listeners
List<ICListenerAgent> oldListeners = selectListeners(rawGlobalWorkspaceProviders.values());
List<ICListenerAgent> newListeners = selectListeners(rawProviders);
List<ICListenerAgent> newListeners = selectListeners(rawNewProviders.values());
for (ICListenerAgent oldListener : oldListeners) {
if (!isObjectInTheList(newListeners, oldListener)) {
if (!isInList(newListeners, oldListener)) {
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)oldListener).getId());
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
oldListener.unregisterListener();
@ -360,7 +363,7 @@ public class LanguageSettingsProvidersSerializer {
}
for (ICListenerAgent newListener : newListeners) {
if (!isObjectInTheList(oldListeners, newListener)) {
if (!isInList(oldListeners, newListener)) {
LanguageSettingsWorkspaceProvider wspProvider = (LanguageSettingsWorkspaceProvider) globalWorkspaceProviders.get(((ILanguageSettingsProvider)newListener).getId());
if (wspProvider != null && wspProvider.getProjectCount() > 0) {
newListener.registerListener(null);
@ -368,7 +371,7 @@ public class LanguageSettingsProvidersSerializer {
}
}
rawGlobalWorkspaceProviders = rawWorkspaceProviders;
rawGlobalWorkspaceProviders = rawNewProviders;
}
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.
*
* @throws CoreException
*/
public static void serializeLanguageSettingsWorkspace() throws CoreException {
// FIXME - temporary log to remove before CDT 9.0 release
LanguageSettingsLogger.logWarning("LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace()");
URI uriStoreWsp = getStoreInWorkspaceArea(STORAGE_WORKSPACE_LANGUAGE_SETTINGS);
@ -438,7 +441,8 @@ projects:
} else {
Document doc = XmlUtil.newDocument();
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) {
if (!LanguageSettingsManager.isEqualExtensionProvider(provider, true)) {
@ -487,12 +491,14 @@ projects:
if (doc != null) {
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++) {
Node providerNode = providerNodes.item(i);
String providerId = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
if (userDefinedProvidersIds.contains(providerId)) {
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()));
@ -502,9 +508,6 @@ projects:
ILanguageSettingsProvider provider = loadProvider(providerNode);
if (provider != null) {
if (providers == null) {
providers = new ArrayList<ILanguageSettingsProvider>();
}
providers.add(provider);
}
}
@ -524,20 +527,20 @@ projects:
continue;
Element elementConfiguration = XmlUtil.appendElement(projectElementPrjStore, ELEM_CONFIGURATION, new String[] {
LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(),
LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(),
ATTR_ID, cfgDescription.getId(),
ATTR_NAME, cfgDescription.getName(),
});
Element elementConfigurationWsp = null;
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (providers.size()>0) {
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;
for (ILanguageSettingsProvider provider : providers) {
if (isWorkspaceProvider(provider)) {
// Element elementProviderReference =
XmlUtil.appendElement(elementExtension, ELEM_PROVIDER_REFERENCE, new String[] {
LanguageSettingsExtensionManager.ATTR_ID, provider.getId()});
ATTR_ID, provider.getId()});
continue;
}
if (provider instanceof LanguageSettingsSerializableProvider) {
@ -553,23 +556,23 @@ projects:
if (elementExtensionWsp==null) {
if (elementConfigurationWsp==null) {
elementConfigurationWsp = XmlUtil.appendElement(projectElementWspStore, ELEM_CONFIGURATION, new String[] {
LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(),
LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(),
ATTR_ID, cfgDescription.getId(),
ATTR_NAME, cfgDescription.getName(),
});
}
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[] {
LanguageSettingsExtensionManager.ATTR_ID, provider.getId()});
ATTR_ID, provider.getId()});
lss.serializeEntries(elementProviderWsp);
}
} else {
// Element elementProvider =
XmlUtil.appendElement(elementExtension, LanguageSettingsExtensionManager.ELEM_PROVIDER, new String[] {
LanguageSettingsExtensionManager.ATTR_ID, provider.getId(),
LanguageSettingsExtensionManager.ATTR_NAME, provider.getName(),
LanguageSettingsExtensionManager.ATTR_CLASS, provider.getClass().getCanonicalName(),
XmlUtil.appendElement(elementExtension, ELEM_PROVIDER, new String[] {
ATTR_ID, provider.getId(),
ATTR_NAME, provider.getName(),
ATTR_CLASS, provider.getClass().getCanonicalName(),
});
}
}
@ -657,9 +660,9 @@ projects:
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
continue;
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
String cfgId = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_ID);
String cfgId = XmlUtil.determineAttributeValue(cfgNode, ATTR_ID);
@SuppressWarnings("unused")
String cfgName = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_NAME);
String cfgName = XmlUtil.determineAttributeValue(cfgNode, ATTR_NAME);
NodeList extensionAndReferenceNodes = cfgNode.getChildNodes();
for (int ie=0;ie<extensionAndReferenceNodes.getLength();ie++) {
@ -677,9 +680,9 @@ projects:
ILanguageSettingsProvider provider=null;
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);
} else if (providerNode.getNodeName().equals(LanguageSettingsExtensionManager.ELEM_PROVIDER)) {
} else if (providerNode.getNodeName().equals(ELEM_PROVIDER)) {
provider = loadProvider(providerNode);
if (provider instanceof LanguageSettingsSerializableProvider) {
LanguageSettingsSerializableProvider lss = (LanguageSettingsSerializableProvider) provider;
@ -726,7 +729,7 @@ projects:
Node cfgNode = configurationNodes.item(ic);
if (!(cfgNode instanceof Element && cfgNode.getNodeName().equals(ELEM_CONFIGURATION)) )
continue;
String cfgIdXml = XmlUtil.determineAttributeValue(cfgNode, LanguageSettingsExtensionManager.ATTR_ID);
String cfgIdXml = XmlUtil.determineAttributeValue(cfgNode, ATTR_ID);
if (!cfgId.equals(cfgIdXml))
continue;
@ -743,9 +746,9 @@ projects:
Node providerNode = providerNodes.item(i);
if (!(providerNode instanceof Element))
continue;
if (!providerNode.getNodeName().equals(LanguageSettingsExtensionManager.ELEM_PROVIDER))
if (!providerNode.getNodeName().equals(ELEM_PROVIDER))
continue;
String providerIdXml = XmlUtil.determineAttributeValue(providerNode, LanguageSettingsExtensionManager.ATTR_ID);
String providerIdXml = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
if (!provider.getId().equals(providerIdXml))
continue;
@ -761,7 +764,7 @@ projects:
}
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);
if (provider instanceof LanguageSettingsSerializableProvider)
@ -898,7 +901,7 @@ projects:
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider provider : providers) {
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 "
+ "[" + System.identityHashCode(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
for (T elem : list) {
if (elem == element)
@ -922,6 +928,9 @@ projects:
return false;
}
/**
* Check that this particular element is in the association list.
*/
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
for (ListenerAssociation la : list) {
@ -944,7 +953,7 @@ projects:
for (ILanguageSettingsProvider provider : providers) {
if (provider instanceof ICListenerAgent) {
ICListenerAgent listener = (ICListenerAgent) provider;
if (!isObjectInTheList(listeners, listener)) {
if (!isInList(listeners, listener)) {
listeners.add(listener);
}
}
@ -955,6 +964,9 @@ projects:
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) {
List<ICListenerAgent> listeners = new ArrayList<ICListenerAgent>();
for (ILanguageSettingsProvider provider : values) {
@ -1024,7 +1036,7 @@ projects:
for (ListenerAssociation newListenerAssociation : newAssociations) {
ICListenerAgent newListener = newListenerAssociation.listener;
if (!isObjectInTheList(oldListeners, newListener)) {
if (!isInList(oldListeners, newListener)) {
int count = 1;
if (newListener instanceof LanguageSettingsWorkspaceProvider) {
count = ((LanguageSettingsWorkspaceProvider) newListener).incrementProjectCount();

View file

@ -34,11 +34,11 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
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 ELEM_ENTRY = "entry"; //$NON-NLS-1$
private static final String ATTR_KIND = "kind"; //$NON-NLS-1$
private static final String ATTR_NAME = "name"; //$NON-NLS-1$
private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
private static final String ELEM_FLAG = "flag"; //$NON-NLS-1$
private static final String ELEM_ENTRY = LanguageSettingsExtensionManager.ELEM_ENTRY;
private static final String ATTR_ENTRY_KIND = LanguageSettingsExtensionManager.ATTR_ENTRY_KIND;
private static final String ATTR_ENTRY_NAME = LanguageSettingsExtensionManager.ATTR_ENTRY_NAME;
private static final String ATTR_ENTRY_VALUE = LanguageSettingsExtensionManager.ATTR_ENTRY_VALUE;
private static final String ELEM_ENTRY_FLAG = LanguageSettingsExtensionManager.ELEM_ENTRY_FLAG;
/**
* 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) {
for (ICLanguageSettingEntry entry : settingEntries) {
Element elementSettingEntry = XmlUtil.appendElement(parentElement, ELEM_ENTRY, new String[] {
ATTR_KIND, LanguageSettingEntriesSerializer.kindToString(entry.getKind()),
ATTR_NAME, entry.getName(),
ATTR_ENTRY_KIND, LanguageSettingEntriesSerializer.kindToString(entry.getKind()),
ATTR_ENTRY_NAME, entry.getName(),
});
switch (entry.getKind()) {
case ICSettingEntry.MACRO:
elementSettingEntry.setAttribute(ATTR_VALUE, entry.getValue());
elementSettingEntry.setAttribute(ATTR_ENTRY_VALUE, entry.getValue());
break;
// case ICLanguageSettingEntry.LIBRARY_FILE:
// // YAGNI: sourceAttachment fields may need to be covered
@ -97,8 +97,8 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
int flags = entry.getFlags();
if (flags != 0) {
// Element elementFlag =
XmlUtil.appendElement(elementSettingEntry, ELEM_FLAG, new String[] {
ATTR_VALUE, LanguageSettingEntriesSerializer.composeFlagsString(entry.getFlags())
XmlUtil.appendElement(elementSettingEntry, ELEM_ENTRY_FLAG, new String[] {
ATTR_ENTRY_VALUE, LanguageSettingEntriesSerializer.composeFlagsString(entry.getFlags())
});
}
}
@ -138,17 +138,17 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
* Load a setting entry from XML element.
*/
private ICLanguageSettingEntry loadSettingEntry(Node parentElement) {
String settingKind = XmlUtil.determineAttributeValue(parentElement, ATTR_KIND);
String settingName = XmlUtil.determineAttributeValue(parentElement, ATTR_NAME);
String settingKind = XmlUtil.determineAttributeValue(parentElement, ATTR_ENTRY_KIND);
String settingName = XmlUtil.determineAttributeValue(parentElement, ATTR_ENTRY_NAME);
NodeList flagNodes = parentElement.getChildNodes();
int flags = 0;
for (int i=0;i<flagNodes.getLength();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;
String settingFlags = XmlUtil.determineAttributeValue(flagNode, ATTR_VALUE);
String settingFlags = XmlUtil.determineAttributeValue(flagNode, ATTR_ENTRY_VALUE);
int bitFlag = LanguageSettingEntriesSerializer.composeFlags(settingFlags);
flags |= bitFlag;
@ -157,7 +157,7 @@ public class LanguageSettingsSerializableStorage extends LanguageSettingsStorage
String settingValue = null;
int kind = LanguageSettingEntriesSerializer.stringToKind(settingKind);
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);
return entry;
}