diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java index 86328c85459..01fb664cf54 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java @@ -32,12 +32,12 @@ import org.eclipse.core.runtime.SubProgressMonitor; /** * Runs after standard make builder. * Consolidates discovered scanner configuration and updates project's scanner configuration. - * + * * @deprecated as of CDT 4.0. Used by legacy CDT 3.X projects. * Replaced by ScannerConfigBuilder in org.eclipse.cdt.managedbuilder.core. - * + * * @see IncrementalProjectBuilder - * + * * @noextend This class is not intended to be subclassed by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ @@ -67,34 +67,34 @@ public class ScannerConfigBuilder extends ACBuilder { try { // IScannerConfigBuilderInfo buildInfo = MakeCorePlugin.createScannerConfigBuildInfo(getProject(), BUILDER_ID); // autodiscoveryEnabled = buildInfo.isAutoDiscoveryEnabled(); -// +// // if (autodiscoveryEnabled) { // monitor.beginTask("ScannerConfigBuilder.Invoking_Builder", 100); //$NON-NLS-1$ -// monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ +// monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ // getProject().getName()); // ScannerInfoCollector.getInstance().updateScannerConfiguration(getProject(), new SubProgressMonitor(monitor, 100)); // } - + buildInfo2 = ScannerConfigProfileManager.createScannerConfigBuildInfo2(getProject()); autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); if (autodiscoveryEnabled2) { - ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(getProject()); - ICConfigurationDescription cfgDescription = projDesc.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(getProject()); + ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration(); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } if (autodiscoveryEnabled2) { monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ - monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ + monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ getProject().getName()); - + // get scanner info from all external providers SCJobsUtil.getProviderScannerInfo(getProject(), buildInfo2, new SubProgressMonitor(monitor, 70)); // update and persist scanner configuration SCJobsUtil.updateScannerConfiguration(getProject(), buildInfo2, new SubProgressMonitor(monitor, 30)); } - } + } catch (CoreException e) { // builder not installed or disabled // autodiscoveryEnabled = false; @@ -103,12 +103,12 @@ public class ScannerConfigBuilder extends ACBuilder { } return getProject().getReferencedProjects(); } - + protected boolean buildNewStyle(IProject project, IProgressMonitor monitor) throws CoreException{ ICProjectDescription des = CCorePlugin.getDefault().getProjectDescription(project, false); if(!CCorePlugin.getDefault().isNewStyleProject(des)) return false; - + ICConfigurationDescription[] cfgs = des.getConfigurations(); IScannerConfigBuilderInfo2Set container = ScannerConfigProfileManager.createScannerConfigBuildInfo2Set(project); monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.0"), cfgs.length + 1); //$NON-NLS-1$ @@ -126,27 +126,27 @@ public class ScannerConfigBuilder extends ACBuilder { if(build(project, context, info, new SubProgressMonitor(monitor, 1))) wasbuilt = true; } - + if(wasbuilt) CCorePlugin.getDefault().updateProjectDescriptions(new IProject[]{project}, new SubProgressMonitor(monitor, 1)); - + monitor.done(); return true; } - + protected boolean build(IProject project, InfoContext context, IScannerConfigBuilderInfo2 buildInfo2, IProgressMonitor monitor){ boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); if (autodiscoveryEnabled2) { - ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(getProject()); - ICConfigurationDescription cfgDescription = projDesc.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(getProject()); + ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration(); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } if (autodiscoveryEnabled2) { monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ - monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ + monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ getProject().getName()); - + // get scanner info from all external providers SCJobsUtil.getProviderScannerInfo(getProject(), context, buildInfo2, new SubProgressMonitor(monitor, 70)); @@ -156,7 +156,7 @@ public class ScannerConfigBuilder extends ACBuilder { } return false; } - - + + } diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/ScannerInfoConsoleParserFactory.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/ScannerInfoConsoleParserFactory.java index 369a5cd3ef5..1b568a53a8e 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/ScannerInfoConsoleParserFactory.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/ScannerInfoConsoleParserFactory.java @@ -127,7 +127,7 @@ public class ScannerInfoConsoleParserFactory { if (autodiscoveryEnabled2) { ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(currentProject); ICConfigurationDescription cfgDescription = projDesc.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } if (autodiscoveryEnabled2 && scBuildInfo.isBuildOutputParserEnabled()) { // get the make builder console parser diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java index e454eeaa0f7..5651648c1bb 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java @@ -187,7 +187,7 @@ public class DiscoveryOptionsBlock extends AbstractDiscoveryOptionsBlock { if (autodiscoveryEnabled2) { ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(getProject()); ICConfigurationDescription cfgDescription = projDesc.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } scEnabledButton.setSelection(needsSCNature ? false : (autodiscoveryEnabled2 diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java index d58dd7b3563..a205790a02f 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java @@ -42,9 +42,9 @@ import org.eclipse.core.runtime.SubProgressMonitor; /** * Runs after standard make builder. * Consolidates discovered scanner configuration and updates project's scanner configuration. - * + * * @see IncrementalProjectBuilder - * + * * @noextend This class is not intended to be subclassed by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ @@ -56,7 +56,7 @@ public class ScannerConfigBuilder extends ACBuilder { * tells the discovery mechanism to perform core settings update */ public static final int PERFORM_CORE_UPDATE = 1; - + /** * force the discovery, i.e. run the discovery even if it is disabled */ @@ -68,7 +68,7 @@ public class ScannerConfigBuilder extends ACBuilder { public static final int SKIP_SI_DISCOVERY = 1 << 2; public final static String BUILDER_ID = ManagedBuilderCorePlugin.getUniqueIdentifier() + ".ScannerConfigBuilder"; //$NON-NLS-1$ - + public ScannerConfigBuilder() { super(); } @@ -121,22 +121,22 @@ public class ScannerConfigBuilder extends ACBuilder { } } } - + CfgDiscoveredPathManager.getInstance().updateCoreSettings(getProject(), cfgs); } - - + + return getProject().getReferencedProjects(); } - + public static void build(IConfiguration cfg, int flags, IProgressMonitor monitor){ if(cfg != null){ // IScannerConfigBuilderInfo buildInfo = MakeCorePlugin.createScannerConfigBuildInfo(getProject(), BUILDER_ID); // autodiscoveryEnabled = buildInfo.isAutoDiscoveryEnabled(); - // + // // if (autodiscoveryEnabled) { // monitor.beginTask("ScannerConfigBuilder.Invoking_Builder", 100); //$NON-NLS-1$ - // monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ + // monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ // getProject().getName()); // ScannerInfoCollector.getInstance().updateScannerConfiguration(getProject(), new SubProgressMonitor(monitor, 100)); // } @@ -165,7 +165,7 @@ public class ScannerConfigBuilder extends ACBuilder { } } - + private static Properties calcEnvironment(IConfiguration cfg){ Properties envProps = new Properties(); ICConfigurationDescription cfgDes = ManagedBuildManager.getDescriptionForConfiguration(cfg); @@ -174,27 +174,24 @@ public class ScannerConfigBuilder extends ACBuilder { for(int i = 0; i < vars.length; i++){ envProps.setProperty(vars[i].getName(), vars[i].getValue()); } - + return envProps; } - + public static SCProfileInstance build(CfgInfoContext context, IScannerConfigBuilderInfo2 buildInfo2, int flags, Properties env, IProgressMonitor monitor) throws CoreException{ IConfiguration cfg = context.getConfiguration(); IProject project = cfg.getOwner().getProject(); - boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); - if (autodiscoveryEnabled2) { - ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); - } + boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled() && + ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(ManagedBuildManager.getDescriptionForConfiguration(cfg)); if (autodiscoveryEnabled2 || ((flags & FORCE_DISCOVERY) != 0)) { monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ project.getName()); - + if(env == null) env = calcEnvironment(cfg); - + // get scanner info from all external providers SCProfileInstance instance = ScannerConfigProfileManager.getInstance(). getSCProfileInstance(project, context.toInfoContext(), buildInfo2.getSelectedProfileId()); @@ -206,17 +203,17 @@ public class ScannerConfigBuilder extends ACBuilder { // update and persist scanner configuration CfgSCJobsUtil.updateScannerConfiguration(project, context, instance, buildInfo2, new SubProgressMonitor(monitor, 30)); - + // Remove the previous discovered path info to ensure it get's regenerated. // TODO we should really only do this if the information has changed CfgDiscoveredPathManager.getInstance().removeDiscoveredInfo(project, context, false); - + if((flags & PERFORM_CORE_UPDATE) != 0) CfgDiscoveredPathManager.getInstance().updateCoreSettings(project, new IConfiguration[]{cfg}); return instance; } - + return null; } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ExternalBuildRunner.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ExternalBuildRunner.java index 4e61b502624..5d790aaa629 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ExternalBuildRunner.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ExternalBuildRunner.java @@ -426,7 +426,7 @@ public class ExternalBuildRunner extends AbstractBuildRunner { if (autodiscoveryEnabled2) { IConfiguration cfg = context.getConfiguration(); ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } if (autodiscoveryEnabled2 && info.isBuildOutputParserEnabled()) { diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java index 2899672906b..d010f016f48 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java @@ -573,12 +573,9 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem } } + // AG TODO - should it be when empty or when ids==null? if (providers.isEmpty()) { - // Add MBS and User provider for unsuspecting toolchains (backward compatibility) - ILanguageSettingsProvider userProvider = LanguageSettingsManager.getExtensionProviderCopy(ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID, true); - ILanguageSettingsProvider mbsProvider = LanguageSettingsManager.getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID); - providers.add(userProvider); - providers.add(mbsProvider); + providers = ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy(); } return providers; diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java index 88d068ec2b1..d5b8655080a 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java @@ -351,7 +351,7 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf private void setEnablement() { IStatus status = null; ICConfigurationDescription cfgDescription = page.getResDesc().getConfiguration(); - boolean isEnabled = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + boolean isEnabled = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); if (!isEnabled) { status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, "Managed Build language settings provider is not enabled."); } @@ -407,7 +407,7 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf if (autodiscoveryEnabled2) { IConfiguration cfg = iContext.getConfiguration(); ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); + autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); } autoDiscoveryCheckBox.setSelection(autodiscoveryEnabled2 && !selectedProfileId.equals(ScannerConfigProfileManager.NULL_PROFILE_ID)); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java index 832ce2bc40b..34a56e4e29a 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java @@ -25,7 +25,6 @@ import java.util.TreeSet; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; -import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -610,9 +609,9 @@ public class MBSWizardHandler extends CWizardHandler { if (isTryingNewSD) { ConfigurationDataProvider.setDefaultLanguageSettingsProviders(config, cfgDes); } else { - providers = new ArrayList(); - providers.add(LanguageSettingsManager.getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID)); - ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers); + if (cfgDes instanceof ILanguageSettingsProvidersKeeper) { + ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); + } } } else { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java index f94ad593132..b50798be247 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java @@ -11,14 +11,10 @@ package org.eclipse.cdt.managedbuilder.ui.wizards; import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.List; import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; -import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -126,9 +122,9 @@ public class NewMakeProjFromExisting extends Wizard implements IImportWizard, IN if (isTryingNewSD) { ConfigurationDataProvider.setDefaultLanguageSettingsProviders(config, cfgDes); } else { - List providers = new ArrayList(); - providers.add(LanguageSettingsManager.getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID)); - ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers); + if (cfgDes instanceof ILanguageSettingsProvidersKeeper) { + ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); + } } } else { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java index d9d2049db7c..dead8c0e84c 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java @@ -11,12 +11,7 @@ *******************************************************************************/ package org.eclipse.cdt.managedbuilder.ui.wizards; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; -import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -124,9 +119,9 @@ public class STDWizardHandler extends MBSWizardHandler { if (isTryingNewSD) { ConfigurationDataProvider.setDefaultLanguageSettingsProviders(cfg, cfgDes); } else { - List providers = new ArrayList(); - providers.add(LanguageSettingsManager.getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID)); - ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers); + if (cfgDes instanceof ILanguageSettingsProvidersKeeper) { + ((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); + } } } else { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false); diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java index 40423414c94..8d13f5cb7e0 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsListenersTests.java @@ -120,6 +120,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testListenerRegisterer_OneOwnedByCfg() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); { // get project descriptions @@ -169,6 +170,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", }); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); { // get project descriptions @@ -228,6 +230,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testListenerRegisterer_OneGlobal() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); + { // get project descriptions ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); @@ -276,6 +280,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", }); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); { // retrieve global provider @@ -336,6 +341,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { "org.eclipse.cdt.core.tests.configuration.id.1", "org.eclipse.cdt.core.tests.configuration.id.2", }); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); { // retrieve workspace provider @@ -407,6 +413,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testListenerRegisterer_GlobalProviderTwoProjects() throws Exception { // create project 1 IProject project_1 = ResourceHelper.createCDTProjectWithConfig(this.getName() + ".1"); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project_1, true); { // get project descriptions ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project_1, true); @@ -431,6 +438,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // create project 2 IProject project_2 = ResourceHelper.createCDTProjectWithConfig(this.getName() + ".2"); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project_2, true); { // get project descriptions ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project_2, true); @@ -510,6 +518,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { // prepare project List workspaceProvidersOriginal = LanguageSettingsManager.getWorkspaceProviders(); IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); { // get project descriptions ICProjectDescription prjDescriptionWritable = CProjectDescriptionManager.getInstance().getProjectDescription(project, true); @@ -560,6 +569,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_cfgProvider_AddEmptyProvider() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // First clear default providers { // get project descriptions @@ -618,6 +628,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_cfgProvider_AddNonEmptyProvider() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // First clear default providers { // get project descriptions @@ -685,6 +696,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_cfgProvider_SerializeEntries() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // add the mock provider { @@ -754,6 +766,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_cfgProvider_SerializeEntriesConcurrent() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // add the mock provider { @@ -857,6 +870,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_globalProvider_AddEmptyProvider() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // First clear default providers { // get project descriptions @@ -922,6 +936,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_globalProvider_AddNonEmptyProvider() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // First clear default providers { // get project descriptions @@ -997,6 +1012,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase { public void testNotification_globalProvider_SerializeEntries() throws Exception { // create project IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, true); // register mock listener to inspect the notifications LanguageSettingsManager.registerLanguageSettingsChangeListener(mockLseListener); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java index 132f1fd87db..308557b5da3 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.core.language.settings.providers; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -18,6 +19,8 @@ import java.util.Map; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.internal.core.LocalProjectScope; +import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsExtensionManager; +import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.preferences.InstanceScope; import org.osgi.service.prefs.BackingStoreException; @@ -86,10 +89,9 @@ public class ScannerDiscoveryLegacySupport { } /** - * @noreference This is internal helper method to support compatibility with previous versions - * which is not intended to be referenced by clients. + * Check if legacy Scanner Discovery in MBS should be active. */ - public static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) { + private static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { List lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); for (ILanguageSettingsProvider lsp : lsProviders) { @@ -101,6 +103,28 @@ public class ScannerDiscoveryLegacySupport { return false; } + /** + * @noreference This is internal helper method to support compatibility with previous versions + * which is not intended to be referenced by clients. + */ + public static boolean isLegacyScannerDiscoveryOn(ICConfigurationDescription cfgDescription) { + IProject project = cfgDescription != null ? cfgDescription.getProjectDescription().getProject() : null; + return isLanguageSettingsProvidersFunctionalityEnabled(project) || isMbsLanguageSettingsProviderOn(cfgDescription); + } + + /** + * Return list containing MBS and User provider. Used to initialize for unaware tool-chains (backward compatibility). + */ + public static List getDefaultProvidersLegacy() { + List providers = new ArrayList(2); + ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.getExtensionProviderCopy((ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID), false); + if (provider != null) { + providers.add(provider); + } + providers.add(LanguageSettingsProvidersSerializer.getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID)); + return providers; + } + /** * Returns the values of scanner discovery profiles (scannerConfigDiscoveryProfileId) which were deprecated * and replaced with language settings providers in plugin.xml. diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java index 72ad3e0e1f5..25da8e1a369 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java @@ -261,9 +261,15 @@ public class LanguageSettingsProvidersSerializer { CCorePlugin.log(e); } if (specSettings != null) { - LanguageSettingsDelta delta = specSettings.dropDelta(); - if (delta != null) - deltaMap.put(cfgDescription.getId(), delta); + String cfgId = cfgDescription.getId(); + if (ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(prjDescription.getProject())) { + LanguageSettingsDelta delta = specSettings.dropDelta(); + if (delta != null) { + deltaMap.put(cfgId, delta); + } + } else { + deltaMap.remove(cfgId); + } } else { IStatus ss = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Internal error: Missing specSettings for " //$NON-NLS-1$ + cfgDescription.getClass().getSimpleName()); @@ -1059,10 +1065,7 @@ public class LanguageSettingsProvidersSerializer { ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); for (ICConfigurationDescription cfgDescription : cfgDescriptions) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { - List providers = new ArrayList(2); - providers.add(LanguageSettingsExtensionManager.getExtensionProviderCopy((ScannerDiscoveryLegacySupport.USER_LANGUAGE_SETTINGS_PROVIDER_ID), true)); - providers.add(getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER_ID)); - ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); + ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); } } } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java index 39a30ef5e1d..3f0d15fa2ec 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java @@ -34,7 +34,6 @@ 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; @@ -172,7 +171,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto }, null, IWorkspace.AVOID_UPDATE, null); // end Bug 249951 & Bug 310007 serializingLock.acquire(); - LanguageSettingsManager.serializeLanguageSettings(fDes); + LanguageSettingsProvidersSerializer.serializeLanguageSettings(fDes); projectModificaitonStamp = serialize(fDes.getProject(), ICProjectDescriptionStorageType.STORAGE_FILE_NAME, fElement); ((ContributedEnvironment) CCorePlugin.getDefault().getBuildEnvironmentManager().getContributedEnvironment()).serialize(fDes); } finally { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java index 485d0b8ba46..d7ae0b67758 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java @@ -441,6 +441,15 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab { boolean enabled = enableProvidersCheckBox.getSelection(); if (masterPropertyPage!=null) masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); + + if (!enabled) { + ICConfigurationDescription cfgDescription = getConfigurationDescription(); + if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { + ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); + updateData(getResDesc()); + } + } + enableControls(enabled); updateStatusLine(); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java index a7a80b20d3f..684ec734ce8 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java @@ -164,7 +164,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { ICConfigurationDescription cfgDescription = getConfigurationDescription(); String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds(); List providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); - if (Arrays.asList(defaultIds).contains(id) != providers.contains(provider)) { + if (defaultIds != null && Arrays.asList(defaultIds).contains(id) != providers.contains(provider)) { return true; } @@ -339,6 +339,16 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { boolean enabled = enableProvidersCheckBox.getSelection(); if (masterPropertyPage!=null) masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); + + // AG TODO - if not enabled reset providers to MBS provider only + if (!enabled) { + ICConfigurationDescription cfgDescription = getConfigurationDescription(); + if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { + ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy()); + updateData(getResDesc()); + } + + } enableControls(enabled); updateStatusLine(); }