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

ILanguageSettingsProvidersKeeper

This commit is contained in:
Andrew Gvozdev 2011-12-05 11:31:38 -05:00
parent 349a2aa036
commit b04a172c1a
23 changed files with 1034 additions and 716 deletions

View file

@ -32,15 +32,14 @@ import org.eclipse.cdt.core.IMarkerGenerator;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable; import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager; import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.ICModelMarker; import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.core.resources.RefreshScopeManager; import org.eclipse.cdt.core.resources.RefreshScopeManager;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer; import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2;
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector; import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser; import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
@ -126,7 +125,7 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
if(pathFromURI == null) { if(pathFromURI == null) {
throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, ManagedMakeMessages.getString("ManagedMakeBuilder.message.error"), null)); //$NON-NLS-1$ throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, ManagedMakeMessages.getString("ManagedMakeBuilder.message.error"), null)); //$NON-NLS-1$
} }
IPath workingDirectory = new Path(pathFromURI); IPath workingDirectory = new Path(pathFromURI);
// Set the environment // Set the environment
@ -211,10 +210,10 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
// Do not allow the cancel of the refresh, since the builder is external // Do not allow the cancel of the refresh, since the builder is external
// to Eclipse, files may have been created/modified and we will be out-of-sync. // to Eclipse, files may have been created/modified and we will be out-of-sync.
// The caveat is for huge projects, it may take sometimes at every build. // The caveat is for huge projects, it may take sometimes at every build.
// TODO should only refresh output folders // TODO should only refresh output folders
//project.refreshLocal(IResource.DEPTH_INFINITE, null); //project.refreshLocal(IResource.DEPTH_INFINITE, null);
// use the refresh scope manager to refresh // use the refresh scope manager to refresh
RefreshScopeManager refreshManager = RefreshScopeManager.getInstance(); RefreshScopeManager refreshManager = RefreshScopeManager.getInstance();
IWorkspaceRunnable runnable = refreshManager.getRefreshRunnable(project); IWorkspaceRunnable runnable = refreshManager.getRefreshRunnable(project);
@ -247,7 +246,7 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
consoleErr.write(buf.toString().getBytes()); consoleErr.write(buf.toString().getBytes());
consoleErr.flush(); consoleErr.flush();
} }
buf = new StringBuffer(NEWLINE); buf = new StringBuffer(NEWLINE);
buf.append(ManagedMakeMessages.getResourceString("ManagedMakeBuilder.message.build.finished")).append(NEWLINE); //$NON-NLS-1$ buf.append(ManagedMakeMessages.getResourceString("ManagedMakeBuilder.message.build.finished")).append(NEWLINE); //$NON-NLS-1$
consoleOut.write(buf.toString().getBytes()); consoleOut.write(buf.toString().getBytes());
@ -324,15 +323,15 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
envMap.put(var.getName(), var.getValue()); envMap.put(var.getName(), var.getValue());
} }
} }
// Add variables from build info // Add variables from build info
Map<String, String> builderEnv = builder.getExpandedEnvironment(); Map<String, String> builderEnv = builder.getExpandedEnvironment();
if (builderEnv != null) if (builderEnv != null)
envMap.putAll(builderEnv); envMap.putAll(builderEnv);
return envMap; return envMap;
} }
protected static String[] getEnvStrings(Map<String, String> env) { protected static String[] getEnvStrings(Map<String, String> env) {
// Convert into env strings // Convert into env strings
List<String> strings= new ArrayList<String>(env.size()); List<String> strings= new ArrayList<String>(env.size());
@ -341,10 +340,10 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
buffer.append('=').append(entry.getValue()); buffer.append('=').append(entry.getValue());
strings.add(buffer.toString()); strings.add(buffer.toString());
} }
return strings.toArray(new String[strings.size()]); return strings.toArray(new String[strings.size()]);
} }
private ConsoleOutputSniffer createBuildOutputSniffer(OutputStream outputStream, private ConsoleOutputSniffer createBuildOutputSniffer(OutputStream outputStream,
OutputStream errorStream, OutputStream errorStream,
IProject project, IProject project,
@ -386,17 +385,19 @@ public class ExternalBuildRunner extends AbstractBuildRunner {
} }
ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg);
List<ILanguageSettingsProvider> lsProviders = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider lsProvider : lsProviders) { List<ILanguageSettingsProvider> lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(lsProvider); for (ILanguageSettingsProvider lsProvider : lsProviders) {
if (rawProvider instanceof ICConsoleParser) { ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(lsProvider);
ICConsoleParser consoleParser = (ICConsoleParser) rawProvider; if (rawProvider instanceof ICConsoleParser) {
try { ICConsoleParser consoleParser = (ICConsoleParser) rawProvider;
consoleParser.startup(cfgDescription); try {
clParserList.add(consoleParser); consoleParser.startup(cfgDescription);
} catch (CoreException e) { clParserList.add(consoleParser);
// TODO Auto-generated catch block } catch (CoreException e) {
e.printStackTrace(); ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Language Settings Provider failed to start up", e)); //$NON-NLS-1$
}
} }
} }
} }

View file

@ -18,16 +18,14 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ConsoleOutputStream; import org.eclipse.cdt.core.ConsoleOutputStream;
import org.eclipse.cdt.core.ErrorParserManager; import org.eclipse.cdt.core.ErrorParserManager;
import org.eclipse.cdt.core.IMarkerGenerator; import org.eclipse.cdt.core.IMarkerGenerator;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.model.ICModelMarker; import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; 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.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.make.core.scannerconfig.AbstractBuildCommandParser; import org.eclipse.cdt.make.core.scannerconfig.AbstractBuildCommandParser;
import org.eclipse.cdt.managedbuilder.buildmodel.BuildDescriptionManager; import org.eclipse.cdt.managedbuilder.buildmodel.BuildDescriptionManager;
import org.eclipse.cdt.managedbuilder.buildmodel.IBuildDescription; import org.eclipse.cdt.managedbuilder.buildmodel.IBuildDescription;
@ -52,7 +50,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
/** /**
* The build runner for the internal builder. * The build runner for the internal builder.
* *
* @author dschaefer * @author dschaefer
* @since 8.0 * @since 8.0
*/ */
@ -160,16 +158,18 @@ public class InternalBuildRunner extends AbstractBuildRunner {
if (kind!=IncrementalProjectBuilder.CLEAN_BUILD) { if (kind!=IncrementalProjectBuilder.CLEAN_BUILD) {
// TODO - AG - sanity check? elaborate // TODO - AG - sanity check? elaborate
ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(configuration); ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(configuration);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider provider : providers) { List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (provider instanceof AbstractBuildCommandParser) { for (ILanguageSettingsProvider provider : providers) {
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$ if (provider instanceof AbstractBuildCommandParser) {
String msg = ManagedMakeMessages.getFormattedString("BOP Language Settings Provider [{0}] is not supported by Internal Builder.", provider.getName()); buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
buf.append("**** "+msg+" ****"); String msg = ManagedMakeMessages.getFormattedString("BOP Language Settings Provider [{0}] is not supported by Internal Builder.", provider.getName());
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$ buf.append("**** "+msg+" ****");
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
ManagedBuilderCorePlugin.error(msg); ManagedBuilderCorePlugin.error(msg);
}
} }
} }
} }

View file

@ -23,8 +23,8 @@ import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.TreeSet; import java.util.TreeSet;
import org.eclipse.cdt.build.internal.core.scannerconfig2.CfgScannerConfigProfileManager;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
@ -77,10 +77,10 @@ import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
/** /**
* This object is created per each Project type * This object is created per each Project type
* *
* It is responsible for: * It is responsible for:
* - corresponding line in left pane of 1st wizard page * - corresponding line in left pane of 1st wizard page
* - whole view of right pane, including * - whole view of right pane, including
* *
* @noextend This class is not intended to be subclassed by clients. * @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
@ -88,16 +88,16 @@ import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
public class MBSWizardHandler extends CWizardHandler { public class MBSWizardHandler extends CWizardHandler {
public static final String ARTIFACT = "org.eclipse.cdt.build.core.buildArtefactType"; //$NON-NLS-1$ public static final String ARTIFACT = "org.eclipse.cdt.build.core.buildArtefactType"; //$NON-NLS-1$
public static final String EMPTY_STR = ""; //$NON-NLS-1$ public static final String EMPTY_STR = ""; //$NON-NLS-1$
private static final String PROPERTY = "org.eclipse.cdt.build.core.buildType"; //$NON-NLS-1$ private static final String PROPERTY = "org.eclipse.cdt.build.core.buildType"; //$NON-NLS-1$
private static final String PROP_VAL = PROPERTY + ".debug"; //$NON-NLS-1$ private static final String PROP_VAL = PROPERTY + ".debug"; //$NON-NLS-1$
private static final String tooltip = private static final String tooltip =
Messages.CWizardHandler_1 + Messages.CWizardHandler_1 +
Messages.CWizardHandler_2 + Messages.CWizardHandler_2 +
Messages.CWizardHandler_3 + Messages.CWizardHandler_3 +
Messages.CWizardHandler_4 + Messages.CWizardHandler_4 +
Messages.CWizardHandler_5; Messages.CWizardHandler_5;
protected SortedMap<String, IToolChain> full_tcs = new TreeMap<String, IToolChain>(); protected SortedMap<String, IToolChain> full_tcs = new TreeMap<String, IToolChain>();
private String propertyId = null; private String propertyId = null;
private IProjectType pt = null; private IProjectType pt = null;
@ -110,12 +110,12 @@ public class MBSWizardHandler extends CWizardHandler {
private EntryInfo entryInfo; private EntryInfo entryInfo;
protected CfgHolder[] cfgs = null; protected CfgHolder[] cfgs = null;
protected IWizardPage[] customPages; protected IWizardPage[] customPages;
/** /**
* Current list of preferred toolchains * Current list of preferred toolchains
*/ */
private List<String> preferredTCs = new ArrayList<String>(); private List<String> preferredTCs = new ArrayList<String>();
protected static final class EntryInfo { protected static final class EntryInfo {
private SortedMap<String, IToolChain> tcs; private SortedMap<String, IToolChain> tcs;
private EntryDescriptor entryDescriptor; private EntryDescriptor entryDescriptor;
@ -128,12 +128,12 @@ public class MBSWizardHandler extends CWizardHandler {
private IWizardPage predatingPage; private IWizardPage predatingPage;
private IWizardPage followingPage; private IWizardPage followingPage;
private IWizard wizard; private IWizard wizard;
public EntryInfo(EntryDescriptor dr, SortedMap<String, IToolChain> _tcs){ public EntryInfo(EntryDescriptor dr, SortedMap<String, IToolChain> _tcs){
entryDescriptor = dr; entryDescriptor = dr;
tcs = _tcs; tcs = _tcs;
} }
/** /**
* @since 5.1 * @since 5.1
*/ */
@ -141,7 +141,7 @@ public class MBSWizardHandler extends CWizardHandler {
this(dr, _tcs); this(dr, _tcs);
wizard = w; wizard = w;
} }
public boolean isValid(){ public boolean isValid(){
initialize(); initialize();
return isValid; return isValid;
@ -151,7 +151,7 @@ public class MBSWizardHandler extends CWizardHandler {
initialize(); initialize();
return template; return template;
} }
public EntryDescriptor getDescriptor(){ public EntryDescriptor getDescriptor(){
return entryDescriptor; return entryDescriptor;
} }
@ -159,19 +159,19 @@ public class MBSWizardHandler extends CWizardHandler {
private void initialize(){ private void initialize(){
if(initialized) if(initialized)
return; return;
do { do {
if(entryDescriptor == null) if(entryDescriptor == null)
break; break;
String path[] = entryDescriptor.getPathArray(); String path[] = entryDescriptor.getPathArray();
if(path == null || path.length == 0) if(path == null || path.length == 0)
break; break;
projectTypeId = path[0]; projectTypeId = path[0];
if(!entryDescriptor.isDefaultForCategory() && if(!entryDescriptor.isDefaultForCategory() &&
path.length > 1 && (!path[0].equals(ManagedBuildWizard.OTHERS_LABEL))){ path.length > 1 && (!path[0].equals(ManagedBuildWizard.OTHERS_LABEL))){
templateId = path[path.length - 1]; templateId = path[path.length - 1];
Template templates[] = null; Template templates[] = null;
if(wizard instanceof ICDTCommonProjectWizard) { if(wizard instanceof ICDTCommonProjectWizard) {
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)wizard; ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)wizard;
String[] langIDs = wz.getLanguageIDs(); String[] langIDs = wz.getLanguageIDs();
@ -180,38 +180,38 @@ public class MBSWizardHandler extends CWizardHandler {
for (String id : langIDs) { for (String id : langIDs) {
lstTemplates.addAll(Arrays.asList(TemplateEngineUI.getDefault(). lstTemplates.addAll(Arrays.asList(TemplateEngineUI.getDefault().
getTemplates(projectTypeId, null, id))); getTemplates(projectTypeId, null, id)));
} }
templates = lstTemplates.toArray(new Template[lstTemplates.size()]); templates = lstTemplates.toArray(new Template[lstTemplates.size()]);
} }
} }
if(null == templates) { if(null == templates) {
templates = TemplateEngineUI.getDefault().getTemplates(projectTypeId); templates = TemplateEngineUI.getDefault().getTemplates(projectTypeId);
} }
if((null == templates) || (templates.length == 0)) if((null == templates) || (templates.length == 0))
break; break;
for (Template t : templates) { for (Template t : templates) {
if(t.getTemplateId().equals(templateId)){ if(t.getTemplateId().equals(templateId)){
template = t; template = t;
break; break;
} }
} }
if(template == null) if(template == null)
break; break;
} }
isValid = true; isValid = true;
} while(false); } while(false);
initialized = true; initialized = true;
} }
public Template getInitializedTemplate(IWizardPage predatingPage, IWizardPage followingPage, Map<String, String> map){ public Template getInitializedTemplate(IWizardPage predatingPage, IWizardPage followingPage, Map<String, String> map){
getNextPage(predatingPage, followingPage); getNextPage(predatingPage, followingPage);
Template template = getTemplate(); Template template = getTemplate();
if(template != null){ if(template != null){
Map<String, String> valueStore = template.getValueStore(); Map<String, String> valueStore = template.getValueStore();
// valueStore.clear(); // valueStore.clear();
@ -227,11 +227,11 @@ public class MBSWizardHandler extends CWizardHandler {
} }
return template; return template;
} }
public IWizardPage getNextPage(IWizardPage predatingPage, IWizardPage followingPage) { public IWizardPage getNextPage(IWizardPage predatingPage, IWizardPage followingPage) {
initialize(); initialize();
if(this.templatePages == null if(this.templatePages == null
|| this.predatingPage != predatingPage || this.predatingPage != predatingPage
|| this.followingPage != followingPage){ || this.followingPage != followingPage){
this.predatingPage = predatingPage; this.predatingPage = predatingPage;
this.followingPage = followingPage; this.followingPage = followingPage;
@ -242,12 +242,12 @@ public class MBSWizardHandler extends CWizardHandler {
followingPage.setPreviousPage(predatingPage); followingPage.setPreviousPage(predatingPage);
} }
} }
if(templatePages.length != 0) if(templatePages.length != 0)
return templatePages[0]; return templatePages[0];
return followingPage; return followingPage;
} }
private boolean canFinish(IWizardPage predatingPage, IWizardPage followingPage){ private boolean canFinish(IWizardPage predatingPage, IWizardPage followingPage){
getNextPage(predatingPage, followingPage); getNextPage(predatingPage, followingPage);
for(int i = 0; i < templatePages.length; i++){ for(int i = 0; i < templatePages.length; i++){
@ -256,47 +256,47 @@ public class MBSWizardHandler extends CWizardHandler {
} }
return true; return true;
} }
/** /**
* Filters toolchains * Filters toolchains
* *
* @return - set of compatible toolchain's IDs * @return - set of compatible toolchain's IDs
*/ */
protected Set<String> tc_filter() { protected Set<String> tc_filter() {
Set<String> full = tcs.keySet(); Set<String> full = tcs.keySet();
if (entryDescriptor == null) if (entryDescriptor == null)
return full; return full;
Set<String> out = new LinkedHashSet<String>(full.size()); Set<String> out = new LinkedHashSet<String>(full.size());
for (String s : full) for (String s : full)
if (isToolChainAcceptable(s)) if (isToolChainAcceptable(s))
out.add(s); out.add(s);
return out; return out;
} }
/** /**
* Checks whether given toolchain can be displayed * Checks whether given toolchain can be displayed
* *
* @param tcId - toolchain _NAME_ to check * @param tcId - toolchain _NAME_ to check
* @return - true if toolchain can be displayed * @return - true if toolchain can be displayed
*/ */
public boolean isToolChainAcceptable(String tcId) { public boolean isToolChainAcceptable(String tcId) {
if (template == null || template.getTemplateInfo() == null) if (template == null || template.getTemplateInfo() == null)
return true; return true;
String[] toolChainIds = template.getTemplateInfo().getToolChainIds(); String[] toolChainIds = template.getTemplateInfo().getToolChainIds();
if (toolChainIds == null || toolChainIds.length == 0) if (toolChainIds == null || toolChainIds.length == 0)
return true; return true;
Object ob = tcs.get(tcId); Object ob = tcs.get(tcId);
if (ob == null) if (ob == null)
return true; // sic ! This can occur with Other Toolchain only return true; // sic ! This can occur with Other Toolchain only
if (!(ob instanceof IToolChain)) if (!(ob instanceof IToolChain))
return false; return false;
String id1 = ((IToolChain)ob).getId(); String id1 = ((IToolChain)ob).getId();
IToolChain sup = ((IToolChain)ob).getSuperClass(); IToolChain sup = ((IToolChain)ob).getSuperClass();
String id2 = sup == null ? null : sup.getId(); String id2 = sup == null ? null : sup.getId();
for (String id : toolChainIds) { for (String id : toolChainIds) {
if ((id != null && id.equals(id1)) || if ((id != null && id.equals(id1)) ||
(id != null && id.equals(id2))) (id != null && id.equals(id2)))
@ -309,20 +309,20 @@ public class MBSWizardHandler extends CWizardHandler {
return tc_filter().size(); return tc_filter().size();
} }
} }
public MBSWizardHandler(IProjectType _pt, Composite p, IWizard w) { public MBSWizardHandler(IProjectType _pt, Composite p, IWizard w) {
super(p, Messages.CWizardHandler_0, _pt.getName()); super(p, Messages.CWizardHandler_0, _pt.getName());
pt = _pt; pt = _pt;
setWizard(w); setWizard(w);
} }
public MBSWizardHandler(String name, Composite p, IWizard w) { public MBSWizardHandler(String name, Composite p, IWizard w) {
super(p, Messages.CWizardHandler_0, name); super(p, Messages.CWizardHandler_0, name);
setWizard(w); setWizard(w);
} }
public MBSWizardHandler(IBuildPropertyValue val, Composite p, IWizard w) { public MBSWizardHandler(IBuildPropertyValue val, Composite p, IWizard w) {
super(p, Messages.CWizardHandler_0, val.getName()); super(p, Messages.CWizardHandler_0, val.getName());
propertyId = val.getId(); propertyId = val.getId();
setWizard(w); setWizard(w);
} }
@ -334,16 +334,16 @@ public class MBSWizardHandler extends CWizardHandler {
startingPage = w.getStartingPage(); startingPage = w.getStartingPage();
} }
} }
protected IWizardPage getStartingPage(){ protected IWizardPage getStartingPage(){
return startingPage; return startingPage;
} }
public Map<String, String> getMainPageData() { public Map<String, String> getMainPageData() {
WizardNewProjectCreationPage page = (WizardNewProjectCreationPage)getStartingPage(); WizardNewProjectCreationPage page = (WizardNewProjectCreationPage)getStartingPage();
Map<String, String> data = new HashMap<String, String>(); Map<String, String> data = new HashMap<String, String>();
String projName = page.getProjectName(); String projName = page.getProjectName();
projName = projName != null ? projName.trim() : EMPTY_STR; projName = projName != null ? projName.trim() : EMPTY_STR;
data.put("projectName", projName); //$NON-NLS-1$ data.put("projectName", projName); //$NON-NLS-1$
data.put("baseName", getBaseName(projName)); //$NON-NLS-1$ data.put("baseName", getBaseName(projName)); //$NON-NLS-1$
data.put("baseNameUpper", getBaseName(projName).toUpperCase() ); //$NON-NLS-1$ data.put("baseNameUpper", getBaseName(projName).toUpperCase() ); //$NON-NLS-1$
@ -354,7 +354,7 @@ public class MBSWizardHandler extends CWizardHandler {
data.put("location", location); //getProjectLocation().toPortableString()); //$NON-NLS-1$ data.put("location", location); //getProjectLocation().toPortableString()); //$NON-NLS-1$
return data; return data;
} }
private String getBaseName(String name) { private String getBaseName(String name) {
String baseName = name; String baseName = name;
int dot = baseName.lastIndexOf('.'); int dot = baseName.lastIndexOf('.');
@ -367,11 +367,11 @@ public class MBSWizardHandler extends CWizardHandler {
} }
return baseName; return baseName;
} }
@Override @Override
public void handleSelection() { public void handleSelection() {
List<String> preferred = CDTPrefUtil.getPreferredTCs(); List<String> preferred = CDTPrefUtil.getPreferredTCs();
if (table == null) { if (table == null) {
table = new Table(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); table = new Table(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
table.getAccessible().addAccessibleListener( table.getAccessible().addAccessibleListener(
@ -404,7 +404,7 @@ public class MBSWizardHandler extends CWizardHandler {
counter++; counter++;
} }
if (counter > 0) table.select(position); if (counter > 0) table.select(position);
} }
table.addSelectionListener(new SelectionAdapter() { table.addSelectionListener(new SelectionAdapter() {
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
@ -425,11 +425,11 @@ public class MBSWizardHandler extends CWizardHandler {
if (listener != null) if (listener != null)
listener.toolChainListChanged(table.getSelectionCount()); listener.toolChainListChanged(table.getSelectionCount());
} }
private void loadCustomPages() { private void loadCustomPages() {
if (! (getWizard() instanceof ICDTCommonProjectWizard)) if (! (getWizard() instanceof ICDTCommonProjectWizard))
return; // not probable return; // not probable
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)getWizard(); ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)getWizard();
MBSCustomPageManager.init(); MBSCustomPageManager.init();
MBSCustomPageManager.addStockPage(getStartingPage(), CDTMainWizardPage.PAGE_ID); MBSCustomPageManager.addStockPage(getStartingPage(), CDTMainWizardPage.PAGE_ID);
@ -442,9 +442,9 @@ public class MBSWizardHandler extends CWizardHandler {
customPages = MBSCustomPageManager.getCustomPages(); customPages = MBSCustomPageManager.getCustomPages();
if (customPages == null) if (customPages == null)
customPages = new IWizardPage[0]; customPages = new IWizardPage[0];
for (IWizardPage customPage : customPages) for (IWizardPage customPage : customPages)
customPage.setWizard(wz); customPage.setWizard(wz);
setCustomPagesFilter(wz); setCustomPagesFilter(wz);
@ -467,13 +467,13 @@ public class MBSWizardHandler extends CWizardHandler {
boolean ptIsNull = (getProjectType() == null); boolean ptIsNull = (getProjectType() == null);
if (!ptIsNull) if (!ptIsNull)
MBSCustomPageManager.addPageProperty( MBSCustomPageManager.addPageProperty(
MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PAGE_ID,
MBSCustomPageManager.PROJECT_TYPE, MBSCustomPageManager.PROJECT_TYPE,
getProjectType().getId() getProjectType().getId()
); );
IToolChain[] tcs = getSelectedToolChains(); IToolChain[] tcs = getSelectedToolChains();
ArrayList<IToolChain> x = new ArrayList<IToolChain>(); ArrayList<IToolChain> x = new ArrayList<IToolChain>();
TreeSet<String> y = new TreeSet<String>(); TreeSet<String> y = new TreeSet<String>();
if (tcs!=null) { if (tcs!=null) {
int n = tcs.length; int n = tcs.length;
@ -481,7 +481,7 @@ public class MBSWizardHandler extends CWizardHandler {
if (tcs[i] == null) // --- NO TOOLCHAIN --- if (tcs[i] == null) // --- NO TOOLCHAIN ---
continue; // has no custom pages. continue; // has no custom pages.
x.add(tcs[i]); x.add(tcs[i]);
IConfiguration cfg = tcs[i].getParent(); IConfiguration cfg = tcs[i].getParent();
if (cfg == null) if (cfg == null)
continue; continue;
@ -491,24 +491,24 @@ public class MBSWizardHandler extends CWizardHandler {
} }
} }
MBSCustomPageManager.addPageProperty( MBSCustomPageManager.addPageProperty(
MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PAGE_ID,
MBSCustomPageManager.TOOLCHAIN, MBSCustomPageManager.TOOLCHAIN,
x); x);
if (ptIsNull) { if (ptIsNull) {
if (y.size() > 0) if (y.size() > 0)
MBSCustomPageManager.addPageProperty( MBSCustomPageManager.addPageProperty(
MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PAGE_ID,
MBSCustomPageManager.PROJECT_TYPE, MBSCustomPageManager.PROJECT_TYPE,
y); y);
else else
MBSCustomPageManager.addPageProperty( MBSCustomPageManager.addPageProperty(
MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PAGE_ID,
MBSCustomPageManager.PROJECT_TYPE, MBSCustomPageManager.PROJECT_TYPE,
null); null);
} }
} }
@Override @Override
public void handleUnSelection() { public void handleUnSelection() {
if (table != null) { if (table != null) {
@ -521,16 +521,16 @@ public class MBSWizardHandler extends CWizardHandler {
if (tc.isAbstract() || tc.isSystemObject()) return; if (tc.isAbstract() || tc.isSystemObject()) return;
IConfiguration[] cfgs = null; IConfiguration[] cfgs = null;
// New style managed project type. Configurations are referenced via propertyId. // New style managed project type. Configurations are referenced via propertyId.
if (propertyId != null) { if (propertyId != null) {
cfgs = ManagedBuildManager.getExtensionConfigurations(tc, ARTIFACT, propertyId); cfgs = ManagedBuildManager.getExtensionConfigurations(tc, ARTIFACT, propertyId);
// Old style managewd project type. Configs are obtained via projectType // Old style managewd project type. Configs are obtained via projectType
} else if (pt != null) { } else if (pt != null) {
cfgs = ManagedBuildManager.getExtensionConfigurations(tc, pt); cfgs = ManagedBuildManager.getExtensionConfigurations(tc, pt);
} }
if (cfgs == null || cfgs.length == 0) return; if (cfgs == null || cfgs.length == 0) return;
full_tcs.put(tc.getUniqueRealName(), tc); full_tcs.put(tc.getUniqueRealName(), tc);
} }
@Override @Override
public void createProject(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException { public void createProject(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException {
try { try {
@ -548,7 +548,7 @@ public class MBSWizardHandler extends CWizardHandler {
public void convertProject(IProject proj, IProgressMonitor monitor) throws CoreException { public void convertProject(IProject proj, IProgressMonitor monitor) throws CoreException {
setProjectDescription(proj, true, true, monitor); setProjectDescription(proj, true, true, monitor);
} }
private void setProjectDescription(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException { private void setProjectDescription(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException {
boolean isTryingNewSD = false; boolean isTryingNewSD = false;
IWizardPage page = getStartingPage(); IWizardPage page = getStartingPage();
@ -562,13 +562,13 @@ public class MBSWizardHandler extends CWizardHandler {
ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project); ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
monitor.worked(10); monitor.worked(10);
cfgs = getCfgItems(false); cfgs = getCfgItems(false);
if (cfgs == null || cfgs.length == 0) if (cfgs == null || cfgs.length == 0)
cfgs = CDTConfigWizardPage.getDefaultCfgs(this); cfgs = CDTConfigWizardPage.getDefaultCfgs(this);
if (cfgs == null || cfgs.length == 0 || cfgs[0].getConfiguration() == null) { if (cfgs == null || cfgs.length == 0 || cfgs[0].getConfiguration() == null) {
throw new CoreException(new Status(IStatus.ERROR, throw new CoreException(new Status(IStatus.ERROR,
ManagedBuilderUIPlugin.getUniqueIdentifier(), ManagedBuilderUIPlugin.getUniqueIdentifier(),
Messages.CWizardHandler_6)); Messages.CWizardHandler_6));
} }
Configuration cf = (Configuration)cfgs[0].getConfiguration(); Configuration cf = (Configuration)cfgs[0].getConfiguration();
ManagedProject mProj = new ManagedProject(project, cf.getProjectType()); ManagedProject mProj = new ManagedProject(project, cf.getProjectType());
@ -576,12 +576,12 @@ public class MBSWizardHandler extends CWizardHandler {
monitor.worked(10); monitor.worked(10);
cfgs = CfgHolder.unique(cfgs); cfgs = CfgHolder.unique(cfgs);
cfgs = CfgHolder.reorder(cfgs); cfgs = CfgHolder.reorder(cfgs);
ICConfigurationDescription cfgDebug = null; ICConfigurationDescription cfgDebug = null;
ICConfigurationDescription cfgFirst = null; ICConfigurationDescription cfgFirst = null;
int work = 50/cfgs.length; int work = 50/cfgs.length;
for (CfgHolder cfg : cfgs) { for (CfgHolder cfg : cfgs) {
cf = (Configuration)cfg.getConfiguration(); cf = (Configuration)cfg.getConfiguration();
String id = ManagedBuildManager.calculateChildId(cf.getId(), null); String id = ManagedBuildManager.calculateChildId(cf.getId(), null);
@ -593,44 +593,48 @@ public class MBSWizardHandler extends CWizardHandler {
IBuilder bld = config.getEditableBuilder(); IBuilder bld = config.getEditableBuilder();
if (bld != null) { bld.setManagedBuildOn(true); } if (bld != null) { bld.setManagedBuildOn(true); }
config.setName(cfg.getName()); config.setName(cfg.getName());
config.setArtifactName(mProj.getDefaultArtifactName()); config.setArtifactName(mProj.getDefaultArtifactName());
IBuildProperty b = config.getBuildProperties().getProperty(PROPERTY); IBuildProperty b = config.getBuildProperties().getProperty(PROPERTY);
if (cfgDebug == null && b != null && b.getValue() != null && PROP_VAL.equals(b.getValue().getId())) if (cfgDebug == null && b != null && b.getValue() != null && PROP_VAL.equals(b.getValue().getId()))
cfgDebug = cfgDes; cfgDebug = cfgDes;
if (cfgFirst == null) // select at least first configuration if (cfgFirst == null) // select at least first configuration
cfgFirst = cfgDes; cfgFirst = cfgDes;
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD); if (cfgDes instanceof ILanguageSettingsProvidersKeeper) {
if (isTryingNewSD) { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD);
List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(config); if (isTryingNewSD) {
cfgDes.setLanguageSettingProviders(providers); List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(config);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
} else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
}
} else { } else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER); ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
cfgDes.setLanguageSettingProviders(providers);
} }
monitor.worked(work); monitor.worked(work);
} }
mngr.setProjectDescription(project, des); mngr.setProjectDescription(project, des);
} }
@Override @Override
protected void doTemplatesPostProcess(IProject prj) { protected void doTemplatesPostProcess(IProject prj) {
if(entryInfo == null) if(entryInfo == null)
return; return;
Template template = entryInfo.getInitializedTemplate(getStartingPage(), getConfigPage(), getMainPageData()); Template template = entryInfo.getInitializedTemplate(getStartingPage(), getConfigPage(), getMainPageData());
if(template == null) if(template == null)
return; return;
List<IConfiguration> configs = new ArrayList<IConfiguration>(); List<IConfiguration> configs = new ArrayList<IConfiguration>();
for (CfgHolder cfg : cfgs) { for (CfgHolder cfg : cfgs) {
configs.add((IConfiguration)cfg.getConfiguration()); configs.add(cfg.getConfiguration());
} }
template.getTemplateInfo().setConfigurations(configs); template.getTemplateInfo().setConfigurations(configs);
@ -639,19 +643,19 @@ public class MBSWizardHandler extends CWizardHandler {
TemplateEngineUIUtil.showError(statuses[0].getMessage(), statuses[0].getException()); TemplateEngineUIUtil.showError(statuses[0].getMessage(), statuses[0].getException());
} }
} }
protected CDTConfigWizardPage getConfigPage() { protected CDTConfigWizardPage getConfigPage() {
if (fConfigPage == null) { if (fConfigPage == null) {
fConfigPage = new CDTConfigWizardPage(this); fConfigPage = new CDTConfigWizardPage(this);
} }
return fConfigPage; return fConfigPage;
} }
@Override @Override
public IWizardPage getSpecificPage() { public IWizardPage getSpecificPage() {
return entryInfo.getNextPage(getStartingPage(), getConfigPage()); return entryInfo.getNextPage(getStartingPage(), getConfigPage());
} }
/** /**
* Mark preferred toolchains with specific images * Mark preferred toolchains with specific images
*/ */
@ -670,11 +674,11 @@ public class MBSWizardHandler extends CWizardHandler {
} }
} }
} }
public List<String> getPreferredTCNames() { public List<String> getPreferredTCNames() {
return preferredTCs; return preferredTCs;
} }
@Override @Override
public String getHeader() { return head; } public String getHeader() { return head; }
public boolean isDummy() { return false; } public boolean isDummy() { return false; }
@ -682,11 +686,11 @@ public class MBSWizardHandler extends CWizardHandler {
public boolean supportsPreferred() { return true; } public boolean supportsPreferred() { return true; }
@Override @Override
public boolean isChanged() { public boolean isChanged() {
if (savedToolChains == null) if (savedToolChains == null)
return true; return true;
IToolChain[] tcs = getSelectedToolChains(); IToolChain[] tcs = getSelectedToolChains();
if (savedToolChains.length != tcs.length) if (savedToolChains.length != tcs.length)
return true; return true;
for (IToolChain savedToolChain : savedToolChains) { for (IToolChain savedToolChain : savedToolChains) {
boolean found = false; boolean found = false;
@ -701,12 +705,12 @@ public class MBSWizardHandler extends CWizardHandler {
} }
return false; return false;
} }
@Override @Override
public void saveState() { public void saveState() {
savedToolChains = getSelectedToolChains(); savedToolChains = getSelectedToolChains();
} }
// Methods specific for MBSWizardHandler // Methods specific for MBSWizardHandler
public IToolChain[] getSelectedToolChains() { public IToolChain[] getSelectedToolChains() {
@ -722,7 +726,7 @@ public class MBSWizardHandler extends CWizardHandler {
public int getToolChainsCount() { public int getToolChainsCount() {
if (entryInfo == null) if (entryInfo == null)
return full_tcs.size(); return full_tcs.size();
else else
return entryInfo.tc_filter().size(); return entryInfo.tc_filter().size();
} }
public String getPropertyId() { public String getPropertyId() {
@ -739,13 +743,13 @@ public class MBSWizardHandler extends CWizardHandler {
return fConfigPage.getCfgItems(defaults); return fConfigPage.getCfgItems(defaults);
} }
@Override @Override
public String getErrorMessage() { public String getErrorMessage() {
TableItem[] tis = table.getSelection(); TableItem[] tis = table.getSelection();
if (tis == null || tis.length == 0) if (tis == null || tis.length == 0)
return Messages.MBSWizardHandler_0; return Messages.MBSWizardHandler_0;
return null; return null;
} }
@Override @Override
protected void doCustom(IProject newProject) { protected void doCustom(IProject newProject) {
IRunnableWithProgress[] operations = MBSCustomPageManager.getOperations(); IRunnableWithProgress[] operations = MBSCustomPageManager.getOperations();
@ -759,7 +763,7 @@ public class MBSWizardHandler extends CWizardHandler {
ManagedBuilderUIPlugin.log(e); ManagedBuilderUIPlugin.log(e);
} }
} }
@Override @Override
public void postProcess(IProject newProject, boolean created) { public void postProcess(IProject newProject, boolean created) {
deleteExtraConfigs(newProject); deleteExtraConfigs(newProject);
@ -770,17 +774,17 @@ public class MBSWizardHandler extends CWizardHandler {
doCustom(newProject); doCustom(newProject);
} }
} }
/** /**
* Deletes configurations * Deletes configurations
* *
* @param newProject - affected project * @param newProject - affected project
*/ */
private void deleteExtraConfigs(IProject newProject) { private void deleteExtraConfigs(IProject newProject) {
if (isChanged()) return; // no need to delete if (isChanged()) return; // no need to delete
if (listener != null && listener.isCurrent()) return; // nothing to delete if (listener != null && listener.isCurrent()) return; // nothing to delete
if (fConfigPage == null || !fConfigPage.pagesLoaded) return; if (fConfigPage == null || !fConfigPage.pagesLoaded) return;
ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(newProject, true); ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(newProject, true);
if (prjd == null) return; if (prjd == null) return;
ICConfigurationDescription[] all = prjd.getConfigurations(); ICConfigurationDescription[] all = prjd.getConfigurations();
@ -804,19 +808,19 @@ public class MBSWizardHandler extends CWizardHandler {
CoreModel.getDefault().setProjectDescription(newProject, prjd); CoreModel.getDefault().setProjectDescription(newProject, prjd);
} catch (CoreException e) {} } catch (CoreException e) {}
} }
@Override @Override
public boolean isApplicable(EntryDescriptor data) { public boolean isApplicable(EntryDescriptor data) {
EntryInfo info = new EntryInfo(data, full_tcs, wizard); EntryInfo info = new EntryInfo(data, full_tcs, wizard);
return info.isValid() && (info.getToolChainsCount() > 0); return info.isValid() && (info.getToolChainsCount() > 0);
} }
@Override @Override
public void initialize(EntryDescriptor data) throws CoreException { public void initialize(EntryDescriptor data) throws CoreException {
EntryInfo info = new EntryInfo(data, full_tcs, wizard); EntryInfo info = new EntryInfo(data, full_tcs, wizard);
if(!info.isValid()) if(!info.isValid())
throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(), "inappropriate descriptor")); //$NON-NLS-1$ throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(), "inappropriate descriptor")); //$NON-NLS-1$
entryInfo = info; entryInfo = info;
} }
@ -842,20 +846,20 @@ public class MBSWizardHandler extends CWizardHandler {
public boolean canFinish() { public boolean canFinish() {
if(entryInfo == null) if(entryInfo == null)
return false; return false;
if (!getConfigPage().isCustomPageComplete()) if (!getConfigPage().isCustomPageComplete())
return false; return false;
if(!entryInfo.canFinish(startingPage, getConfigPage())) if(!entryInfo.canFinish(startingPage, getConfigPage()))
return false; return false;
if (customPages != null) if (customPages != null)
for (int i=0; i<customPages.length; i++) for (int i=0; i<customPages.length; i++)
if (!customPages[i].isPageComplete()) if (!customPages[i].isPageComplete())
return false; return false;
return super.canFinish(); return super.canFinish();
} }
} }

View file

@ -17,6 +17,7 @@ import java.util.List;
import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CCProjectNature;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
@ -119,15 +120,19 @@ public class NewMakeProjFromExisting extends Wizard implements IImportWizard, IN
CConfigurationData data = config.getConfigurationData(); CConfigurationData data = config.getConfigurationData();
ICConfigurationDescription cfgDes = projDesc.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); ICConfigurationDescription cfgDes = projDesc.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data);
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD); if (cfgDes instanceof ILanguageSettingsProvidersKeeper) {
if (isTryingNewSD) { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD);
List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(config); if (isTryingNewSD) {
cfgDes.setLanguageSettingProviders(providers); List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(config);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
} else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
}
} else { } else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER); ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
cfgDes.setLanguageSettingProviders(providers);
} }
monitor.worked(1); monitor.worked(1);

View file

@ -15,6 +15,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
@ -46,13 +47,13 @@ import org.eclipse.swt.widgets.Composite;
public class STDWizardHandler extends MBSWizardHandler { public class STDWizardHandler extends MBSWizardHandler {
public STDWizardHandler(Composite p, IWizard w) { public STDWizardHandler(Composite p, IWizard w) {
super(Messages.StdBuildWizard_0, p, w); super(Messages.StdBuildWizard_0, p, w);
} }
@Override @Override
public void addTc(IToolChain tc) { public void addTc(IToolChain tc) {
if (tc == null) { if (tc == null) {
full_tcs.put(Messages.StdProjectTypeHandler_0, null); full_tcs.put(Messages.StdProjectTypeHandler_0, null);
} else { } else {
if (tc.isAbstract() || tc.isSystemObject()) return; if (tc.isAbstract() || tc.isSystemObject()) return;
// unlike CWizardHandler, we don't check for configs // unlike CWizardHandler, we don't check for configs
@ -67,9 +68,9 @@ public class STDWizardHandler extends MBSWizardHandler {
public void createProject(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException { public void createProject(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor) throws CoreException {
try { try {
monitor.beginTask("", 100);//$NON-NLS-1$ monitor.beginTask("", 100);//$NON-NLS-1$
setProjectDescription(project, defaults, onFinish, monitor); setProjectDescription(project, defaults, onFinish, monitor);
doTemplatesPostProcess(project); doTemplatesPostProcess(project);
doCustom(project); doCustom(project);
monitor.worked(30); monitor.worked(30);
@ -112,40 +113,44 @@ public class STDWizardHandler extends MBSWizardHandler {
} }
bld.setManagedBuildOn(false); bld.setManagedBuildOn(false);
} else { } else {
System.out.println(Messages.StdProjectTypeHandler_3); System.out.println(Messages.StdProjectTypeHandler_3);
} }
cfg.setArtifactName(mProj.getDefaultArtifactName()); cfg.setArtifactName(mProj.getDefaultArtifactName());
CConfigurationData data = cfg.getConfigurationData(); CConfigurationData data = cfg.getConfigurationData();
ICConfigurationDescription cfgDes = des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); ICConfigurationDescription cfgDes = des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data);
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD); if (cfgDes instanceof ILanguageSettingsProvidersKeeper) {
if (isTryingNewSD) { ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, isTryingNewSD);
List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(cfg); if (isTryingNewSD) {
cfgDes.setLanguageSettingProviders(providers); List<ILanguageSettingsProvider> providers = ManagedBuildManager.getLanguageSettingsProviders(cfg);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
} else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDes).setLanguageSettingProviders(providers);
}
} else { } else {
ILanguageSettingsProvider provider = LanguageSettingsManager.getWorkspaceProvider(ManagedBuildManager.MBS_LANGUAGE_SETTINGS_PROVIDER); ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, false);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider);
cfgDes.setLanguageSettingProviders(providers);
} }
monitor.worked(work); monitor.worked(work);
} }
mngr.setProjectDescription(project, des); mngr.setProjectDescription(project, des);
} }
public boolean canCreateWithoutToolchain() { return true; } public boolean canCreateWithoutToolchain() { return true; }
@Override @Override
public void convertProject(IProject proj, IProgressMonitor monitor) throws CoreException { public void convertProject(IProject proj, IProgressMonitor monitor) throws CoreException {
setProjectDescription(proj, true, true, monitor); setProjectDescription(proj, true, true, monitor);
} }
/** /**
* If no toolchains selected by user, use default toolchain * If no toolchains selected by user, use default toolchain
*/ */
@Override @Override
public IToolChain[] getSelectedToolChains() { public IToolChain[] getSelectedToolChains() {
if (full_tcs.size() == 0 || table.getSelection().length == 0) if (full_tcs.size() == 0 || table.getSelection().length == 0)
return new IToolChain[] { null }; return new IToolChain[] { null };
else else
return super.getSelectedToolChains(); return super.getSelectedToolChains();

View file

@ -124,13 +124,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider // create a provider
ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1); ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -170,14 +171,16 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(2, cfgDescriptions.length); assertEquals(2, cfgDescriptions.length);
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
{ {
// create a provider 1 // create a provider 1
ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1); ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription1.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription1).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription1.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
{ {
@ -185,8 +188,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1); ILanguageSettingsProvider mockProvider = new MockListenerRegisterer(PROVIDER_1, PROVIDER_NAME_1);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription2.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription2).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription2.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription2).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
@ -222,13 +225,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// add global provider // add global provider
ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -270,21 +274,23 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(2, cfgDescriptions.length); assertEquals(2, cfgDescriptions.length);
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
{ {
// add global provider to configuration 1 // add global provider to configuration 1
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription1.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription1).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription1.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
{ {
// add global provider to configuration 2 // add global provider to configuration 2
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription2.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription2).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription2.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription2).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
// write to project description // write to project description
@ -325,21 +331,23 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(2, cfgDescriptions.length); assertEquals(2, cfgDescriptions.length);
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
{ {
// add global provider to configuration 1 // add global provider to configuration 1
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription1.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription1).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription1.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
{ {
// add global provider to configuration 2 // add global provider to configuration 2
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription2.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription2).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription2.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription2).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
} }
// write to project description // write to project description
@ -356,12 +364,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(2, cfgDescriptions.length); assertEquals(2, cfgDescriptions.length);
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
{ {
// remove global provider from configuration 1 // remove global provider from configuration 1
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription1.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription1).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription1.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertEquals(0, storedProviders.size()); assertEquals(0, storedProviders.size());
} }
// write to project description // write to project description
@ -387,13 +397,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// add global provider // add global provider
ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -410,13 +421,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// add global provider // add global provider
ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID); ILanguageSettingsProvider workspaceProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_REGISTERER_PROVIDER_ID);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -484,12 +496,13 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// add global provider // add global provider
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -532,11 +545,12 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// clear providers // clear providers
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, storedProviders.size()); assertEquals(0, storedProviders.size());
// write to project description // write to project description
@ -556,13 +570,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider and add to cfgDescription // create a provider and add to cfgDescription
ILanguageSettingsProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1); ILanguageSettingsProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -586,11 +601,12 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// clear providers // clear providers
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, storedProviders.size()); assertEquals(0, storedProviders.size());
// write to project description // write to project description
@ -611,6 +627,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
String cfgDescriptionId = cfgDescription.getId(); String cfgDescriptionId = cfgDescription.getId();
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider and add entries // create a provider and add entries
MockLanguageSettingsEditableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1); MockLanguageSettingsEditableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1);
@ -619,8 +636,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
mockProvider.setSettingEntries(cfgDescription, project, null, entries); mockProvider.setSettingEntries(cfgDescription, project, null, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -650,12 +667,13 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider and add to cfgDescription // create a provider and add to cfgDescription
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1)); providers.add(new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1));
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -675,12 +693,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
String cfgDescriptionId = cfgDescription.getId(); String cfgDescriptionId = cfgDescription.getId();
// Add entries // Add entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(SAMPLE_LSE); entries.add(SAMPLE_LSE);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider); assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider);
MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0); MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0);
@ -714,12 +734,13 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider and add to cfgDescription // create a provider and add to cfgDescription
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1)); providers.add(new MockLanguageSettingsEditableProvider(PROVIDER_1, PROVIDER_NAME_1));
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -742,12 +763,14 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = prjDescription_1.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription_1.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0];
assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper);
String cfgDescriptionId = cfgDescriptionWritable.getId(); String cfgDescriptionId = cfgDescriptionWritable.getId();
// Add entries // Add entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(SAMPLE_LSE); entries.add(SAMPLE_LSE);
List<ILanguageSettingsProvider> providers = cfgDescriptionWritable.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider); assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider);
MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0); MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0);
@ -773,12 +796,13 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = prjDescription_2.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription_2.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0]; ICConfigurationDescription cfgDescriptionWritable = cfgDescriptions[0];
assertTrue(cfgDescriptionWritable instanceof ILanguageSettingsProvidersKeeper);
String cfgDescriptionId = cfgDescriptionWritable.getId(); String cfgDescriptionId = cfgDescriptionWritable.getId();
// Add same entries // Add same entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(SAMPLE_LSE); entries.add(SAMPLE_LSE);
List<ILanguageSettingsProvider> providers = cfgDescriptionWritable.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescriptionWritable).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider); assertTrue(providers.get(0) instanceof MockLanguageSettingsEditableProvider);
MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0); MockLanguageSettingsEditableProvider mockProvider = (MockLanguageSettingsEditableProvider) providers.get(0);
@ -810,11 +834,12 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// clear providers // clear providers
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, storedProviders.size()); assertEquals(0, storedProviders.size());
// write to project description // write to project description
@ -834,6 +859,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// retrieve a global provider // retrieve a global provider
ILanguageSettingsProvider wspProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider wspProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
@ -846,8 +872,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
// add the provider to cfgDescription // add the provider to cfgDescription
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(wspProvider); providers.add(wspProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -871,11 +897,12 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// clear providers // clear providers
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, storedProviders.size()); assertEquals(0, storedProviders.size());
// write to project description // write to project description
@ -895,6 +922,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
String cfgDescriptionId = cfgDescription.getId(); String cfgDescriptionId = cfgDescription.getId();
// retrieve a global provider // retrieve a global provider
@ -911,8 +940,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
// add the provider to cfgDescription // add the provider to cfgDescription
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(wspProvider); providers.add(wspProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -945,6 +974,7 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// retrieve a global provider // retrieve a global provider
ILanguageSettingsProvider wspProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID); ILanguageSettingsProvider wspProvider = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_EDITABLE_PROVIDER_ID);
@ -957,8 +987,8 @@ public class LanguageSettingsListenersTests extends BaseTestCase {
// add the provider to cfgDescription // add the provider to cfgDescription
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(wspProvider); providers.add(wspProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description

View file

@ -58,7 +58,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
private static final String PROVIDER_NAME_1 = "test.provider.1.name"; private static final String PROVIDER_NAME_1 = "test.provider.1.name";
private static final String PROVIDER_NAME_2 = "test.provider.2.name"; private static final String PROVIDER_NAME_2 = "test.provider.2.name";
class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription { class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription implements ILanguageSettingsProvidersKeeper {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
public MockConfigurationDescription(String id) { public MockConfigurationDescription(String id) {
super(id); super(id);
@ -130,7 +130,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test ICConfigurationDescription API (getters and setters). * Test ICConfigurationDescription API (getters and setters).
*/ */
public void testConfigurationDescription_Providers() throws Exception { public void testConfigurationDescription_Providers() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// set providers // set providers
ILanguageSettingsProvider provider1 = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null); ILanguageSettingsProvider provider1 = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null);
@ -170,7 +170,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
providers.add(dupe2); providers.add(dupe2);
try { try {
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
fail("cfgDescription.setLanguageSettingProviders() should not accept duplicate providers"); fail("cfgDescription.setLanguageSettingProviders() should not accept duplicate providers");
} catch (Exception e) { } catch (Exception e) {
// Exception is welcome here // Exception is welcome here
@ -181,7 +181,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test various cases of ill-defined providers. * Test various cases of ill-defined providers.
*/ */
public void testRudeProviders() throws Exception { public void testRudeProviders() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// set impolite provider returning null by getSettingEntries() // set impolite provider returning null by getSettingEntries()
ILanguageSettingsProvider providerNull = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null); ILanguageSettingsProvider providerNull = new MockProvider(PROVIDER_1, PROVIDER_NAME_1, null);
{ {
@ -257,7 +257,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test simple use case. * Test simple use case.
*/ */
public void testProvider_Basic() throws Exception { public void testProvider_Basic() throws Exception {
final ICConfigurationDescription modelCfgDescription = new MockConfigurationDescription(CFG_ID); final MockConfigurationDescription modelCfgDescription = new MockConfigurationDescription(CFG_ID);
final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); final List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(new CIncludePathEntry("path0", 0)); entries.add(new CIncludePathEntry("path0", 0));
@ -309,7 +309,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test regular functionality with a few providers. * Test regular functionality with a few providers.
*/ */
public void testProvider_Regular() throws Exception { public void testProvider_Regular() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// create couple of providers // create couple of providers
List<ICLanguageSettingEntry> entries1 = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries1 = new ArrayList<ICLanguageSettingEntry>();
@ -392,7 +392,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
}; };
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
{ {
// retrieve entries for a derived resource (in a subfolder) // retrieve entries for a derived resource (in a subfolder)
@ -453,7 +453,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
}; };
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
{ {
// retrieve entries for a resource // retrieve entries for a resource
@ -470,7 +470,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test ability to get entries by kind. * Test ability to get entries by kind.
*/ */
public void testEntriesByKind_Regular() throws Exception { public void testEntriesByKind_Regular() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// contribute the entries // contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -504,7 +504,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test how conflicting entries are resolved. * Test how conflicting entries are resolved.
*/ */
public void testEntriesByKind_ConflictingEntries() throws Exception { public void testEntriesByKind_ConflictingEntries() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// contribute the entries // contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -528,7 +528,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Check handling of {@link ICSettingEntry#UNDEFINED} flag. * Check handling of {@link ICSettingEntry#UNDEFINED} flag.
*/ */
public void testEntriesByKind_Undefined() throws Exception { public void testEntriesByKind_Undefined() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// contribute the entries // contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -550,7 +550,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Check handling of local vs. system entries, see {@link ICSettingEntry#LOCAL} flag. * Check handling of local vs. system entries, see {@link ICSettingEntry#LOCAL} flag.
*/ */
public void testEntriesByKind_LocalAndSystem() throws Exception { public void testEntriesByKind_LocalAndSystem() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// contribute the entries // contribute the entries
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
@ -594,7 +594,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
* Test conflicting entries contributed by different providers. * Test conflicting entries contributed by different providers.
*/ */
public void testEntriesByKind_ConflictingProviders() throws Exception { public void testEntriesByKind_ConflictingProviders() throws Exception {
ICConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID); MockConfigurationDescription cfgDescription = new MockConfigurationDescription(CFG_ID);
// contribute the entries // contribute the entries
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
@ -648,18 +648,18 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
assertNotNull(workspaceProvider); assertNotNull(workspaceProvider);
{ {
// ensure no test provider is set yet // ensure no test provider is set yet
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
} }
{ {
// set test provider // set test provider
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(workspaceProvider); providers.add(workspaceProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
} }
{ {
// check that test provider got there // check that test provider got there
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(workspaceProvider, providers.get(0)); assertEquals(workspaceProvider, providers.get(0));
} }
@ -678,7 +678,7 @@ public class LanguageSettingsManagerTests extends BaseTestCase {
ICConfigurationDescription loadedCfgDescription = loadedCfgDescriptions[0]; ICConfigurationDescription loadedCfgDescription = loadedCfgDescriptions[0];
assertTrue(cfgDescription instanceof CConfigurationDescription); assertTrue(cfgDescription instanceof CConfigurationDescription);
List<ILanguageSettingsProvider> loadedProviders = loadedCfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> loadedProviders = ((ILanguageSettingsProvidersKeeper) loadedCfgDescription).getLanguageSettingProviders();
assertTrue(LanguageSettingsManager.isWorkspaceProvider(loadedProviders.get(0))); assertTrue(LanguageSettingsManager.isWorkspaceProvider(loadedProviders.get(0)));
} }

View file

@ -61,7 +61,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
private static CoreModel coreModel = CoreModel.getDefault(); private static CoreModel coreModel = CoreModel.getDefault();
class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription { class MockConfigurationDescription extends CModelMock.DummyCConfigurationDescription implements ILanguageSettingsProvidersKeeper {
List<ILanguageSettingsProvider> providers; List<ILanguageSettingsProvider> providers;
public MockConfigurationDescription(String id) { public MockConfigurationDescription(String id) {
super(id); super(id);
@ -183,7 +183,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
List<ILanguageSettingsProvider> originalProviders = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> originalProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
int originalSize = originalProviders.size(); int originalSize = originalProviders.size();
// create new provider list // create new provider list
@ -193,7 +196,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertTrue(originalSize != providers.size()); assertTrue(originalSize != providers.size());
// changing providers shouldn't affect the original list // changing providers shouldn't affect the original list
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
assertEquals(originalSize, originalProviders.size()); assertEquals(originalSize, originalProviders.size());
} }
@ -209,11 +212,12 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// try to write to it // try to write to it
try { try {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
fail("WriteAccessException was expected but it was not throw."); fail("WriteAccessException was expected but it was not throw.");
} catch (WriteAccessException e) { } catch (WriteAccessException e) {
// exception is expected // exception is expected
@ -230,6 +234,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider // create a provider
LanguageSettingsSerializableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider mockProvider = new MockLanguageSettingsEditableProvider(PROVIDER_0, PROVIDER_NAME_0);
@ -237,8 +243,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
mockProvider.setSettingEntries(cfgDescription, null, null, entries); mockProvider.setSettingEntries(cfgDescription, null, null, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// apply new project description to the project model // apply new project description to the project model
@ -251,8 +257,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = readOnlyProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = readOnlyProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider loadedProvider = providers.get(0); ILanguageSettingsProvider loadedProvider = providers.get(0);
assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider); assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider);
@ -270,8 +278,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider loadedProvider = providers.get(0); ILanguageSettingsProvider loadedProvider = providers.get(0);
assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider); assertTrue(loadedProvider instanceof MockLanguageSettingsEditableProvider);
@ -436,6 +446,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
LanguageSettingsSerializableProvider serializableProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider serializableProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
serializableProvider.setSettingEntries(null, null, null, entries); serializableProvider.setSettingEntries(null, null, null, entries);
@ -443,13 +454,14 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(serializableProvider); providers.add(serializableProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage // prepare DOM storage
Document doc = XmlUtil.newDocument(); Document doc = XmlUtil.newDocument();
rootElement = XmlUtil.appendElement(doc, ELEM_TEST); rootElement = XmlUtil.appendElement(doc, ELEM_TEST);
// serialize language settings to the DOM // serialize language settings to the DOM
LanguageSettingsProvidersSerializer.serializeLanguageSettingsInternal(rootElement, null, mockPrjDescription); LanguageSettingsProvidersSerializer.serializeLanguageSettingsInternal(rootElement, null, mockPrjDescription);
assertTrue(XmlUtil.toString(doc).contains(PROVIDER_0));
} }
{ {
// re-load and check language settings of the newly loaded provider // re-load and check language settings of the newly loaded provider
@ -461,8 +473,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -499,25 +512,29 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// populate configuration 1 with provider // populate configuration 1 with provider
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
assertNotNull(cfgDescription1); assertNotNull(cfgDescription1);
assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
assertEquals(CFG_ID, cfgDescription1.getId()); assertEquals(CFG_ID, cfgDescription1.getId());
LanguageSettingsSerializableProvider provider1 = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider provider1 = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
provider1.setStoringEntriesInProjectArea(true); provider1.setStoringEntriesInProjectArea(true);
provider1.setSettingEntries(null, null, null, entries); provider1.setSettingEntries(null, null, null, entries);
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider1); providers.add(provider1);
cfgDescription1.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription1).setLanguageSettingProviders(providers);
} }
{ {
// populate configuration 2 with provider // populate configuration 2 with provider
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertNotNull(cfgDescription2); assertNotNull(cfgDescription2);
assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
assertEquals(CFG_ID_2, cfgDescription2.getId()); assertEquals(CFG_ID_2, cfgDescription2.getId());
LanguageSettingsSerializableProvider provider2 = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider provider2 = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
provider2.setStoringEntriesInProjectArea(true); provider2.setStoringEntriesInProjectArea(true);
provider2.setSettingEntries(null, null, null, entries2); provider2.setSettingEntries(null, null, null, entries2);
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider2); providers.add(provider2);
cfgDescription2.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription2).setLanguageSettingProviders(providers);
} }
} }
@ -530,7 +547,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// doublecheck configuration 1 // doublecheck configuration 1
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
assertNotNull(cfgDescription1); assertNotNull(cfgDescription1);
List<ILanguageSettingsProvider> providers = cfgDescription1.getLanguageSettingProviders(); assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -543,7 +562,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// doublecheck configuration 2 // doublecheck configuration 2
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertNotNull(cfgDescription2); assertNotNull(cfgDescription2);
List<ILanguageSettingsProvider> providers = cfgDescription2.getLanguageSettingProviders(); assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription2).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -577,7 +598,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// check configuration 1 // check configuration 1
ICConfigurationDescription cfgDescription1 = cfgDescriptions[0]; ICConfigurationDescription cfgDescription1 = cfgDescriptions[0];
assertNotNull(cfgDescription1); assertNotNull(cfgDescription1);
List<ILanguageSettingsProvider> providers = cfgDescription1.getLanguageSettingProviders(); assertTrue(cfgDescription1 instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription1).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -590,7 +613,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// check configuration 2 // check configuration 2
ICConfigurationDescription cfgDescription2 = cfgDescriptions[1]; ICConfigurationDescription cfgDescription2 = cfgDescriptions[1];
assertNotNull(cfgDescription2); assertNotNull(cfgDescription2);
List<ILanguageSettingsProvider> providers = cfgDescription2.getLanguageSettingProviders(); assertTrue(cfgDescription2 instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription2).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -617,6 +642,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
LanguageSettingsSerializableProvider serializableProvider = new MockLanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider serializableProvider = new MockLanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
serializableProvider.setSettingEntries(null, null, null, entries); serializableProvider.setSettingEntries(null, null, null, entries);
@ -624,7 +650,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(serializableProvider); providers.add(serializableProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage // prepare DOM storage
Document doc = XmlUtil.newDocument(); Document doc = XmlUtil.newDocument();
@ -642,8 +668,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -669,11 +696,12 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// populate with provider defined as extension // populate with provider defined as extension
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(providerExt); providers.add(providerExt);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage // prepare DOM storage
Document doc = XmlUtil.newDocument(); Document doc = XmlUtil.newDocument();
@ -691,9 +719,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// and check the newly loaded provider which should be workspace provider // and check the newly loaded provider which should be workspace provider
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -717,13 +746,14 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// populate with provider overriding the extension (must be SerializableLanguageSettingsProvider or a class from another extension) // populate with provider overriding the extension (must be SerializableLanguageSettingsProvider or a class from another extension)
MockLanguageSettingsSerializableProvider providerOverride = new MockLanguageSettingsSerializableProvider(idExt, PROVIDER_NAME_0); MockLanguageSettingsSerializableProvider providerOverride = new MockLanguageSettingsSerializableProvider(idExt, PROVIDER_NAME_0);
providerOverride.setStoringEntriesInProjectArea(true); providerOverride.setStoringEntriesInProjectArea(true);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(providerOverride); providers.add(providerOverride);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage // prepare DOM storage
@ -742,9 +772,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// check the newly loaded provider // check the newly loaded provider
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -776,6 +807,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// 1. Provider reference to extension from plugin.xml // 1. Provider reference to extension from plugin.xml
providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID); providerExt = LanguageSettingsManager.getWorkspaceProvider(EXTENSION_BASE_PROVIDER_ID);
@ -796,7 +828,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
providers.add(providerExt); providers.add(providerExt);
providers.add(mockProvider1); providers.add(mockProvider1);
providers.add(mockProvider2); providers.add(mockProvider2);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
} }
// prepare DOM storage // prepare DOM storage
@ -815,8 +847,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertNotNull(cfgDescriptions); assertNotNull(cfgDescriptions);
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
// 1. Provider reference to extension from plugin.xml // 1. Provider reference to extension from plugin.xml
ILanguageSettingsProvider provider0 = providers.get(0); ILanguageSettingsProvider provider0 = providers.get(0);
@ -862,6 +896,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider // create a provider
LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
@ -869,8 +905,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
mockProvider.setSettingEntries(cfgDescription, null, null, entries); mockProvider.setSettingEntries(cfgDescription, null, null, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -882,7 +918,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
{ {
coreModel.getProjectDescription(project); coreModel.getProjectDescription(project);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
assertTrue(provider instanceof LanguageSettingsSerializableProvider); assertTrue(provider instanceof LanguageSettingsSerializableProvider);
@ -916,16 +955,20 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
cfgDescription.setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>()); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>());
coreModel.setProjectDescription(project, writableProjDescription); coreModel.setProjectDescription(project, writableProjDescription);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
} }
{ {
// re-check if it really took it // re-check if it really took it
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
} }
{ {
@ -936,7 +979,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// open to double-check the data is not kept in some other kind of cache // open to double-check the data is not kept in some other kind of cache
project.open(null); project.open(null);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
// and close // and close
project.close(null); project.close(null);
@ -959,7 +1005,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// open project and check if providers are loaded // open project and check if providers are loaded
project.open(null); project.open(null);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider loadedProvider = providers.get(0); ILanguageSettingsProvider loadedProvider = providers.get(0);
assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider); assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider);
@ -988,6 +1037,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = mockPrjDescription.getConfigurations();
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
LanguageSettingsSerializableProvider serializableProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider serializableProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
serializableProvider.setSettingEntries(null, null, null, entries); serializableProvider.setSettingEntries(null, null, null, entries);
@ -996,7 +1046,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); ArrayList<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(serializableProvider); providers.add(serializableProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// prepare DOM storage // prepare DOM storage
Document prjDoc = XmlUtil.newDocument(); Document prjDoc = XmlUtil.newDocument();
@ -1016,8 +1066,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertNotNull(providers); assertNotNull(providers);
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
@ -1059,6 +1110,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = writableProjDescription.getConfigurations();
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create a provider // create a provider
LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0); LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_0, PROVIDER_NAME_0);
@ -1066,8 +1119,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
mockProvider.setSettingEntries(cfgDescription, null, null, entries); mockProvider.setSettingEntries(cfgDescription, null, null, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(mockProvider); providers.add(mockProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
List<ILanguageSettingsProvider> storedProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> storedProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, storedProviders.size()); assertEquals(1, storedProviders.size());
// write to project description // write to project description
@ -1083,7 +1136,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
{ {
coreModel.getProjectDescription(project); coreModel.getProjectDescription(project);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider provider = providers.get(0); ILanguageSettingsProvider provider = providers.get(0);
assertTrue(provider instanceof LanguageSettingsSerializableProvider); assertTrue(provider instanceof LanguageSettingsSerializableProvider);
@ -1122,16 +1178,20 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
assertEquals(1, cfgDescriptions.length); assertEquals(1, cfgDescriptions.length);
ICConfigurationDescription cfgDescription = cfgDescriptions[0]; ICConfigurationDescription cfgDescription = cfgDescriptions[0];
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
cfgDescription.setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>()); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(new ArrayList<ILanguageSettingsProvider>());
coreModel.setProjectDescription(project, writableProjDescription); coreModel.setProjectDescription(project, writableProjDescription);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
} }
{ {
// re-check if it really took it // re-check if it really took it
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
} }
{ {
@ -1142,7 +1202,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// open to double-check the data is not kept in some other kind of cache // open to double-check the data is not kept in some other kind of cache
project.open(null); project.open(null);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(0, providers.size()); assertEquals(0, providers.size());
// and close // and close
project.close(null); project.close(null);
@ -1177,7 +1240,10 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// open project and check if providers are loaded // open project and check if providers are loaded
project.open(null); project.open(null);
ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project); ICConfigurationDescription cfgDescription = getFirstConfigurationDescription(project);
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
assertEquals(1, providers.size()); assertEquals(1, providers.size());
ILanguageSettingsProvider loadedProvider = providers.get(0); ILanguageSettingsProvider loadedProvider = providers.get(0);
assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider); assertTrue(loadedProvider instanceof LanguageSettingsSerializableProvider);

View file

@ -51,7 +51,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
private static final String PROVIDER_ID = "test.provider.id"; private static final String PROVIDER_ID = "test.provider.id";
private static final String PROVIDER_ID_2 = "test.provider.id.2"; private static final String PROVIDER_ID_2 = "test.provider.id.2";
private static final String PROVIDER_NAME = "test.provider.name"; private static final String PROVIDER_NAME = "test.provider.name";
// constants for getProjectDescription() // constants for getProjectDescription()
private static final boolean READ_ONLY = false; private static final boolean READ_ONLY = false;
private static final boolean WRITEABLE = true; private static final boolean WRITEABLE = true;
@ -225,6 +225,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// sample file // sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -256,7 +257,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -296,6 +297,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// sample file // sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -319,7 +321,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -349,22 +351,23 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// sample file // sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
// contribute the entries // contribute the entries
IFolder frameworkFolder = ResourceHelper.createFolder(project, "Fmwk"); IFolder frameworkFolder = ResourceHelper.createFolder(project, "Fmwk");
CIncludePathEntry frameworkPathEntry = new CIncludePathEntry(frameworkFolder, ICSettingEntry.FRAMEWORKS_MAC); CIncludePathEntry frameworkPathEntry = new CIncludePathEntry(frameworkFolder, ICSettingEntry.FRAMEWORKS_MAC);
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
entries.add(frameworkPathEntry); entries.add(frameworkPathEntry);
// add provider to the configuration // add provider to the configuration
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -380,7 +383,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
new Path(actualIncludePaths[1])); new Path(actualIncludePaths[1]));
assertEquals(2, actualIncludePaths.length); assertEquals(2, actualIncludePaths.length);
} }
/** /**
* Test duplicate entries. * Test duplicate entries.
*/ */
@ -391,6 +394,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// sample file // sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -412,7 +416,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -440,6 +444,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -472,7 +477,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -508,6 +513,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -523,7 +529,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -559,6 +565,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -576,7 +583,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -628,6 +635,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -655,7 +663,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -710,6 +718,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -723,7 +732,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -765,6 +774,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// sample file // sample file
IFolder parentFolder = ResourceHelper.createFolder(project, "ParentFolder"); IFolder parentFolder = ResourceHelper.createFolder(project, "ParentFolder");
@ -784,7 +794,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -812,6 +822,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// create sample file // create sample file
IFile file = ResourceHelper.createFile(project, "file.c"); IFile file = ResourceHelper.createFile(project, "file.c");
@ -825,8 +836,8 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries); ILanguageSettingsProvider provider = new MockProvider(PROVIDER_ID, PROVIDER_NAME, entries);
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider); providers.add(provider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
@ -893,6 +904,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
assertNotNull(prjDescription); assertNotNull(prjDescription);
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration(); ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
assertNotNull(cfgDescription); assertNotNull(cfgDescription);
assertTrue(cfgDescription instanceof ILanguageSettingsProvidersKeeper);
// find 2 languages applicable to the folder // find 2 languages applicable to the folder
List<String> languageIds = getLanguages(folder, cfgDescription); List<String> languageIds = getLanguages(folder, cfgDescription);
@ -917,7 +929,7 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
providers.add(provider1); providers.add(provider1);
providers.add(provider2); providers.add(provider2);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
// set project description // set project description
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription); CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);

View file

@ -25,7 +25,6 @@ import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.provider.IIndexProvider; import org.eclipse.cdt.core.index.provider.IIndexProvider;
import org.eclipse.cdt.core.internal.index.provider.test.DummyProviderTraces; import org.eclipse.cdt.core.internal.index.provider.test.DummyProviderTraces;
import org.eclipse.cdt.core.internal.index.provider.test.Providers; import org.eclipse.cdt.core.internal.index.provider.test.Providers;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.ArrayUtil;
@ -76,7 +75,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
final static Class DP4= Providers.Dummy4.class; final static Class DP4= Providers.Dummy4.class;
final static Class DP5= Providers.Dummy5.class; final static Class DP5= Providers.Dummy5.class;
final static Class[] DPS= new Class[] {DP4, DP2, DP1, DP3, DP5}; final static Class[] DPS= new Class[] {DP4, DP2, DP1, DP3, DP5};
/* /*
* Fictional compatibility ranges for testing * Fictional compatibility ranges for testing
*/ */
@ -84,9 +83,9 @@ public class IndexProviderManagerTest extends IndexTestBase {
final static VersionRange VERSION_401= new VersionRange("[36,37]"); final static VersionRange VERSION_401= new VersionRange("[36,37]");
final static VersionRange VERSION_405= new VersionRange("[37,39]"); final static VersionRange VERSION_405= new VersionRange("[37,39]");
final static VersionRange VERSION_502= new VersionRange("[89,91]"); final static VersionRange VERSION_502= new VersionRange("[89,91]");
final CCorePlugin core= CCorePlugin.getDefault(); final CCorePlugin core= CCorePlugin.getDefault();
public IndexProviderManagerTest() { public IndexProviderManagerTest() {
super("IndexProviderManagerTest"); super("IndexProviderManagerTest");
} }
@ -107,11 +106,11 @@ public class IndexProviderManagerTest extends IndexTestBase {
IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager();
ipm.reset(); ipm.startup(); ipm.reset(); ipm.startup();
} }
public void testProvider_SimpleLifeCycle_200958() throws Exception { public void testProvider_SimpleLifeCycle_200958() throws Exception {
for (Class element : DPS) for (Class element : DPS)
DPT.reset(element); DPT.reset(element);
List cprojects = new ArrayList(), expectedTrace = new ArrayList(); List cprojects = new ArrayList(), expectedTrace = new ArrayList();
try { try {
for(int i=0; i<3; i++) { for(int i=0; i<3; i++) {
@ -138,7 +137,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
public void testProvider_OverDeleteAndAdd() throws Exception { public void testProvider_OverDeleteAndAdd() throws Exception {
DPT.reset(DP1); DPT.reset(DP1);
List expectedTrace = new ArrayList(); List expectedTrace = new ArrayList();
ICProject cproject = null; ICProject cproject = null;
try { try {
@ -181,7 +180,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
File newLocation = CProjectHelper.freshDir(); File newLocation = CProjectHelper.freshDir();
IProjectDescription description = cproject.getProject().getDescription(); IProjectDescription description = cproject.getProject().getDescription();
description.setLocationURI(newLocation.toURI()); description.setLocationURI(newLocation.toURI());
cproject.getProject().move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor()); cproject.getProject().move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor());
index = CCorePlugin.getIndexManager().getIndex(cproject); index = CCorePlugin.getIndexManager().getIndex(cproject);
assertEquals(expectedTrace, DPT.getProjectsTrace(DP1)); assertEquals(expectedTrace, DPT.getProjectsTrace(DP1));
@ -191,19 +190,19 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
} }
} }
public void testVersioning_IncompatibleIgnored() throws Exception { public void testVersioning_IncompatibleIgnored() throws Exception {
IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager();
ICProject cproject = null; ICProject cproject = null;
try { try {
cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER);
IProject project= cproject.getProject(); IProject project= cproject.getProject();
MockState mockState = new MockState(cproject); MockState mockState = new MockState(cproject);
mockState.setConfig(MockState.REL_V1_ID); mockState.setConfig(MockState.REL_V1_ID);
IIndexProvider provider1= new IIndexFragmentProvider() { IIndexProvider provider1= new IIndexFragmentProvider() {
IIndexFragment[] fragments= new IIndexFragment[] { IIndexFragment[] fragments= new IIndexFragment[] {
new MockPDOM("contentID.contentA", "36"), new MockPDOM("contentID.contentA", "36"),
@ -212,9 +211,11 @@ public class IndexProviderManagerTest extends IndexTestBase {
new MockPDOM("contentID.bar", "91"), new MockPDOM("contentID.bar", "91"),
new MockPDOM("contentID.baz", "89") new MockPDOM("contentID.baz", "89")
}; };
@Override
public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) {
return fragments; return fragments;
} }
@Override
public boolean providesFor(ICProject project) throws CoreException { public boolean providesFor(ICProject project) throws CoreException {
return true; return true;
} }
@ -224,20 +225,22 @@ public class IndexProviderManagerTest extends IndexTestBase {
new MockPDOM("contentID.baz", "90"), new MockPDOM("contentID.baz", "90"),
new MockPDOM("contentID.contentA", "38"), new MockPDOM("contentID.contentA", "38"),
}; };
@Override
public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) {
return fragments; return fragments;
} }
@Override
public boolean providesFor(ICProject project) throws CoreException { public boolean providesFor(ICProject project) throws CoreException {
return true; return true;
} }
}; };
CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions
setExpectedNumberOfLoggedNonOKStatusObjects(3); // foo, bar and baz have no compatible fragments available setExpectedNumberOfLoggedNonOKStatusObjects(3); // foo, bar and baz have no compatible fragments available
ipm.reset(VERSION_405); ipm.startup(); ipm.reset(VERSION_405); ipm.startup();
ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2); ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2);
IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true); IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true);
assertEquals(1, actual.length); assertEquals(1, actual.length);
assertFragmentPresent("contentID.contentA", "38", actual); assertFragmentPresent("contentID.contentA", "38", actual);
@ -247,19 +250,19 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
} }
} }
public void testVersioning_NoCompatibleVersionsFound() throws Exception { public void testVersioning_NoCompatibleVersionsFound() throws Exception {
IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager(); IndexProviderManager ipm= ((PDOMManager)CCorePlugin.getIndexManager()).getIndexProviderManager();
ICProject cproject = null; ICProject cproject = null;
try { try {
cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); cproject= CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER);
IProject project= cproject.getProject(); IProject project= cproject.getProject();
MockState mockState = new MockState(cproject); MockState mockState = new MockState(cproject);
mockState.setConfig(MockState.REL_V1_ID); mockState.setConfig(MockState.REL_V1_ID);
IIndexProvider provider1= new IIndexFragmentProvider() { IIndexProvider provider1= new IIndexFragmentProvider() {
IIndexFragment[] fragments= new IIndexFragment[] { IIndexFragment[] fragments= new IIndexFragment[] {
new MockPDOM("contentID.contentA", "36"), new MockPDOM("contentID.contentA", "36"),
@ -268,9 +271,11 @@ public class IndexProviderManagerTest extends IndexTestBase {
new MockPDOM("contentID.bar", "91"), new MockPDOM("contentID.bar", "91"),
new MockPDOM("contentID.baz", "89") new MockPDOM("contentID.baz", "89")
}; };
@Override
public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) {
return fragments; return fragments;
} }
@Override
public boolean providesFor(ICProject project) throws CoreException { public boolean providesFor(ICProject project) throws CoreException {
return true; return true;
} }
@ -279,20 +284,22 @@ public class IndexProviderManagerTest extends IndexTestBase {
IIndexFragment[] fragments= new IIndexFragment[] { IIndexFragment[] fragments= new IIndexFragment[] {
new MockPDOM("contentID.contentA", "41"), new MockPDOM("contentID.contentA", "41"),
}; };
@Override
public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) { public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) {
return fragments; return fragments;
} }
@Override
public boolean providesFor(ICProject project) throws CoreException { public boolean providesFor(ICProject project) throws CoreException {
return true; return true;
} }
}; };
CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions CCorePlugin.getIndexManager().joinIndexer(8000, npm()); // ensure IPM is called only once under test conditions
setExpectedNumberOfLoggedNonOKStatusObjects(1); // contentA has no compatible fragments available setExpectedNumberOfLoggedNonOKStatusObjects(1); // contentA has no compatible fragments available
ipm.reset(VERSION_502); ipm.startup(); ipm.reset(VERSION_502); ipm.startup();
ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2); ipm.addIndexProvider(provider1); ipm.addIndexProvider(provider2);
IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true); IIndexFragment[] actual = ipm.getProvidedIndexFragments(mockState.getCurrentConfig(), true);
assertEquals(3, actual.length); assertEquals(3, actual.length);
assertFragmentPresent("contentID.foo", "90", actual); assertFragmentPresent("contentID.foo", "90", actual);
@ -304,7 +311,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
} }
} }
private void assertFragmentPresent(String id, String version, IIndexFragment[] fragments) throws Exception { private void assertFragmentPresent(String id, String version, IIndexFragment[] fragments) throws Exception {
for (IIndexFragment candidate : fragments) { for (IIndexFragment candidate : fragments) {
String cid= null, csver= null; String cid= null, csver= null;
@ -320,49 +327,49 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
fail("Fragment matching (id="+id+",version="+version+") was not present"); fail("Fragment matching (id="+id+",version="+version+") was not present");
} }
public void testIndexFactoryConfigurationUsage() throws Exception { public void testIndexFactoryConfigurationUsage() throws Exception {
IIndex index; IIndex index;
ICProject cproject = null; ICProject cproject = null;
// Modifying the .project file triggers an indexer job, suppress that: // Modifying the .project file triggers an indexer job, suppress that:
DeltaAnalyzer.sSuppressPotentialTUs= true; DeltaAnalyzer.sSuppressPotentialTUs= true;
try { try {
cproject = CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER); cproject = CProjectHelper.createCCProject("IndexFactoryConfigurationUsageTest", IPDOMManager.ID_NO_INDEXER);
IProject project= cproject.getProject(); IProject project= cproject.getProject();
ICProjectDescription pd= core.getProjectDescription(project); ICProjectDescription pd= core.getProjectDescription(project);
ICConfigurationDescription cfg1= newCfg(pd, "project", "config1"); ICConfigurationDescription cfg1= newCfg(pd, "project", "config1");
ICConfigurationDescription cfg2= newCfg(pd, "project", "config2"); ICConfigurationDescription cfg2= newCfg(pd, "project", "config2");
core.setProjectDescription(project, pd); core.setProjectDescription(project, pd);
index= CCorePlugin.getIndexManager().getIndex(cproject); index= CCorePlugin.getIndexManager().getIndex(cproject);
CCorePlugin.getIndexManager().joinIndexer(8000, npm()); CCorePlugin.getIndexManager().joinIndexer(8000, npm());
DPT.reset(DP1); DPT.reset(DP1);
changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_LINK_SETTINGS_AND_ACTIVE); changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_LINK_SETTINGS_AND_ACTIVE);
assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getProjectsTrace(DP1).size());
assertEquals(0, DPT.getCfgsTrace(DP1).size()); assertEquals(0, DPT.getCfgsTrace(DP1).size());
changeActiveConfiguration(project, cfg1); changeActiveConfiguration(project, cfg1);
DPT.reset(DP1); DPT.reset(DP1);
index= CCorePlugin.getIndexManager().getIndex(cproject); index= CCorePlugin.getIndexManager().getIndex(cproject);
assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getProjectsTrace(DP1).size());
assertEquals(1, DPT.getCfgsTrace(DP1).size()); assertEquals(1, DPT.getCfgsTrace(DP1).size());
assertEquals("project.config1", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); assertEquals("project.config1", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId());
changeActiveConfiguration(project, cfg2); changeActiveConfiguration(project, cfg2);
DPT.reset(DP1); DPT.reset(DP1);
index= CCorePlugin.getIndexManager().getIndex(cproject); index= CCorePlugin.getIndexManager().getIndex(cproject);
assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getProjectsTrace(DP1).size());
assertEquals(1, DPT.getCfgsTrace(DP1).size()); assertEquals(1, DPT.getCfgsTrace(DP1).size());
assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId());
DPT.reset(DP1); DPT.reset(DP1);
changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_INDEPENDENT); changeConfigRelations(project, ICProjectDescriptionPreferences.CONFIGS_INDEPENDENT);
assertEquals(0, DPT.getProjectsTrace(DP1).size()); assertEquals(0, DPT.getProjectsTrace(DP1).size());
assertEquals(0, DPT.getCfgsTrace(DP1).size()); assertEquals(0, DPT.getCfgsTrace(DP1).size());
changeActiveConfiguration(project, cfg1); changeActiveConfiguration(project, cfg1);
DPT.reset(DP1); DPT.reset(DP1);
index= CCorePlugin.getIndexManager().getIndex(cproject); index= CCorePlugin.getIndexManager().getIndex(cproject);
@ -370,7 +377,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
assertEquals(1, DPT.getCfgsTrace(DP1).size()); assertEquals(1, DPT.getCfgsTrace(DP1).size());
// should still be config2, as the change in active configuration does not matter // should still be config2, as the change in active configuration does not matter
assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId()); assertEquals("project.config2", ((ICConfigurationDescription)DPT.getCfgsTrace(DP1).get(0)).getId());
changeActiveConfiguration(project, cfg2); changeActiveConfiguration(project, cfg2);
DPT.reset(DP1); DPT.reset(DP1);
index= CCorePlugin.getIndexManager().getIndex(cproject); index= CCorePlugin.getIndexManager().getIndex(cproject);
@ -385,7 +392,7 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
} }
} }
public void testGetProvidedFragments() throws Exception { public void testGetProvidedFragments() throws Exception {
ICProject cproject= CProjectHelper.createCProject("IndexProviderManagerTest", "bin", IPDOMManager.ID_NO_INDEXER); ICProject cproject= CProjectHelper.createCProject("IndexProviderManagerTest", "bin", IPDOMManager.ID_NO_INDEXER);
@ -492,20 +499,20 @@ public class IndexProviderManagerTest extends IndexTestBase {
} }
} }
} }
private ICConfigurationDescription newCfg(ICProjectDescription des, String project, String config) throws CoreException { private ICConfigurationDescription newCfg(ICProjectDescription des, String project, String config) throws CoreException {
CDefaultConfigurationData data= new CDefaultConfigurationData(project+"."+config, project+" "+config+" name", null); CDefaultConfigurationData data= new CDefaultConfigurationData(project+"."+config, project+" "+config+" name", null);
data.initEmptyData(); data.initEmptyData();
return des.createConfiguration(CCorePlugin.DEFAULT_PROVIDER_ID, data); return des.createConfiguration(CCorePlugin.DEFAULT_PROVIDER_ID, data);
} }
private void changeActiveConfiguration(IProject project, ICConfigurationDescription cfg) throws CoreException { private void changeActiveConfiguration(IProject project, ICConfigurationDescription cfg) throws CoreException {
ICProjectDescription pd= core.getProjectDescription(project); ICProjectDescription pd= core.getProjectDescription(project);
pd.setActiveConfiguration(pd.getConfigurationById(cfg.getId())); pd.setActiveConfiguration(pd.getConfigurationById(cfg.getId()));
core.setProjectDescription(project, pd); core.setProjectDescription(project, pd);
CCorePlugin.getIndexManager().joinIndexer(8000, npm()); CCorePlugin.getIndexManager().joinIndexer(8000, npm());
} }
private void changeConfigRelations(IProject project, int option) throws CoreException { private void changeConfigRelations(IProject project, int option) throws CoreException {
ICProjectDescription pd= core.getProjectDescription(project); ICProjectDescription pd= core.getProjectDescription(project);
pd.setConfigurationRelations(option); pd.setConfigurationRelations(option);
@ -521,6 +528,7 @@ class MockStateIndexProvider implements IIndexProvider {
this.targetProject = cproject; this.targetProject = cproject;
} }
@Override
public boolean providesFor(ICProject cproject) throws CoreException { public boolean providesFor(ICProject cproject) throws CoreException {
return this.targetProject.equals(cproject); return this.targetProject.equals(cproject);
} }
@ -529,7 +537,7 @@ class MockStateIndexProvider implements IIndexProvider {
class MockStateIndexFragmentProvider extends MockStateIndexProvider implements IIndexFragmentProvider { class MockStateIndexFragmentProvider extends MockStateIndexProvider implements IIndexFragmentProvider {
private boolean invert; private boolean invert;
final IIndexFragment[] fragments; final IIndexFragment[] fragments;
public void invert() { public void invert() {
invert = !invert; invert = !invert;
} }
@ -543,6 +551,7 @@ class MockStateIndexFragmentProvider extends MockStateIndexProvider implements I
} }
} }
@Override
public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) throws CoreException { public IIndexFragment[] getIndexFragments(ICConfigurationDescription config) throws CoreException {
int index = MockState.states.indexOf(config.getId()); int index = MockState.states.indexOf(config.getId());
index = invert ? (fragments.length-1)-index : index; index = invert ? (fragments.length-1)-index : index;
@ -565,152 +574,201 @@ class MockConfig implements ICConfigurationDescription {
this.project= project; this.project= project;
} }
@Override
public String getId() { public String getId() {
return id; return id;
} }
@Override
public ICConfigExtensionReference create(String extensionPoint, public ICConfigExtensionReference create(String extensionPoint,
String extension) throws CoreException { String extension) throws CoreException {
return null; return null;
} }
@Override
public ICExternalSetting createExternalSetting(String[] languageIDs, public ICExternalSetting createExternalSetting(String[] languageIDs,
String[] contentTypeIds, String[] extensions, String[] contentTypeIds, String[] extensions,
ICSettingEntry[] entries) throws WriteAccessException { ICSettingEntry[] entries) throws WriteAccessException {
return null; return null;
} }
@Override
public ICFileDescription createFileDescription(IPath path, public ICFileDescription createFileDescription(IPath path,
ICResourceDescription base) throws CoreException, ICResourceDescription base) throws CoreException,
WriteAccessException { WriteAccessException {
return null; return null;
} }
@Override
public ICFolderDescription createFolderDescription(IPath path, public ICFolderDescription createFolderDescription(IPath path,
ICFolderDescription base) throws CoreException, ICFolderDescription base) throws CoreException,
WriteAccessException { WriteAccessException {
return null; return null;
} }
@Override
public ICConfigExtensionReference[] get(String extensionPointID) { public ICConfigExtensionReference[] get(String extensionPointID) {
return null; return null;
} }
@Override
public ICBuildSetting getBuildSetting() { public ICBuildSetting getBuildSetting() {
return null; return null;
} }
@Override
public String getBuildSystemId() { public String getBuildSystemId() {
return null; return null;
} }
@Override
public ICdtVariablesContributor getBuildVariablesContributor() { public ICdtVariablesContributor getBuildVariablesContributor() {
return null; return null;
} }
@Override
public CConfigurationData getConfigurationData() { public CConfigurationData getConfigurationData() {
return null; return null;
} }
@Override
public String getDescription() { public String getDescription() {
return null; return null;
} }
@Override
public ICExternalSetting[] getExternalSettings() { public ICExternalSetting[] getExternalSettings() {
return null; return null;
} }
@Override
public ICFileDescription[] getFileDescriptions() { public ICFileDescription[] getFileDescriptions() {
return null; return null;
} }
@Override
public ICFolderDescription[] getFolderDescriptions() { public ICFolderDescription[] getFolderDescriptions() {
return null; return null;
} }
@Override
public ICProjectDescription getProjectDescription() { public ICProjectDescription getProjectDescription() {
return CoreModel.getDefault().getProjectDescription(project); return CoreModel.getDefault().getProjectDescription(project);
} }
@Override
public Map getReferenceInfo() { public Map getReferenceInfo() {
return null; return null;
} }
@Override
public ICResourceDescription getResourceDescription(IPath path, public ICResourceDescription getResourceDescription(IPath path,
boolean exactPath) { boolean exactPath) {
return null; return null;
} }
@Override
public ICResourceDescription[] getResourceDescriptions() { public ICResourceDescription[] getResourceDescriptions() {
return null; return null;
} }
@Override
public ICFolderDescription getRootFolderDescription() {return null;} public ICFolderDescription getRootFolderDescription() {return null;}
@Override
public Object getSessionProperty(QualifiedName name) {return null;} public Object getSessionProperty(QualifiedName name) {return null;}
@Override
public ICSourceEntry[] getSourceEntries() {return null;} public ICSourceEntry[] getSourceEntries() {return null;}
@Override
public ICTargetPlatformSetting getTargetPlatformSetting() {return null;} public ICTargetPlatformSetting getTargetPlatformSetting() {return null;}
@Override
public boolean isActive() {return false;} public boolean isActive() {return false;}
@Override
public boolean isModified() {return false;} public boolean isModified() {return false;}
@Override
public boolean isPreferenceConfiguration() {return false;} public boolean isPreferenceConfiguration() {return false;}
@Override
public void remove(ICConfigExtensionReference ext) throws CoreException {} public void remove(ICConfigExtensionReference ext) throws CoreException {}
@Override
public void remove(String extensionPoint) throws CoreException {} public void remove(String extensionPoint) throws CoreException {}
@Override
public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException {} public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException {}
@Override
public void removeExternalSettings() throws WriteAccessException {} public void removeExternalSettings() throws WriteAccessException {}
@Override
public void removeResourceDescription(ICResourceDescription des) public void removeResourceDescription(ICResourceDescription des)
throws CoreException, WriteAccessException {} throws CoreException, WriteAccessException {}
@Override
public void setActive() throws WriteAccessException {} public void setActive() throws WriteAccessException {}
@Override
public void setConfigurationData(String buildSystemId, public void setConfigurationData(String buildSystemId,
CConfigurationData data) throws WriteAccessException {} CConfigurationData data) throws WriteAccessException {}
@Override
public void setDescription(String des) throws WriteAccessException {} public void setDescription(String des) throws WriteAccessException {}
@Override
public void setName(String name) throws WriteAccessException {} public void setName(String name) throws WriteAccessException {}
@Override
public void setReferenceInfo(Map<String, String> refs) throws WriteAccessException {} public void setReferenceInfo(Map<String, String> refs) throws WriteAccessException {}
@Override
public void setSessionProperty(QualifiedName name, Object value) {} public void setSessionProperty(QualifiedName name, Object value) {}
@Override
public void setSourceEntries(ICSourceEntry[] entries) throws CoreException, public void setSourceEntries(ICSourceEntry[] entries) throws CoreException,
WriteAccessException {} WriteAccessException {}
@Override
public ICSettingObject[] getChildSettings() {return null;} public ICSettingObject[] getChildSettings() {return null;}
@Override
public ICConfigurationDescription getConfiguration() {return null;} public ICConfigurationDescription getConfiguration() {return null;}
@Override
public String getName() {return null;} public String getName() {return null;}
@Override
public ICSettingContainer getParent() {return null;} public ICSettingContainer getParent() {return null;}
@Override
public int getType() {return 0;} public int getType() {return 0;}
@Override
public boolean isReadOnly() {return false;} public boolean isReadOnly() {return false;}
@Override
public boolean isValid() {return false;} public boolean isValid() {return false;}
@Override
public ICStorageElement getStorage(String id, boolean create) throws CoreException { public ICStorageElement getStorage(String id, boolean create) throws CoreException {
return null; return null;
} }
@Override
public ICStorageElement importStorage(String id, ICStorageElement storage) { public ICStorageElement importStorage(String id, ICStorageElement storage) {
return null; return null;
} }
@Override
public void removeStorage(String id) throws CoreException { public void removeStorage(String id) throws CoreException {
} }
@Override
public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) { public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) {
return null; return null;
} }
@Override
public String[] getExternalSettingsProviderIds() { public String[] getExternalSettingsProviderIds() {
return null; return null;
} }
@Override
public void setExternalSettingsProviderIds(String[] ids) {} public void setExternalSettingsProviderIds(String[] ids) {}
@Override
public void updateExternalSettingsProviders(String[] ids) {} public void updateExternalSettingsProviders(String[] ids) {}
@Override
public ICSourceEntry[] getResolvedSourceEntries() { public ICSourceEntry[] getResolvedSourceEntries() {
return null; return null;
} }
@Override
public CConfigurationStatus getConfigurationStatus() { public CConfigurationStatus getConfigurationStatus() {
return CConfigurationStatus.CFG_STATUS_OK; return CConfigurationStatus.CFG_STATUS_OK;
} }
@Override
public void setReadOnly(boolean readOnly, boolean keepModify) {} public void setReadOnly(boolean readOnly, boolean keepModify) {}
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers) {}
public List<ILanguageSettingsProvider> getLanguageSettingProviders() {
return null;
}
} }
/* /*
@ -743,12 +801,12 @@ class MockState {
class MockPDOM extends EmptyIndexFragment { class MockPDOM extends EmptyIndexFragment {
String id; String id;
String version; String version;
MockPDOM(String id, String version) { MockPDOM(String id, String version) {
this.id= id; this.id= id;
this.version= version; this.version= version;
} }
@Override @Override
public String getProperty(String propertyName) throws CoreException { public String getProperty(String propertyName) throws CoreException {
if(IIndexFragment.PROPERTY_FRAGMENT_ID.equals(propertyName)) { if(IIndexFragment.PROPERTY_FRAGMENT_ID.equals(propertyName)) {
@ -762,7 +820,7 @@ class MockPDOM extends EmptyIndexFragment {
} }
return null; return null;
} }
@Override @Override
public String toString() { public String toString() {
return "[Mock index fragment "+id+"."+System.identityHashCode(this)+"]"; return "[Mock index fragment "+id+"."+System.identityHashCode(this)+"]";

View file

@ -11,11 +11,9 @@
package org.eclipse.cdt.core.testplugin; package org.eclipse.cdt.core.testplugin;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus; import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting; import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference; import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
@ -48,136 +46,169 @@ public class CModelMock {
*/ */
public static class DummyCProjectDescription implements ICProjectDescription { public static class DummyCProjectDescription implements ICProjectDescription {
@Override
public ICSettingObject[] getChildSettings() { public ICSettingObject[] getChildSettings() {
return null; return null;
} }
@Override
public String getId() { public String getId() {
return null; return null;
} }
@Override
public String getName() { public String getName() {
return null; return null;
} }
@Override
public int getType() { public int getType() {
return 0; return 0;
} }
@Override
public boolean isValid() { public boolean isValid() {
return false; return false;
} }
@Override
public ICConfigurationDescription getConfiguration() { public ICConfigurationDescription getConfiguration() {
return null; return null;
} }
@Override
public ICSettingContainer getParent() { public ICSettingContainer getParent() {
return null; return null;
} }
@Override
public boolean isReadOnly() { public boolean isReadOnly() {
return false; return false;
} }
@Override
public ICStorageElement getStorage(String id, boolean create) public ICStorageElement getStorage(String id, boolean create)
throws CoreException { throws CoreException {
return null; return null;
} }
@Override
public void removeStorage(String id) throws CoreException { public void removeStorage(String id) throws CoreException {
} }
@Override
public ICStorageElement importStorage(String id, ICStorageElement el) public ICStorageElement importStorage(String id, ICStorageElement el)
throws UnsupportedOperationException, CoreException { throws UnsupportedOperationException, CoreException {
return null; return null;
} }
@Override
public void setReadOnly(boolean readOnly, boolean keepModify) { public void setReadOnly(boolean readOnly, boolean keepModify) {
} }
@Override
public int getConfigurationRelations() { public int getConfigurationRelations() {
return 0; return 0;
} }
@Override
public void setConfigurationRelations(int status) { public void setConfigurationRelations(int status) {
} }
@Override
public void useDefaultConfigurationRelations() { public void useDefaultConfigurationRelations() {
} }
@Override
public boolean isDefaultConfigurationRelations() { public boolean isDefaultConfigurationRelations() {
return false; return false;
} }
@Override
public ICConfigurationDescription[] getConfigurations() { public ICConfigurationDescription[] getConfigurations() {
return null; return null;
} }
@Override
public ICConfigurationDescription getActiveConfiguration() { public ICConfigurationDescription getActiveConfiguration() {
return null; return null;
} }
@Override
public void setActiveConfiguration(ICConfigurationDescription cfg) public void setActiveConfiguration(ICConfigurationDescription cfg)
throws WriteAccessException { throws WriteAccessException {
} }
@Override
public ICConfigurationDescription createConfiguration(String id, public ICConfigurationDescription createConfiguration(String id,
String name, ICConfigurationDescription base) String name, ICConfigurationDescription base)
throws CoreException, WriteAccessException { throws CoreException, WriteAccessException {
return null; return null;
} }
@Override
public ICConfigurationDescription createConfiguration( public ICConfigurationDescription createConfiguration(
String buildSystemId, CConfigurationData data) String buildSystemId, CConfigurationData data)
throws CoreException, WriteAccessException { throws CoreException, WriteAccessException {
return null; return null;
} }
@Override
public ICConfigurationDescription getConfigurationByName(String name) { public ICConfigurationDescription getConfigurationByName(String name) {
return null; return null;
} }
@Override
public ICConfigurationDescription getConfigurationById(String id) { public ICConfigurationDescription getConfigurationById(String id) {
return null; return null;
} }
@Override
public void removeConfiguration(String name) public void removeConfiguration(String name)
throws WriteAccessException { throws WriteAccessException {
} }
@Override
public void removeConfiguration(ICConfigurationDescription cfg) public void removeConfiguration(ICConfigurationDescription cfg)
throws WriteAccessException { throws WriteAccessException {
} }
@Override
public IProject getProject() { public IProject getProject() {
return null; return null;
} }
@Override
public boolean isModified() { public boolean isModified() {
return false; return false;
} }
@Override
public Object getSessionProperty(QualifiedName name) { public Object getSessionProperty(QualifiedName name) {
return null; return null;
} }
@Override
public void setSessionProperty(QualifiedName name, Object value) { public void setSessionProperty(QualifiedName name, Object value) {
} }
@Override
public ICConfigurationDescription getDefaultSettingConfiguration() { public ICConfigurationDescription getDefaultSettingConfiguration() {
return null; return null;
} }
@Override
public void setDefaultSettingConfiguration( public void setDefaultSettingConfiguration(
ICConfigurationDescription cfg) { ICConfigurationDescription cfg) {
} }
@Override
public boolean isCdtProjectCreating() { public boolean isCdtProjectCreating() {
return false; return false;
} }
@Override
public void setCdtProjectCreated() { public void setCdtProjectCreated() {
} }
@ -195,222 +226,269 @@ public class CModelMock {
this.id = id; this.id = id;
} }
@Override
public ICSettingObject[] getChildSettings() { public ICSettingObject[] getChildSettings() {
return null; return null;
} }
@Override
public String getId() { public String getId() {
return id; return id;
} }
@Override
public String getName() { public String getName() {
return null; return null;
} }
@Override
public int getType() { public int getType() {
return 0; return 0;
} }
@Override
public boolean isValid() { public boolean isValid() {
return false; return false;
} }
@Override
public ICConfigurationDescription getConfiguration() { public ICConfigurationDescription getConfiguration() {
return null; return null;
} }
@Override
public ICSettingContainer getParent() { public ICSettingContainer getParent() {
return null; return null;
} }
@Override
public boolean isReadOnly() { public boolean isReadOnly() {
return false; return false;
} }
@Override
public ICStorageElement getStorage(String id, boolean create) public ICStorageElement getStorage(String id, boolean create)
throws CoreException { throws CoreException {
return null; return null;
} }
@Override
public void removeStorage(String id) throws CoreException { public void removeStorage(String id) throws CoreException {
} }
@Override
public ICStorageElement importStorage(String id, ICStorageElement el) public ICStorageElement importStorage(String id, ICStorageElement el)
throws UnsupportedOperationException, CoreException { throws UnsupportedOperationException, CoreException {
return null; return null;
} }
@Override
public void setReadOnly(boolean readOnly, boolean keepModify) { public void setReadOnly(boolean readOnly, boolean keepModify) {
} }
@Override
public boolean isActive() { public boolean isActive() {
return false; return false;
} }
@Override
public String getDescription() { public String getDescription() {
return null; return null;
} }
@Override
public void setDescription(String des) throws WriteAccessException { public void setDescription(String des) throws WriteAccessException {
} }
@Override
public ICProjectDescription getProjectDescription() { public ICProjectDescription getProjectDescription() {
return null; return null;
} }
@Override
public ICFolderDescription getRootFolderDescription() { public ICFolderDescription getRootFolderDescription() {
return null; return null;
} }
@Override
public ICFolderDescription[] getFolderDescriptions() { public ICFolderDescription[] getFolderDescriptions() {
return null; return null;
} }
@Override
public ICFileDescription[] getFileDescriptions() { public ICFileDescription[] getFileDescriptions() {
return null; return null;
} }
@Override
public ICResourceDescription[] getResourceDescriptions() { public ICResourceDescription[] getResourceDescriptions() {
return null; return null;
} }
@Override
public ICResourceDescription getResourceDescription(IPath path, public ICResourceDescription getResourceDescription(IPath path,
boolean exactPath) { boolean exactPath) {
return null; return null;
} }
@Override
public void removeResourceDescription(ICResourceDescription des) public void removeResourceDescription(ICResourceDescription des)
throws CoreException, WriteAccessException { throws CoreException, WriteAccessException {
} }
@Override
public ICFileDescription createFileDescription(IPath path, public ICFileDescription createFileDescription(IPath path,
ICResourceDescription base) throws CoreException, ICResourceDescription base) throws CoreException,
WriteAccessException { WriteAccessException {
return null; return null;
} }
@Override
public ICFolderDescription createFolderDescription(IPath path, public ICFolderDescription createFolderDescription(IPath path,
ICFolderDescription base) throws CoreException, ICFolderDescription base) throws CoreException,
WriteAccessException { WriteAccessException {
return null; return null;
} }
@Override
public String getBuildSystemId() { public String getBuildSystemId() {
return null; return null;
} }
@Override
public CConfigurationData getConfigurationData() { public CConfigurationData getConfigurationData() {
return null; return null;
} }
@Override
public void setActive() throws WriteAccessException { public void setActive() throws WriteAccessException {
} }
@Override
public void setConfigurationData(String buildSystemId, CConfigurationData data) throws WriteAccessException { public void setConfigurationData(String buildSystemId, CConfigurationData data) throws WriteAccessException {
} }
@Override
public boolean isModified() { public boolean isModified() {
return false; return false;
} }
@Override
public ICTargetPlatformSetting getTargetPlatformSetting() { public ICTargetPlatformSetting getTargetPlatformSetting() {
return null; return null;
} }
@Override
public ICSourceEntry[] getSourceEntries() { public ICSourceEntry[] getSourceEntries() {
return null; return null;
} }
@Override
public ICSourceEntry[] getResolvedSourceEntries() { public ICSourceEntry[] getResolvedSourceEntries() {
return null; return null;
} }
@Override
public void setSourceEntries(ICSourceEntry[] entries) throws CoreException, WriteAccessException { public void setSourceEntries(ICSourceEntry[] entries) throws CoreException, WriteAccessException {
} }
@Override
public Map<String, String> getReferenceInfo() { public Map<String, String> getReferenceInfo() {
return null; return null;
} }
@Override
public void setReferenceInfo(Map<String, String> refs) throws WriteAccessException { public void setReferenceInfo(Map<String, String> refs) throws WriteAccessException {
} }
@Override
public ICExternalSetting[] getExternalSettings() { public ICExternalSetting[] getExternalSettings() {
return null; return null;
} }
@Override
public ICExternalSetting createExternalSetting(String[] languageIDs, public ICExternalSetting createExternalSetting(String[] languageIDs,
String[] contentTypeIds, String[] extensions, String[] contentTypeIds, String[] extensions,
ICSettingEntry[] entries) throws WriteAccessException { ICSettingEntry[] entries) throws WriteAccessException {
return null; return null;
} }
@Override
public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException { public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException {
} }
@Override
public void removeExternalSettings() throws WriteAccessException { public void removeExternalSettings() throws WriteAccessException {
} }
@Override
public ICBuildSetting getBuildSetting() { public ICBuildSetting getBuildSetting() {
return null; return null;
} }
@Override
public ICdtVariablesContributor getBuildVariablesContributor() { public ICdtVariablesContributor getBuildVariablesContributor() {
return null; return null;
} }
@Override
public Object getSessionProperty(QualifiedName name) { public Object getSessionProperty(QualifiedName name) {
return null; return null;
} }
@Override
public void setSessionProperty(QualifiedName name, Object value) { public void setSessionProperty(QualifiedName name, Object value) {
} }
@Override
public void setName(String name) throws WriteAccessException { public void setName(String name) throws WriteAccessException {
} }
@Override
public ICConfigExtensionReference[] get(String extensionPointID) { public ICConfigExtensionReference[] get(String extensionPointID) {
return null; return null;
} }
@Override
public ICConfigExtensionReference create(String extensionPoint, String extension) throws CoreException { public ICConfigExtensionReference create(String extensionPoint, String extension) throws CoreException {
return null; return null;
} }
@Override
public void remove(ICConfigExtensionReference ext) throws CoreException { public void remove(ICConfigExtensionReference ext) throws CoreException {
} }
@Override
public void remove(String extensionPoint) throws CoreException { public void remove(String extensionPoint) throws CoreException {
} }
@Override
public boolean isPreferenceConfiguration() { public boolean isPreferenceConfiguration() {
return false; return false;
} }
@Override
public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) { public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) {
return null; return null;
} }
@Override
public void setExternalSettingsProviderIds(String[] ids) { public void setExternalSettingsProviderIds(String[] ids) {
} }
@Override
public String[] getExternalSettingsProviderIds() { public String[] getExternalSettingsProviderIds() {
return null; return null;
} }
@Override
public void updateExternalSettingsProviders(String[] ids) throws WriteAccessException { public void updateExternalSettingsProviders(String[] ids) throws WriteAccessException {
} }
@Override
public CConfigurationStatus getConfigurationStatus() { public CConfigurationStatus getConfigurationStatus() {
return null; return null;
} }
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers) {
}
public List<ILanguageSettingsProvider> getLanguageSettingProviders() {
return null;
}
} }
} }

View file

@ -0,0 +1,46 @@
/*******************************************************************************
* Copyright (c) 2011, 2011 Andrew Gvozdev and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers;
import java.util.List;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
/**
* Interface to express ability (of a configuration description) to handle Language Settings
* Providers.
* @see ILanguageSettingsProvider
*
*/
public interface ILanguageSettingsProvidersKeeper {
/**
* Sets the list of language settings providers. Language settings providers are
* used to supply language settings {@link ICLanguageSettingEntry} such as include paths
* or preprocessor macros.
*
* @param providers the list of providers to assign to the owner (configuration description).
* This method clones the internal list or otherwise ensures immutability of the internal
* list before actual addition to the project model.
* That is due to TODO - very important reason but I forgot why by now.
*/
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers);
/**
* Returns the list of language settings providers. Language settings providers are
* used to supply language settings {@link ICLanguageSettingEntry} such as include paths
* or preprocessor macros.
*
* @return the list of providers to assign to the owner (configuration description). This
* returns immutable list. Use {@link #setLanguageSettingProviders(List)} to change.
* This method does not return {@code null}.
*/
public List<ILanguageSettingsProvider> getLanguageSettingProviders();
}

View file

@ -21,23 +21,26 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
/** /**
* This temporary class keeps the utility methods being looking for better home * This temporary class keeps the utility methods being looking for better home.
* Checking if any Language Settings Provider has custom entries for the resource.
*/ */
public class LanguageSettingsManager_TBD { public class LanguageSettingsManager_TBD {
public static boolean isCustomizedResource(ICConfigurationDescription cfgDescription, IResource rc) { public static boolean isCustomizedResource(ICConfigurationDescription cfgDescription, IResource rc) {
if (rc instanceof IProject) if (rc instanceof IProject)
return false; return false;
for (ILanguageSettingsProvider provider: cfgDescription.getLanguageSettingProviders()) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
if (provider instanceof ILanguageSettingsBroadcastingProvider) { for (ILanguageSettingsProvider provider: ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()) {
for (String languageId : LanguageSettingsManager.getLanguages(rc, cfgDescription)) { if (provider instanceof ILanguageSettingsBroadcastingProvider) {
List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId); for (String languageId : LanguageSettingsManager.getLanguages(rc, cfgDescription)) {
if (list!=null) { List<ICLanguageSettingEntry> list = provider.getSettingEntries(cfgDescription, rc, languageId);
// TODO - check default or check parent? if (list!=null) {
List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(null, null, languageId); // TODO - check default or check parent?
// != is OK here due as the equal lists will have the same reference in WeakHashSet List<ICLanguageSettingEntry> listDefault = provider.getSettingEntries(null, null, languageId);
if (list != listDefault) // != is OK here due as the equal lists will have the same reference in WeakHashSet
return true; if (list != listDefault)
return true;
}
} }
} }
} }

View file

@ -86,10 +86,12 @@ public class ScannerDiscoveryLegacySupport {
* which is not intended to be referenced by clients. * which is not intended to be referenced by clients.
*/ */
public static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) { public static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) {
List<ILanguageSettingsProvider> lsProviders = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider lsp : lsProviders) { List<ILanguageSettingsProvider> lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (MBS_LANGUAGE_SETTINGS_PROVIDER.equals(lsp.getId())) { for (ILanguageSettingsProvider lsp : lsProviders) {
return true; if (MBS_LANGUAGE_SETTINGS_PROVIDER.equals(lsp.getId())) {
return true;
}
} }
} }
return false; return false;

View file

@ -10,11 +10,9 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core.settings.model; package org.eclipse.cdt.core.settings.model;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData; import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationDataProvider; import org.eclipse.cdt.core.settings.model.extension.CConfigurationDataProvider;
@ -389,31 +387,4 @@ public interface ICConfigurationDescription extends ICSettingContainer, ICSettin
void updateExternalSettingsProviders(String[] ids) throws WriteAccessException; void updateExternalSettingsProviders(String[] ids) throws WriteAccessException;
CConfigurationStatus getConfigurationStatus(); CConfigurationStatus getConfigurationStatus();
/**
* Sets the list of language settings providers. Language settings providers are
* used to supply language settings {@link ICLanguageSettingEntry} such as include paths
* or preprocessor macros.
*
* @param providers the list of providers to assign to the configuration description.
* Warning: the providers will be cloned before actual addition to the project model
* due to TODO - very important reason but I forgot why by now.
*
* @since 6.0
*/
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers);
/**
* Returns the list of language settings providers. Language settings providers are
* used to supply language settings {@link ICLanguageSettingEntry} such as include paths
* or preprocessor macros.
*
* @return the list of providers to assign to the configuration description. This
* returns immutable list. Use {@link #setLanguageSettingProviders(List)} to change.
* This method does not return {@code null}.
*
* @since 6.0
*/
public List<ILanguageSettingsProvider> getLanguageSettingProviders();
} }

