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 {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>();
|
||||
if (providers!=null) {
|
||||
// add given providers
|
||||
if (providers != null) {
|
||||
for (ILanguageSettingsProvider provider : providers) {
|
||||
if (isWorkspaceProvider(provider)) {
|
||||
provider = rawGlobalWorkspaceProviders.get(provider.getId());
|
||||
}
|
||||
if (provider!=null) {
|
||||
rawProviders.add(provider);
|
||||
if (provider != null) {
|
||||
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)) {
|
||||
|
@ -480,19 +484,21 @@ projects:
|
|||
serializingLock.acquire();
|
||||
doc = XmlUtil.loadXml(uriStoreWsp);
|
||||
} 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 {
|
||||
serializingLock.release();
|
||||
}
|
||||
|
||||
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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue