1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Moved ILanguageSettingsChangeListener & ILanguageSettingsChangeEvent to

API package, same for serializeLanguageSettings() &
serializeLanguageSettingsWorkspace()
This commit is contained in:
Andrew Gvozdev 2011-11-27 20:02:02 -05:00
parent f6151d3a72
commit 689c2a5f17
17 changed files with 243 additions and 206 deletions

View file

@ -27,7 +27,6 @@ import org.eclipse.cdt.core.errorparsers.RegexErrorPattern;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.ResourcesPlugin;
@ -140,27 +139,17 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting
Job job = new Job("Serialize CDT language settings entries") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// FIXME - remove thread name reassigning
Thread thread = getThread();
String oldName = thread.getName();
thread.setName("CDT LSP Serializer,BOP");
IStatus status = null;
IStatus status = Status.OK_STATUS;
try {
if (cfgDescription != null) {
LanguageSettingsProvidersSerializer.serializeLanguageSettings(cfgDescription.getProjectDescription());
LanguageSettingsManager.serializeLanguageSettings(cfgDescription.getProjectDescription());
} else {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
}
} catch (CoreException e) {
status = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error serializing language settings", e);
MakeCorePlugin.log(status);
}
if (status == null)
status = Status.OK_STATUS;
thread.setName(oldName);
return status;
}
@Override

View file

@ -28,6 +28,7 @@ import org.eclipse.cdt.core.IMarkerGenerator;
import org.eclipse.cdt.core.ProblemMarkerInfo;
import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.language.settings.providers.ICListenerAgent;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
@ -41,7 +42,6 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsLogger;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.cdt.make.internal.core.MakeMessages;
import org.eclipse.cdt.make.internal.core.StreamMonitor;
@ -375,9 +375,9 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
if (isChanged) { // avoids resource and settings change notifications
try {
if (currentCfgDescription != null) {
LanguageSettingsProvidersSerializer.serializeLanguageSettings(currentCfgDescription.getProjectDescription());
LanguageSettingsManager.serializeLanguageSettings(currentCfgDescription.getProjectDescription());
} else {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
}
} catch (CoreException e) {
IStatus s = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error serializing language settings", e);

View file

@ -23,9 +23,6 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.internal.core.language.settings.providers.ILanguageSettingsChangeEvent;
import org.eclipse.cdt.internal.core.language.settings.providers.ILanguageSettingsChangeListener;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.core.resources.IProject;
/**
@ -83,7 +80,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
@Override
protected void tearDown() throws Exception {
LanguageSettingsProvidersSerializer.unregisterLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.unregisterLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.setWorkspaceProviders(null);
super.tearDown();
}
@ -547,7 +544,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -601,7 +598,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -666,7 +663,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -692,7 +689,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(null, mockLseListener.getLastEvent());
// Serialize settings
LanguageSettingsProvidersSerializer.serializeLanguageSettings(prjDescription);
LanguageSettingsManager.serializeLanguageSettings(prjDescription);
// inspect event
assertEquals(1, mockLseListener.getCount());
ILanguageSettingsChangeEvent event = mockLseListener.getLastEvent();
@ -730,7 +727,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -762,7 +759,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertNull(mockLseListener.getLastEvent());
// Serialize settings
LanguageSettingsProvidersSerializer.serializeLanguageSettings(prjDescription_1);
LanguageSettingsManager.serializeLanguageSettings(prjDescription_1);
// inspect event
assertEquals(1, mockLseListener.getCount());
ILanguageSettingsChangeEvent event = mockLseListener.getLastEvent();
@ -793,7 +790,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertNull(mockLseListener.getLastEvent());
// Serialize settings
LanguageSettingsProvidersSerializer.serializeLanguageSettings(prjDescription_2);
LanguageSettingsManager.serializeLanguageSettings(prjDescription_2);
// inspect event
assertEquals(0, mockLseListener.getCount());
ILanguageSettingsChangeEvent event = mockLseListener.getLastEvent();
@ -825,7 +822,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -886,7 +883,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
}
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
assertEquals(0, mockLseListener.getCount());
assertEquals(null, mockLseListener.getLastEvent());
@ -938,7 +935,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
// register mock listener to inspect the notifications
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(mockLseListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener);
// Add empty global provider
{
@ -988,7 +985,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(null, mockLseListener.getLastEvent());
// Serialize settings
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
// get cfgDescriptionId
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false);
@ -1023,7 +1020,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(null, mockLseListener.getLastEvent());
// Serialize settings
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
// get cfgDescriptionId
ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project, false);

View file

@ -304,7 +304,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(entries.size(), actual.size());
// serialize language settings of workspace providers
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
LanguageSettingsManager.serializeLanguageSettingsWorkspace();
// clear the provider
extProvider.setSettingEntries(null, null, null, null);

View file

@ -14,7 +14,6 @@ import java.util.List;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.internal.core.language.settings.providers.ILanguageSettingsChangeEvent;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.core.resources.IResource;

View file

@ -8,7 +8,7 @@
* Contributors:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.language.settings.providers;
package org.eclipse.cdt.core.language.settings.providers;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;

View file

@ -8,15 +8,15 @@
* Contributors:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.language.settings.providers;
package org.eclipse.cdt.core.language.settings.providers;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
/**
* An interface for listeners to changes in language settings {@link ICLanguageSettingEntry}.
*
* @see LanguageSettingsProvidersSerializer#registerLanguageSettingsChangeListener(ILanguageSettingsChangeListener)
* @see LanguageSettingsProvidersSerializer#unregisterLanguageSettingsChangeListener(ILanguageSettingsChangeListener)
* @see LanguageSettingsManager#registerLanguageSettingsChangeListener(ILanguageSettingsChangeListener)
* @see LanguageSettingsManager#unregisterLanguageSettingsChangeListener(ILanguageSettingsChangeListener)
*/
public interface ILanguageSettingsChangeListener {
/**

View file

@ -22,6 +22,7 @@ import org.eclipse.cdt.core.settings.model.ICFileDescription;
import org.eclipse.cdt.core.settings.model.ICFolderDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSetting;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager;
@ -35,8 +36,6 @@ import org.eclipse.core.runtime.IPath;
/**
* A collection of utility methods to manage language settings providers.
* See {@link ILanguageSettingsProvider}.
*
* @since 6.0
*/
public class LanguageSettingsManager {
/**
@ -257,4 +256,41 @@ public class LanguageSettingsManager {
return languageIds;
}
/**
* Adds a listener that will be notified of changes in language settings.
*
* @param listener the listener to add
*/
public static void registerLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(listener);
}
/**
* Removes a language settings change listener.
*
* @param listener the listener to remove.
*/
public static void unregisterLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
LanguageSettingsProvidersSerializer.unregisterLanguageSettingsChangeListener(listener);
}
/**
* Save language settings providers of a project to persistent storage.
*
* @param prjDescription - project description of the project.
* @throws CoreException if something goes wrong.
*/
public static void serializeLanguageSettings(ICProjectDescription prjDescription) throws CoreException {
LanguageSettingsProvidersSerializer.serializeLanguageSettings(prjDescription);
}
/**
* Save language settings providers of the workspace (global providers) to persistent storage.
*
* @throws CoreException
*/
public static void serializeLanguageSettingsWorkspace() throws CoreException {
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
}
}

View file

@ -51,7 +51,7 @@ public class LanguageSettingsManager_TBD {
try {
return ! LanguageSettingsExtensionManager.equalsExtensionProviderShallow((ILanguageSettingsEditableProvider) provider);
} catch (Exception e) {
CCorePlugin.log("Internal Error: cannot clone provider "+provider.getId(), e);
CCorePlugin.log(e);
}
}
return false;

View file

@ -18,7 +18,6 @@ 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;
@ -156,9 +155,8 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
* Sets language settings entries for the provider.
* Note that the entries are not persisted at that point. Use this method to
* set the entries for all resources and then to persist use
* {@fixme FIXME - update references with API versions}
* {@link LanguageSettingsProvidersSerializer#serializeLanguageSettings(ICProjectDescription)} or
* {@link LanguageSettingsProvidersSerializer#serializeLanguageSettingsWorkspace()}.
* {@link LanguageSettingsManager#serializeLanguageSettings(ICProjectDescription)} or
* {@link LanguageSettingsManager#serializeLanguageSettingsWorkspace()}.
* See for example {@code AbstractBuildCommandParser} and {@code AbstractBuiltinSpecsDetector}
* in build plugins.
*

View file

@ -66,7 +66,7 @@ public class LanguageSettingsLogger {
@Deprecated
public static void logScannerInfoProvider(IResource rc, Object who) {
if (isEnabled()) {
String msg = "rc="+rc+" <-- "+who.getClass().getSimpleName();
String msg = "rc="+rc+" <-- "+who.getClass().getSimpleName(); //$NON-NLS-1$ //$NON-NLS-2$
if (rc instanceof IFile) {
LanguageSettingsLogger.logInfo(msg);
} else if (rc instanceof IProject) {

View file

@ -8,7 +8,6 @@
* Contributors:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.language.settings.providers;
import java.net.URI;
@ -20,6 +19,8 @@ import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.language.settings.providers.ICListenerAgent;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeEvent;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeListener;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
@ -58,8 +59,11 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* Helper class handling serialization and notifications for language settings entries {@link ICLanguageSettingEntry}.
*/
public class LanguageSettingsProvidersSerializer {
private static final String PREFERENCE_WORSPACE_PROVIDERS_SET = "language.settings.providers.set.for.workspace";
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$
@ -372,6 +376,11 @@ projects:
return events;
}
/**
* Save language settings providers of the workspace (global providers) to persistent storage.
*
* @throws CoreException
*/
public static void serializeLanguageSettingsWorkspace() throws CoreException {
LanguageSettingsLogger.logWarning("LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace()");
@ -530,6 +539,12 @@ projects:
}
}
/**
* Save language settings providers of a project to persistent storage.
*
* @param prjDescription - project description of the project.
* @throws CoreException if something goes wrong.
*/
public static void serializeLanguageSettings(ICProjectDescription prjDescription) throws CoreException {
IProject project = prjDescription.getProject();
LanguageSettingsLogger.logWarning("LanguageSettingsProvidersSerializer.serializeLanguageSettings() for " + project);
@ -993,7 +1008,7 @@ projects:
/**
* Adds a listener that will be notified of changes in language settings.
*
* @param listener the ILanguageMappingChangeListener to add
* @param listener the listener to add
*/
public static void registerLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
fLanguageSettingsChangeListeners.add(listener);
@ -1002,7 +1017,7 @@ projects:
/**
* Removes a language settings change listener.
*
* @param listener the ILanguageMappingChangeListener to remove.
* @param listener the listener to remove.
*/
public static void unregisterLanguageSettingsChangeListener(ILanguageSettingsChangeListener listener) {
fLanguageSettingsChangeListeners.remove(listener);

View file

@ -49,7 +49,6 @@ import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSetting
import org.eclipse.cdt.utils.envvar.StorableEnvironment;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.osgi.util.NLS;
/**
* CConfigurationSpecSettings impelements ICSettingsStorage
@ -1014,15 +1013,13 @@ public class CConfigurationSpecSettings implements ICSettingsStorage{
for (ILanguageSettingsProvider provider : providers) {
String id = provider.getId();
if (provider==LanguageSettingsProvidersSerializer.getRawWorkspaceProvider(id)) {
String msg = "Error: Attempt to add to the configuration raw global provider " + id;
throw new IllegalArgumentException(msg);
throw new IllegalArgumentException("Error: Attempt to add to the configuration raw global provider " + id); //$NON-NLS-1$
}
if (!ids.contains(id)) {
fLanguageSettingsProviders.add(provider);
ids.add(id);
} else {
String msg = NLS.bind(SettingsModelMessages.getString("CConfigurationSpecSettings.MustHaveUniqueID"), id); //$NON-NLS-1$
throw new IllegalArgumentException(msg);
throw new IllegalArgumentException("Language Settings Providers must have unique ID. Duplicate ID=" + id); //$NON-NLS-1$
}
}
fIsModified = true;

View file

@ -16,7 +16,6 @@ CConfigurationDescription.1=expected proxy of type ICFileDescription, but was
CConfigurationDescription.2=data was not created
CConfigurationDescription.3=expected proxy of type ICFolderDescription, but was
CConfigurationDescriptionCache.0=description is read only
CConfigurationSpecSettings.MustHaveUniqueID=Language Settings Providers must have unique ID. Duplicate ID={0}
CConfigurationStatus.1=configurations settings invalid
CProjectConverterDesciptor.0=illegal provider implementation
CProjectConverterDesciptor.1=no provider defined

View file

@ -34,6 +34,7 @@ import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
import org.eclipse.cdt.core.settings.model.ICSettingsStorage;
@ -173,7 +174,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
serializingLock.acquire();
projectModificaitonStamp = serialize(fDes.getProject(), ICProjectDescriptionStorageType.STORAGE_FILE_NAME, fElement);
((ContributedEnvironment) CCorePlugin.getDefault().getBuildEnvironmentManager().getContributedEnvironment()).serialize(fDes);
LanguageSettingsProvidersSerializer.serializeLanguageSettings(fDes);
LanguageSettingsManager.serializeLanguageSettings(fDes);
} finally {
serializingLock.release();
Job.getJobManager().removeJobChangeListener(notifyJobCanceller);

View file

@ -11,10 +11,10 @@
package org.eclipse.cdt.internal.core.pdom;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeEvent;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeListener;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.internal.core.language.settings.providers.ILanguageSettingsChangeEvent;
import org.eclipse.cdt.internal.core.language.settings.providers.ILanguageSettingsChangeListener;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
@ -25,10 +25,16 @@ import org.eclipse.core.resources.ResourcesPlugin;
public class LanguageSettingsChangeListener implements ILanguageSettingsChangeListener {
private PDOMManager fManager;
/**
* Constructor.
*
* @param manager - PDOM manager.
*/
public LanguageSettingsChangeListener(PDOMManager manager) {
fManager = manager;
}
@Override
public void handleEvent(ILanguageSettingsChangeEvent event) {
IWorkspaceRoot wspRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject project = wspRoot.getProject(event.getProjectName());

View file

@ -48,6 +48,7 @@ import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.index.IIndexerStateListener;
import org.eclipse.cdt.core.index.IndexLocationFactory;
import org.eclipse.cdt.core.index.IndexerSetupParticipant;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICContainer;
@ -68,7 +69,6 @@ import org.eclipse.cdt.internal.core.index.IndexChangeEvent;
import org.eclipse.cdt.internal.core.index.IndexFactory;
import org.eclipse.cdt.internal.core.index.IndexerStateEvent;
import org.eclipse.cdt.internal.core.index.provider.IndexProviderManager;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.internal.core.pdom.PDOM.IListener;
import org.eclipse.cdt.internal.core.pdom.db.ChunkCache;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
@ -240,7 +240,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
ResourcesPlugin.getWorkspace().addResourceChangeListener(fCModelListener, IResourceChangeEvent.POST_BUILD);
model.addElementChangedListener(fCModelListener);
LanguageManager.getInstance().registerLanguageChangeListener(fLanguageChangeListener);
LanguageSettingsProvidersSerializer.registerLanguageSettingsChangeListener(fLanguageSettingsChangeListener);
LanguageSettingsManager.registerLanguageSettingsChangeListener(fLanguageSettingsChangeListener);
final int types= CProjectDescriptionEvent.DATA_APPLIED;
CCorePlugin.getDefault().getProjectDescriptionManager().addCProjectDescriptionListener(fProjectDescriptionListener, types);
@ -261,7 +261,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
final CoreModel model = CoreModel.getDefault();
model.removeElementChangedListener(fCModelListener);
ResourcesPlugin.getWorkspace().removeResourceChangeListener(fCModelListener);
LanguageSettingsProvidersSerializer.unregisterLanguageSettingsChangeListener(fLanguageSettingsChangeListener);
LanguageSettingsManager.unregisterLanguageSettingsChangeListener(fLanguageSettingsChangeListener);
LanguageManager.getInstance().unregisterLanguageChangeListener(fLanguageChangeListener);
PDOMIndexerJob jobToCancel= null;
synchronized (fTaskQueue) {