View file

@ -23,6 +23,7 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeE
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsChangeListener; 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.ILanguageSettingsEditableProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsStorage; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsStorage;
@ -358,13 +359,15 @@ projects:
if (prjDescription != null) { if (prjDescription != null) {
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
for (ICConfigurationDescription cfgDescription : cfgDescriptions) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
for (ILanguageSettingsProvider provider : cfgDescription.getLanguageSettingProviders()) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
if (isWorkspaceProvider(provider) && serializableIds.contains(provider.getId())) { for (ILanguageSettingsProvider provider : ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()) {
LanguageSettingsChangeEvent event = new LanguageSettingsChangeEvent(prjDescription); if (isWorkspaceProvider(provider) && serializableIds.contains(provider.getId())) {
if (event.getConfigurationDescriptionIds().length > 0) { LanguageSettingsChangeEvent event = new LanguageSettingsChangeEvent(prjDescription);
events.add(event); if (event.getConfigurationDescriptionIds().length > 0) {
events.add(event);
}
continue projects;
} }
continue projects;
} }
} }
} }
@ -485,12 +488,15 @@ projects:
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
for (ICConfigurationDescription cfgDescription : cfgDescriptions) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
if (!(cfgDescription instanceof ILanguageSettingsProvidersKeeper))
continue;
Element elementConfiguration = XmlUtil.appendElement(projectElementPrjStore, ELEM_CONFIGURATION, new String[] { Element elementConfiguration = XmlUtil.appendElement(projectElementPrjStore, ELEM_CONFIGURATION, new String[] {
LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(), LanguageSettingsExtensionManager.ATTR_ID, cfgDescription.getId(),
LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(), LanguageSettingsExtensionManager.ATTR_NAME, cfgDescription.getName(),
}); });
Element elementConfigurationWsp = null; Element elementConfigurationWsp = null;
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (providers.size()>0) { if (providers.size()>0) {
Element elementExtension = XmlUtil.appendElement(elementConfiguration, ELEM_EXTENSION, new String[] { Element elementExtension = XmlUtil.appendElement(elementConfiguration, ELEM_EXTENSION, new String[] {
ATTR_POINT, LanguageSettingsExtensionManager.PROVIDER_EXTENSION_FULL_ID}); ATTR_POINT, LanguageSettingsExtensionManager.PROVIDER_EXTENSION_FULL_ID});
@ -656,8 +662,8 @@ projects:
} }
ICConfigurationDescription cfgDescription = prjDescription.getConfigurationById(cfgId); ICConfigurationDescription cfgDescription = prjDescription.getConfigurationById(cfgId);
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
if (cfgDescription instanceof IInternalCCfgInfo) { if (cfgDescription instanceof IInternalCCfgInfo) {
try { try {
((IInternalCCfgInfo) cfgDescription).getSpecSettings().dropDelta(); ((IInternalCCfgInfo) cfgDescription).getSpecSettings().dropDelta();
@ -773,11 +779,11 @@ projects:
// Already existing legacy projects // Already existing legacy projects
ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations(); ICConfigurationDescription[] cfgDescriptions = prjDescription.getConfigurations();
for (ICConfigurationDescription cfgDescription : cfgDescriptions) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(2); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(2);
ILanguageSettingsProvider providerMBS = getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER); ILanguageSettingsProvider providerMBS = getWorkspaceProvider(ScannerDiscoveryLegacySupport.MBS_LANGUAGE_SETTINGS_PROVIDER);
providers.add(providerMBS); providers.add(providerMBS);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
} }
} }
@ -840,17 +846,19 @@ projects:
if (prjDescription != null) { if (prjDescription != null) {
List<ILanguageSettingsProvider> prjProviders = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> prjProviders = new ArrayList<ILanguageSettingsProvider>();
for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) { for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) {
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider provider : providers) { List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) { for (ILanguageSettingsProvider provider : providers) {
if (isObjectInTheList(prjProviders, provider)) { if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Inconsistent state, duplicate LSP in project description " if (isObjectInTheList(prjProviders, provider)) {
+ "[" + System.identityHashCode(provider) + "] " IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, "Inconsistent state, duplicate LSP in project description "
+ provider); + "[" + System.identityHashCode(provider) + "] "
CoreException e = new CoreException(status); + provider);
CCorePlugin.log(e); CoreException e = new CoreException(status);
CCorePlugin.log(e);
}
prjProviders.add(provider);
} }
prjProviders.add(provider);
} }
} }
} }
@ -883,12 +891,14 @@ projects:
List<ICListenerAgent> listeners = new ArrayList<ICListenerAgent>(); List<ICListenerAgent> listeners = new ArrayList<ICListenerAgent>();
if (prjDescription != null) { if (prjDescription != null) {
for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) { for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) {
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
for (ILanguageSettingsProvider provider : providers) { List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (provider instanceof ICListenerAgent) { for (ILanguageSettingsProvider provider : providers) {
ICListenerAgent listener = (ICListenerAgent) provider; if (provider instanceof ICListenerAgent) {
if (!isObjectInTheList(listeners, listener)) { ICListenerAgent listener = (ICListenerAgent) provider;
listeners.add(listener); if (!isObjectInTheList(listeners, listener)) {
listeners.add(listener);
}
} }
} }
} }
@ -914,11 +924,13 @@ projects:
List<ListenerAssociation> associations = new ArrayList<ListenerAssociation>(); List<ListenerAssociation> associations = new ArrayList<ListenerAssociation>();
if (prjDescription != null) { if (prjDescription != null) {
for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) { for (ICConfigurationDescription cfgDescription : prjDescription.getConfigurations()) {
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ICListenerAgent> listeners = selectListeners(providers); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ICListenerAgent listener : listeners) { List<ICListenerAgent> listeners = selectListeners(providers);
if (!isListenerInTheListOfAssociations(associations, listener)) { for (ICListenerAgent listener : listeners) {
associations.add(new ListenerAssociation(listener, cfgDescription)); if (!isListenerInTheListOfAssociations(associations, listener)) {
associations.add(new ListenerAssociation(listener, cfgDescription));
}
} }
} }
} }
@ -1210,10 +1222,14 @@ projects:
private static List<ICLanguageSettingEntry> getSettingEntriesByKind(ICConfigurationDescription cfgDescription, private static List<ICLanguageSettingEntry> getSettingEntriesByKind(ICConfigurationDescription cfgDescription,
IResource rc, String languageId, int kind, boolean checkLocality, boolean isLocal) { IResource rc, String languageId, int kind, boolean checkLocality, boolean isLocal) {
if (!(cfgDescription instanceof ILanguageSettingsProvidersKeeper)) {
return null;
}
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
List<String> alreadyAdded = new ArrayList<String>(); List<String> alreadyAdded = new ArrayList<String>();
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider provider: providers) { for (ILanguageSettingsProvider provider: providers) {
List<ICLanguageSettingEntry> providerEntries = getSettingEntriesUpResourceTree(provider, cfgDescription, rc, languageId); List<ICLanguageSettingEntry> providerEntries = getSettingEntriesUpResourceTree(provider, cfgDescription, rc, languageId);
for (ICLanguageSettingEntry entry : providerEntries) { for (ICLanguageSettingEntry entry : providerEntries) {

View file

@ -19,6 +19,7 @@ import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus; import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting; import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference; import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
@ -51,7 +52,8 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.QualifiedName; import org.eclipse.core.runtime.QualifiedName;
public class CConfigurationDescription extends CDataProxyContainer implements ICConfigurationDescription, IProxyFactory, IInternalCCfgInfo { public class CConfigurationDescription extends CDataProxyContainer
implements ICConfigurationDescription, IProxyFactory, IInternalCCfgInfo, ILanguageSettingsProvidersKeeper {
private CfgProxyCache fCache; private CfgProxyCache fCache;
// private ProxyProvider fFileProxyProvider; // private ProxyProvider fFileProxyProvider;
// private ProxyProvider fFolderProxyProvider; // private ProxyProvider fFolderProxyProvider;

View file

@ -17,6 +17,7 @@ import java.util.Map;
import org.eclipse.cdt.core.cdtvariables.ICdtVariable; import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus; import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting; import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference; import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
@ -77,7 +78,7 @@ import org.eclipse.core.runtime.QualifiedName;
* reference fBaseDescription gets set to null. * reference fBaseDescription gets set to null.
*/ */
public class CConfigurationDescriptionCache extends CDefaultConfigurationData public class CConfigurationDescriptionCache extends CDefaultConfigurationData
implements ICConfigurationDescription, IInternalCCfgInfo, ICachedData { implements ICConfigurationDescription, IInternalCCfgInfo, ILanguageSettingsProvidersKeeper, ICachedData {
private CProjectDescription fParent; private CProjectDescription fParent;
private PathSettingsContainer fPathSettingContainer = PathSettingsContainer.createRootContainer(); private PathSettingsContainer fPathSettingContainer = PathSettingsContainer.createRootContainer();
private ResourceDescriptionHolder fRcHolder = new ResourceDescriptionHolder(fPathSettingContainer, true); private ResourceDescriptionHolder fRcHolder = new ResourceDescriptionHolder(fPathSettingContainer, true);

View file

@ -51,6 +51,7 @@ import javax.xml.transform.stream.StreamResult;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta; import org.eclipse.cdt.core.model.ICElementDelta;
@ -1571,9 +1572,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
CCorePlugin.log(e); CCorePlugin.log(e);
} }
List<ILanguageSettingsProvider> newLSProviders = newCfg.getLanguageSettingProviders(); List<ILanguageSettingsProvider> newLSProviders = null;
List<ILanguageSettingsProvider> oldLSProviders = oldCfg.getLanguageSettingProviders(); if (newCfg instanceof ILanguageSettingsProvidersKeeper)
if(!newLSProviders.equals(oldLSProviders)) newLSProviders = ((ILanguageSettingsProvidersKeeper) newCfg).getLanguageSettingProviders();
List<ILanguageSettingsProvider> oldLSProviders = null;
if (oldCfg instanceof ILanguageSettingsProvidersKeeper)
oldLSProviders = ((ILanguageSettingsProvidersKeeper) oldCfg).getLanguageSettingProviders();
if(newLSProviders != oldLSProviders && (newLSProviders == null || !newLSProviders.equals(oldLSProviders)))
delta.addChangeFlags(ICDescriptionDelta.LANGUAGE_SETTINGS_PROVIDERS); delta.addChangeFlags(ICDescriptionDelta.LANGUAGE_SETTINGS_PROVIDERS);
calculateCfgExtSettingsDelta(delta); calculateCfgExtSettingsDelta(delta);

View file

@ -14,11 +14,9 @@ package org.eclipse.cdt.internal.core.settings.model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor; import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus; import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting; import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference; import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
@ -639,17 +637,4 @@ public class MultiConfigDescription extends MultiItemsHolder implements
fCfgs[i].removeStorage(id); fCfgs[i].removeStorage(id);
} }
@Override
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers) {
if (DEBUG)
System.out.println("Bad multi access: MultiConfigDescription.setLanguageSettingProviders()"); //$NON-NLS-1$
}
@Override
public List<ILanguageSettingsProvider> getLanguageSettingProviders() {
if (DEBUG)
System.out.println("Bad multi access: MultiConfigDescription.getLanguageSettingProviders()"); //$NON-NLS-1$
return null;
}
} }

View file

@ -45,6 +45,7 @@ import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsBroadcastingProvider; import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsBroadcastingProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider; 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.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
@ -391,9 +392,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable(); ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
for (ICConfigurationDescription cfgDescription : cfgDescriptions) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
String cfgId = cfgDescription.getId(); String cfgId = cfgDescription.getId();
List<ILanguageSettingsProvider> initialProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
initialProvidersMap.put(cfgId, initialProviders); initialProvidersMap.put(cfgId, initialProviders);
} }
} }
@ -740,13 +741,13 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersMap.get(cfgDescription.getId()); List<ILanguageSettingsProvider> initialProviders = initialProvidersMap.get(cfgDescription.getId());
if (initialProviders.contains(selectedProvider)) { if (initialProviders.contains(selectedProvider)) {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(cfgDescription.getLanguageSettingProviders()); List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
int pos = providers.indexOf(selectedProvider); int pos = providers.indexOf(selectedProvider);
if (pos>=0) { if (pos>=0) {
try { try {
selectedProvider = selectedProvider.clone(); selectedProvider = selectedProvider.clone();
providers.set(pos, selectedProvider); providers.set(pos, selectedProvider);
cfgDescription.setLanguageSettingProviders(providers); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
CUIPlugin.log("Internal Error: cannot clone provider "+selectedProvider.getId(), e); CUIPlugin.log("Internal Error: cannot clone provider "+selectedProvider.getId(), e);
} }
@ -858,8 +859,8 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (currentLanguageId!=null) { if (currentLanguageId!=null) {
IResource rc = getResource(); IResource rc = getResource();
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (rc!=null && cfgDescription!=null) { if (rc != null && cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> cfgProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> cfgProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider cfgProvider : cfgProviders) { for (ILanguageSettingsProvider cfgProvider : cfgProviders) {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(cfgProvider); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(cfgProvider);
if (rawProvider instanceof LanguageSettingsBaseProvider) { if (rawProvider instanceof LanguageSettingsBaseProvider) {
@ -958,10 +959,13 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
// However for the performance reasons for resource decorators where the same logic is used // However for the performance reasons for resource decorators where the same logic is used
// we use null for resetting file/folder resource which should be correct in most cases. // we use null for resetting file/folder resource which should be correct in most cases.
// Count that as a feature. // Count that as a feature.
boolean changed = false;
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (!(cfgDescription instanceof ILanguageSettingsProvidersKeeper))
return;
boolean changed = false;
IResource rc = getResource(); IResource rc = getResource();
List<ILanguageSettingsProvider> oldProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> oldProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(oldProviders.size()); List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(oldProviders.size());
providers: for (ILanguageSettingsProvider provider : oldProviders) { providers: for (ILanguageSettingsProvider provider : oldProviders) {
@ -992,7 +996,7 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
newProviders.add(provider); newProviders.add(provider);
} }
if (changed) { if (changed) {
cfgDescription.setLanguageSettingProviders(newProviders); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(newProviders);
// updateTreeEntries(); // updateTreeEntries();
// updateData(getResDesc()); // updateData(getResDesc());
List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageId); List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageId);
@ -1007,15 +1011,20 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
ICConfigurationDescription srcCfgDescription = srcRcDescription.getConfiguration(); ICConfigurationDescription srcCfgDescription = srcRcDescription.getConfiguration();
ICConfigurationDescription destCfgDescription = destRcDescription.getConfiguration(); ICConfigurationDescription destCfgDescription = destRcDescription.getConfiguration();
List<ILanguageSettingsProvider> providers = srcCfgDescription.getLanguageSettingProviders(); if (srcCfgDescription instanceof ILanguageSettingsProvidersKeeper
destCfgDescription.setLanguageSettingProviders(providers); && destCfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) srcCfgDescription).getLanguageSettingProviders();
((ILanguageSettingsProvidersKeeper) destCfgDescription).setLanguageSettingProviders(providers);
}
} }
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
ICConfigurationDescription sd = srcRcDescription.getConfiguration(); ICConfigurationDescription sd = srcRcDescription.getConfiguration();
ICConfigurationDescription dd = destRcDescription.getConfiguration(); ICConfigurationDescription dd = destRcDescription.getConfiguration();
List<ILanguageSettingsProvider> newProviders = sd.getLanguageSettingProviders(); if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
dd.setLanguageSettingProviders(newProviders); List<ILanguageSettingsProvider> newProviders = ((ILanguageSettingsProvidersKeeper) sd).getLanguageSettingProviders();
((ILanguageSettingsProvidersKeeper) dd).setLanguageSettingProviders(newProviders);
}
} }
performOK(); performOK();

View file

@ -47,6 +47,7 @@ import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider; 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.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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager_TBD; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager_TBD;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider;
@ -195,8 +196,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
return null; return null;
ICConfigurationDescription cfgDescription = getResDesc().getConfiguration(); ICConfigurationDescription cfgDescription = getResDesc().getConfiguration();
return cfgDescription; return cfgDescription;
} }
/** /**
* Shortcut for getting the currently selected provider. * Shortcut for getting the currently selected provider.
@ -216,9 +217,9 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (page.isForProject()) { if (page.isForProject()) {
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable(); ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
for (ICConfigurationDescription cfgDescription : cfgDescriptions) { for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
String cfgId = cfgDescription.getId(); String cfgId = cfgDescription.getId();
List<ILanguageSettingsProvider> initialProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
initialProvidersByCfg.put(cfgId, initialProviders); initialProvidersByCfg.put(cfgId, initialProviders);
} }
} }
@ -371,11 +372,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
cfgDescription = getConfigurationDescription(); cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(cfgDescription.getLanguageSettingProviders()); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
pos = getProviderIndex(newProvider.getId(), cfgProviders); List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
cfgProviders.set(pos, newProvider); pos = getProviderIndex(newProvider.getId(), cfgProviders);
cfgDescription.setLanguageSettingProviders(cfgProviders); cfgProviders.set(pos, newProvider);
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0])); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders);
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
}
} }
refreshItem(newProvider); refreshItem(newProvider);
} }
@ -479,8 +482,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
tableProviders.setSelection(pos); tableProviders.setSelection(pos);
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> cfgProviders = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> cfgProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0])); tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
} }
@ -509,8 +512,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
List<ILanguageSettingsProvider> providers; List<ILanguageSettingsProvider> providers;
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (cfgDescription!=null) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
providers = new ArrayList<ILanguageSettingsProvider>(cfgDescription.getLanguageSettingProviders()); providers = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
for (ILanguageSettingsProvider provider : providers) { for (ILanguageSettingsProvider provider : providers) {
idsList.add(provider.getId()); idsList.add(provider.getId());
} }
@ -640,14 +643,16 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
providers.add(provider); providers.add(provider);
} }
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
cfgDescription.setLanguageSettingProviders(providers); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
if (selectedElement!=null) { if (selectedElement!=null) {
tableProvidersViewer.update(selectedElement, null); tableProvidersViewer.update(selectedElement, null);
if (selectedElement instanceof ILanguageSettingsProvider) { if (selectedElement instanceof ILanguageSettingsProvider) {
ILanguageSettingsProvider selectedProvider = (ILanguageSettingsProvider) selectedElement; ILanguageSettingsProvider selectedProvider = (ILanguageSettingsProvider) selectedElement;
initializeOptionsPage(selectedProvider, cfgDescription); initializeOptionsPage(selectedProvider, cfgDescription);
displaySelectedOptionPage(); displaySelectedOptionPage();
}
} }
} }
} }
@ -865,18 +870,20 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (page.isForProject()) { if (page.isForProject()) {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(cfgDescription.getLanguageSettingProviders()); if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
boolean atLeastOneChanged = false; List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
for (int i=0;i<cfgProviders.size();i++) { boolean atLeastOneChanged = false;
ILanguageSettingsProvider provider = cfgProviders.get(i); for (int i=0;i<cfgProviders.size();i++) {
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager_TBD.isEqualExtensionProvider(provider)) { ILanguageSettingsProvider provider = cfgProviders.get(i);
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId()); if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager_TBD.isEqualExtensionProvider(provider)) {
cfgProviders.set(i, extProvider); ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId());
atLeastOneChanged = true; cfgProviders.set(i, extProvider);
atLeastOneChanged = true;
}
}
if (atLeastOneChanged) {
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders);
} }
}
if (atLeastOneChanged) {
cfgDescription.setLanguageSettingProviders(cfgProviders);
} }
} else if (page.isForPrefs()) { } else if (page.isForPrefs()) {
@ -914,22 +921,26 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
ICConfigurationDescription srcCfgDescription = srcRcDescription.getConfiguration(); ICConfigurationDescription srcCfgDescription = srcRcDescription.getConfiguration();
ICConfigurationDescription destCfgDescription = destRcDescription.getConfiguration(); ICConfigurationDescription destCfgDescription = destRcDescription.getConfiguration();
List<ILanguageSettingsProvider> destProviders = new ArrayList<ILanguageSettingsProvider>(); if (srcCfgDescription instanceof ILanguageSettingsProvidersKeeper
&& destCfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> srcProviders = srcCfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> destProviders = new ArrayList<ILanguageSettingsProvider>();
for (ILanguageSettingsProvider pro : srcProviders) { List<ILanguageSettingsProvider> srcProviders = ((ILanguageSettingsProvidersKeeper) srcCfgDescription).getLanguageSettingProviders();
// TODO: clone for (ILanguageSettingsProvider pro : srcProviders) {
destProviders.add(pro); // TODO: clone
destProviders.add(pro);
}
((ILanguageSettingsProvidersKeeper) destCfgDescription).setLanguageSettingProviders(destProviders);
} }
destCfgDescription.setLanguageSettingProviders(destProviders);
} }
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
ICConfigurationDescription sd = srcRcDescription.getConfiguration(); ICConfigurationDescription sd = srcRcDescription.getConfiguration();
ICConfigurationDescription dd = destRcDescription.getConfiguration(); ICConfigurationDescription dd = destRcDescription.getConfiguration();
List<ILanguageSettingsProvider> newProviders = sd.getLanguageSettingProviders(); if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
dd.setLanguageSettingProviders(newProviders); List<ILanguageSettingsProvider> newProviders = ((ILanguageSettingsProvidersKeeper) sd).getLanguageSettingProviders();
((ILanguageSettingsProvidersKeeper) dd).setLanguageSettingProviders(newProviders);
}
} }
performOK(); performOK();
@ -942,14 +953,15 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
ICResourceDescription rcDesc = getResDesc(); ICResourceDescription rcDesc = getResDesc();
IResource rc = getResource(); IResource rc = getResource();
ICConfigurationDescription cfgDescription = rcDesc.getConfiguration(); ICConfigurationDescription cfgDescription = rcDesc.getConfiguration();
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> destProviders = new ArrayList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> destProviders = new ArrayList<ILanguageSettingsProvider>();
List<ILanguageSettingsProvider> providers = cfgDescription.getLanguageSettingProviders(); List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider pro : providers) { for (ILanguageSettingsProvider pro : providers) {
// TODO: clone // TODO: clone
destProviders.add(pro); destProviders.add(pro);
}
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(destProviders);
} }
cfgDescription.setLanguageSettingProviders(destProviders);
} }
// Build Settings page // Build Settings page