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

Cosmetics/JavaDoc.

This commit is contained in:
Andrew Gvozdev 2013-04-22 12:19:42 -04:00
parent 53f251ec84
commit a6f057199a
5 changed files with 314 additions and 344 deletions

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2010 Intel Corporation and others. * Copyright (c) 2007, 2013 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -17,8 +17,8 @@ import org.eclipse.cdt.core.settings.model.extension.impl.CDefaultConfigurationD
import org.eclipse.cdt.core.settings.model.util.CDataSerializer; import org.eclipse.cdt.core.settings.model.util.CDataSerializer;
import org.eclipse.cdt.core.settings.model.util.UserAndDiscoveredEntryDataSerializer; import org.eclipse.cdt.core.settings.model.util.UserAndDiscoveredEntryDataSerializer;
import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoCalculator; import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoCalculator;
import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoProcessor;
import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoCalculator.DiscoveredSettingInfo; import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoCalculator.DiscoveredSettingInfo;
import org.eclipse.cdt.make.internal.core.scannerconfig.CDataDiscoveredInfoProcessor;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
@ -40,46 +40,42 @@ public class MakeConfigurationDataProvider extends CDefaultConfigurationDataProv
protected String getStorageId() { protected String getStorageId() {
return STORAGE_ID; return STORAGE_ID;
} }
@Override
public CConfigurationData applyConfiguration(
ICConfigurationDescription des,
ICConfigurationDescription baseDescription,
CConfigurationData base, IProgressMonitor monitor)
throws CoreException {
CConfigurationData result = super.applyConfiguration(des, baseDescription, base, monitor);
if(!des.isPreferenceConfiguration())
updateDiscoveredInfo(des.getProjectDescription().getProject(), result);
return result;
}
@Override @Override
public CConfigurationData loadConfiguration(ICConfigurationDescription des, public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
IProgressMonitor monitor) throws CoreException { IProgressMonitor monitor) throws CoreException {
CConfigurationData result = super.loadConfiguration(des, monitor);
if(!des.isPreferenceConfiguration()) CConfigurationData result = super.applyConfiguration(cfgDescription, baseCfgDescription, baseData, monitor);
updateDiscoveredInfo(des.getProjectDescription().getProject(), result); if(!cfgDescription.isPreferenceConfiguration())
updateDiscoveredInfo(cfgDescription.getProjectDescription().getProject(), result);
return result; return result;
} }
protected void updateDiscoveredInfo(IProject project, CConfigurationData cfgData){ @Override
public CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, IProgressMonitor monitor) throws CoreException {
CConfigurationData result = super.loadConfiguration(cfgDescription, monitor);
if(!cfgDescription.isPreferenceConfiguration())
updateDiscoveredInfo(cfgDescription.getProjectDescription().getProject(), result);
return result;
}
protected void updateDiscoveredInfo(IProject project, CConfigurationData cfgData) {
updateDiscoveredInfo(project, cfgData, getInfoCalculator(), getInfoProcessor()); updateDiscoveredInfo(project, cfgData, getInfoCalculator(), getInfoProcessor());
} }
public static void updateDiscoveredInfo(IProject project, CConfigurationData cfgData, public static void updateDiscoveredInfo(IProject project, CConfigurationData cfgData,
CDataDiscoveredInfoCalculator calculator, CDataDiscoveredInfoCalculator calculator, CDataDiscoveredInfoProcessor processor) {
CDataDiscoveredInfoProcessor processor){
DiscoveredSettingInfo dsInfo = calculator.getSettingInfos(project, cfgData); DiscoveredSettingInfo dsInfo = calculator.getSettingInfos(project, cfgData);
processor.applyDiscoveredInfo(cfgData, dsInfo); processor.applyDiscoveredInfo(cfgData, dsInfo);
} }
protected CDataDiscoveredInfoProcessor getInfoProcessor(){ protected CDataDiscoveredInfoProcessor getInfoProcessor( ){
return MakeDiscoveredInfoProcessor.getDefault(); return MakeDiscoveredInfoProcessor.getDefault();
} }
protected CDataDiscoveredInfoCalculator getInfoCalculator(){ protected CDataDiscoveredInfoCalculator getInfoCalculator() {
return CDataDiscoveredInfoCalculator.getDefault(); return CDataDiscoveredInfoCalculator.getDefault();
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2012 Intel Corporation and others. * Copyright (c) 2007, 2013 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -102,7 +102,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
try { try {
IProjectDescription eDes = fProject.getDescription(); IProjectDescription eDes = fProject.getDescription();
if(BuilderFactory.applyBuilder(eDes, fBuilder) == BuilderFactory.CMD_CHANGED) { if(BuilderFactory.applyBuilder(eDes, fBuilder) == BuilderFactory.CMD_CHANGED) {
fProject.setDescription(eDes, monitor); fProject.setDescription(eDes, monitor);
} }
} catch (Exception e){ } catch (Exception e){
ManagedBuilderCorePlugin.log(e); ManagedBuilderCorePlugin.log(e);
@ -110,9 +110,11 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
} }
static BuildConfigurationData writeConfiguration(ICConfigurationDescription cfgDescription,
BuildConfigurationData base) throws CoreException { static BuildConfigurationData writeConfiguration(ICConfigurationDescription cfgDescription, BuildConfigurationData baseData)
BuildConfigurationData appliedCfg = base; throws CoreException {
BuildConfigurationData appliedCfg = baseData;
ICStorageElement rootElement = cfgDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true); ICStorageElement rootElement = cfgDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true);
rootElement.clear(); rootElement.clear();
rootElement.setAttribute(VERSION_ATTRIBUTE, ManagedBuildManager.getVersion().toString()); rootElement.setAttribute(VERSION_ATTRIBUTE, ManagedBuildManager.getVersion().toString());
@ -132,12 +134,10 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return appliedCfg; return appliedCfg;
} }
protected CConfigurationData applyPreferences( protected CConfigurationData applyPreferences(ICConfigurationDescription cfgDescription, CConfigurationData baseData) throws CoreException {
ICConfigurationDescription cfgDescription, CConfigurationData base) throws CoreException{ BuildConfigurationData appliedCfg = writeConfiguration(cfgDescription, (BuildConfigurationData)baseData);
BuildConfigurationData appliedCfg = writeConfiguration(cfgDescription, (BuildConfigurationData)base); IConfiguration cfg = ((BuildConfigurationData)baseData).getConfiguration();
IConfiguration cfg = ((BuildConfigurationData)base).getConfiguration();
try { try {
CfgScannerConfigInfoFactory2.savePreference(cfg); CfgScannerConfigInfoFactory2.savePreference(cfg);
} catch (CoreException e){ } catch (CoreException e){
@ -148,17 +148,15 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
@Override @Override
public CConfigurationData applyConfiguration( public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription cfgDescription, ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
ICConfigurationDescription baseCfgDescription, IModificationContext context, IProgressMonitor monitor) throws CoreException {
CConfigurationData base,
IModificationContext context,
IProgressMonitor monitor)
throws CoreException {
if(cfgDescription.isPreferenceConfiguration())
return applyPreferences(cfgDescription, base);
BuildConfigurationData baseCfgData = (BuildConfigurationData)base; if (cfgDescription.isPreferenceConfiguration()) {
return applyPreferences(cfgDescription, baseData);
}
BuildConfigurationData baseCfgData = (BuildConfigurationData)baseData;
IConfiguration baseCfg = baseCfgData.getConfiguration(); IConfiguration baseCfg = baseCfgData.getConfiguration();
BuildConfigurationData appliedCfg; BuildConfigurationData appliedCfg;
if(context.isBaseDataCached() && !baseCfg.isDirty()){ if(context.isBaseDataCached() && !baseCfg.isDirty()){
@ -208,20 +206,16 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
cfgDescription.setSessionProperty(CFG_PERSISTED_PROPERTY, Boolean.TRUE); cfgDescription.setSessionProperty(CFG_PERSISTED_PROPERTY, Boolean.TRUE);
} }
private static void writeManagedProjectInfo(ICProjectDescription des, private static void writeManagedProjectInfo(ICProjectDescription prjDescription, ManagedProject mProj) throws CoreException {
ManagedProject mProj) throws CoreException { ICStorageElement rootElement = prjDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true);
ICStorageElement rootElement = des.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true);
rootElement.clear(); rootElement.clear();
rootElement.setAttribute(VERSION_ATTRIBUTE, ManagedBuildManager.getVersion().toString()); rootElement.setAttribute(VERSION_ATTRIBUTE, ManagedBuildManager.getVersion().toString());
ICStorageElement mProjElem = rootElement.createChild(IManagedProject.MANAGED_PROJECT_ELEMENT_NAME); ICStorageElement mProjElem = rootElement.createChild(IManagedProject.MANAGED_PROJECT_ELEMENT_NAME);
mProj.serializeProjectInfo(mProjElem); mProj.serializeProjectInfo(mProjElem);
} }
protected CConfigurationData createPreferences(ICConfigurationDescription cfgDescription, CConfigurationData baseData) throws CoreException {
protected CConfigurationData createPreferences( Configuration cfg = (Configuration)((BuildConfigurationData)baseData).getConfiguration();
ICConfigurationDescription cfgDescription, CConfigurationData base)
throws CoreException {
Configuration cfg = (Configuration)((BuildConfigurationData)base).getConfiguration();
Configuration newCfg = new Configuration((ManagedProject)cfg.getManagedProject(), cfg, cfgDescription.getId(), true, true, true); Configuration newCfg = new Configuration((ManagedProject)cfg.getManagedProject(), cfg, cfgDescription.getId(), true, true, true);
newCfg.setConfigurationDescription(cfgDescription); newCfg.setConfigurationDescription(cfgDescription);
newCfg.setName(cfgDescription.getName()); newCfg.setName(cfgDescription.getName());
@ -234,12 +228,10 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
@Override @Override
public CConfigurationData createConfiguration( public CConfigurationData createConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription cfgDescription, ICConfigurationDescription baseCfgDescription, CConfigurationData base, boolean clone,
ICConfigurationDescription baseCfgDescription, IProgressMonitor monitor) throws CoreException {
CConfigurationData base, boolean clone,
IProgressMonitor monitor)
throws CoreException {
if(cfgDescription.isPreferenceConfiguration()) if(cfgDescription.isPreferenceConfiguration())
return createPreferences(cfgDescription, base); return createPreferences(cfgDescription, base);
@ -259,7 +251,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return newCfg.getConfigurationData(); return newCfg.getConfigurationData();
} }
public static Configuration copyCfg(Configuration cfg, ICConfigurationDescription cfgDescription){ public static Configuration copyCfg(Configuration cfg, ICConfigurationDescription cfgDescription) {
IManagedBuildInfo info = getBuildInfo(cfgDescription); IManagedBuildInfo info = getBuildInfo(cfgDescription);
ManagedProject mProj = (ManagedProject)info.getManagedProject(); ManagedProject mProj = (ManagedProject)info.getManagedProject();
@ -278,7 +270,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return newCfg; return newCfg;
} }
private static IManagedBuildInfo getBuildInfo(ICConfigurationDescription cfgDescription){ private static IManagedBuildInfo getBuildInfo(ICConfigurationDescription cfgDescription) {
ICProjectDescription projDes = cfgDescription.getProjectDescription(); ICProjectDescription projDes = cfgDescription.getProjectDescription();
IProject project = projDes.getProject(); IProject project = projDes.getProject();
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project, false); IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project, false);
@ -292,15 +284,15 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return info; return info;
} }
private static void setLoaddedBuildInfo(ICProjectDescription des, IManagedBuildInfo info){ private static void setLoaddedBuildInfo(ICProjectDescription prjDescription, IManagedBuildInfo info) {
des.setSessionProperty(BUILD_INFO_PROPERTY, info); prjDescription.setSessionProperty(BUILD_INFO_PROPERTY, info);
} }
public static ManagedBuildInfo getLoaddedBuildInfo(ICProjectDescription des){ public static ManagedBuildInfo getLoaddedBuildInfo(ICProjectDescription prjDescription) {
return (ManagedBuildInfo)des.getSessionProperty(BUILD_INFO_PROPERTY); return (ManagedBuildInfo)prjDescription.getSessionProperty(BUILD_INFO_PROPERTY);
} }
private static IManagedProject getManagedProject(ICConfigurationDescription cfgDescription, IManagedBuildInfo info){ private static IManagedProject getManagedProject(ICConfigurationDescription cfgDescription, IManagedBuildInfo info) {
IManagedProject mProj = info.getManagedProject(); IManagedProject mProj = info.getManagedProject();
if(mProj == null){ if(mProj == null){
mProj = createManagedProject(info, cfgDescription.getProjectDescription()); mProj = createManagedProject(info, cfgDescription.getProjectDescription());
@ -308,10 +300,10 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return mProj; return mProj;
} }
private static IManagedProject createManagedProject(IManagedBuildInfo info, ICProjectDescription des){ private static IManagedProject createManagedProject(IManagedBuildInfo info, ICProjectDescription prjDescription) {
IManagedProject mProj = null; IManagedProject mProj = null;
try { try {
ICStorageElement rootElem = des.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, false); ICStorageElement rootElem = prjDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, false);
if(rootElem != null){ if(rootElem != null){
String version = rootElem.getAttribute(VERSION_ATTRIBUTE); String version = rootElem.getAttribute(VERSION_ATTRIBUTE);
ICStorageElement children[] = rootElem.getChildren(); ICStorageElement children[] = rootElem.getChildren();
@ -327,26 +319,26 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
if(mProj == null){ if(mProj == null){
mProj = new ManagedProject(des); mProj = new ManagedProject(prjDescription);
info.setManagedProject(mProj); info.setManagedProject(mProj);
} }
return mProj; return mProj;
} }
public static String[] getNaturesIdsUsedOnCache(IConfiguration cfg){ public static String[] getNaturesIdsUsedOnCache(IConfiguration cfg) {
ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg);
if(cfgDescription != null) if(cfgDescription != null)
return getNaturesIdsUsedOnCache(cfgDescription); return getNaturesIdsUsedOnCache(cfgDescription);
return null; return null;
} }
public static String[] getNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription){ public static String[] getNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription) {
String[] strs = (String[])cfgDescription.getSessionProperty(NATURES_USED_ON_CACHE_PROPERTY); String[] strs = (String[])cfgDescription.getSessionProperty(NATURES_USED_ON_CACHE_PROPERTY);
return strs != null && strs.length != 0 ? (String[])strs.clone() : strs; return strs != null && strs.length != 0 ? (String[])strs.clone() : strs;
} }
public static void cacheNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription){ public static void cacheNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription) {
IProject project = cfgDescription.getProjectDescription().getProject(); IProject project = cfgDescription.getProjectDescription().getProject();
try { try {
IProjectDescription eDes = project.getDescription(); IProjectDescription eDes = project.getDescription();
@ -357,12 +349,12 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
} }
private static void setNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription, String ids[]){ private static void setNaturesIdsUsedOnCache(ICConfigurationDescription cfgDescription, String ids[]) {
ids = ids != null && ids.length != 0 ? (String[])ids.clone() : ids; ids = ids != null && ids.length != 0 ? (String[])ids.clone() : ids;
cfgDescription.setSessionProperty(NATURES_USED_ON_CACHE_PROPERTY, ids); cfgDescription.setSessionProperty(NATURES_USED_ON_CACHE_PROPERTY, ids);
} }
private Configuration load(ICConfigurationDescription cfgDescription, ManagedProject mProj, boolean isPreference) throws CoreException{ private Configuration load(ICConfigurationDescription cfgDescription, ManagedProject mProj, boolean isPreference) throws CoreException {
ICStorageElement rootElement = cfgDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true); ICStorageElement rootElement = cfgDescription.getStorage(BUILD_SYSTEM_DATA_MODULE_NAME, true);
ICStorageElement children[] = rootElement.getChildren(); ICStorageElement children[] = rootElement.getChildren();
String version = rootElement.getAttribute(VERSION_ATTRIBUTE); String version = rootElement.getAttribute(VERSION_ATTRIBUTE);
@ -378,36 +370,28 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return cfg; return cfg;
} }
protected CConfigurationData loadPreferences(ICConfigurationDescription cfgDescription) protected CConfigurationData loadPreferences(ICConfigurationDescription cfgDescription) throws CoreException {
throws CoreException {
Configuration cfg = load(cfgDescription, null, true); Configuration cfg = load(cfgDescription, null, true);
cfg = updatePreferenceOnLoad(cfg, cfgDescription); cfg = updatePreferenceOnLoad(cfg, cfgDescription);
cfg.setConfigurationDescription(cfgDescription); cfg.setConfigurationDescription(cfgDescription);
return cfg.getConfigurationData(); return cfg.getConfigurationData();
} }
public static Configuration getClearPreference(String id){ public static Configuration getClearPreference(String id) {
Configuration cfg = createEmptyPrefConfiguration(id, null); Configuration cfg = createEmptyPrefConfiguration(id, null);
cfg = adjustPreferenceConfig(cfg); cfg = adjustPreferenceConfig(cfg);
return cfg; return cfg;
} }
private static Configuration updatePreferenceOnLoad(Configuration cfg, ICConfigurationDescription cfgDescription){ private static Configuration updatePreferenceOnLoad(Configuration cfg, ICConfigurationDescription cfgDescription) {
if(cfg == null) if(cfg == null) {
cfg = createEmptyPrefConfiguration(cfgDescription.getId(), cfgDescription.getName()); cfg = createEmptyPrefConfiguration(cfgDescription.getId(), cfgDescription.getName());
}
cfg = adjustPreferenceConfig(cfg); cfg = adjustPreferenceConfig(cfg);
return cfg; return cfg;
} }
private static Configuration adjustPreferenceConfig(Configuration cfg){ private static Configuration adjustPreferenceConfig(Configuration cfg) {
LanguageManager mngr = LanguageManager.getInstance(); LanguageManager mngr = LanguageManager.getInstance();
ILanguageDescriptor dess[] = mngr.getLanguageDescriptors(); ILanguageDescriptor dess[] = mngr.getLanguageDescriptors();
Map<String, ILanguageDescriptor[]> map = mngr.getContentTypeIdToLanguageDescriptionsMap(); Map<String, ILanguageDescriptor[]> map = mngr.getContentTypeIdToLanguageDescriptionsMap();
@ -422,7 +406,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return cfg; return cfg;
} }
private static void adjustFolderInfo(IFolderInfo info, ILanguageDescriptor dess[], HashMap<Object, ILanguageDescriptor[]> map){ private static void adjustFolderInfo(IFolderInfo info, ILanguageDescriptor dess[], HashMap<Object, ILanguageDescriptor[]> map) {
IToolChain tch = info.getToolChain(); IToolChain tch = info.getToolChain();
Map<String, ILanguageDescriptor> langMap = new HashMap<String, ILanguageDescriptor>(); Map<String, ILanguageDescriptor> langMap = new HashMap<String, ILanguageDescriptor>();
for(int i = 0; i < dess.length; i++){ for(int i = 0; i < dess.length; i++){
@ -464,7 +448,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
} }
private static InputType adjustInputType(Tool tool, InputType type, ILanguageDescriptor des){ private static InputType adjustInputType(Tool tool, InputType type, ILanguageDescriptor des) {
String [] cTypeIds = des.getContentTypeIds(); String [] cTypeIds = des.getContentTypeIds();
String srcIds[] = type.getSourceContentTypeIds(); String srcIds[] = type.getSourceContentTypeIds();
String hIds[] = type.getHeaderContentTypeIds(); String hIds[] = type.getHeaderContentTypeIds();
@ -488,7 +472,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
return type; return type;
} }
private static void addTools(IToolChain tc, Map<String, ILanguageDescriptor> langMap, Map<Object, ILanguageDescriptor[]> cTypeToLangMap){ private static void addTools(IToolChain tc, Map<String, ILanguageDescriptor> langMap, Map<Object, ILanguageDescriptor[]> cTypeToLangMap ){
ITool extTool = ManagedBuildManager.getExtensionTool(PREF_TOOL_ID); ITool extTool = ManagedBuildManager.getExtensionTool(PREF_TOOL_ID);
List<ILanguageDescriptor> list = new ArrayList<ILanguageDescriptor>(langMap.values()); List<ILanguageDescriptor> list = new ArrayList<ILanguageDescriptor>(langMap.values());
ILanguageDescriptor des; ILanguageDescriptor des;
@ -521,7 +505,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
private static Configuration createEmptyPrefConfiguration(String id, String name){ private static Configuration createEmptyPrefConfiguration(String id, String name) {
Configuration extCfg = (Configuration)ManagedBuildManager.getExtensionConfiguration(PREF_CFG_ID); Configuration extCfg = (Configuration)ManagedBuildManager.getExtensionConfiguration(PREF_CFG_ID);
Configuration emptyPrefCfg = null; Configuration emptyPrefCfg = null;
if(extCfg != null){ if(extCfg != null){
@ -538,16 +522,15 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
@Override @Override
public CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, public CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, IProgressMonitor monitor) throws CoreException {
IProgressMonitor monitor) if(cfgDescription.isPreferenceConfiguration()) {
throws CoreException {
if(cfgDescription.isPreferenceConfiguration())
return loadPreferences(cfgDescription); return loadPreferences(cfgDescription);
}
IManagedBuildInfo info = getBuildInfo(cfgDescription); IManagedBuildInfo info = getBuildInfo(cfgDescription);
Configuration cfg = load(cfgDescription, (ManagedProject)info.getManagedProject(), false); Configuration cfg = load(cfgDescription, (ManagedProject)info.getManagedProject(), false);
if(cfg != null){ if(cfg != null) {
cfg.setConfigurationDescription(cfgDescription); cfg.setConfigurationDescription(cfgDescription);
info.setValid(true); info.setValid(true);
setPersistedFlag(cfgDescription); setPersistedFlag(cfgDescription);
@ -607,7 +590,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
} }
private boolean isPersistedCfg(ICConfigurationDescription cfgDescription){ private boolean isPersistedCfg(ICConfigurationDescription cfgDescription) {
return cfgDescription.getSessionProperty(CFG_PERSISTED_PROPERTY) != null; return cfgDescription.getSessionProperty(CFG_PERSISTED_PROPERTY) != null;
} }
@ -627,9 +610,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
@Override @Override
public void removeConfiguration(ICConfigurationDescription cfgDescription, public void removeConfiguration(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
CConfigurationData data,
IProgressMonitor monitor) {
IConfiguration cfg = ((BuildConfigurationData)data).getConfiguration(); IConfiguration cfg = ((BuildConfigurationData)data).getConfiguration();
ManagedBuildManager.performValueHandlerEvent(cfg, IManagedOptionValueHandler.EVENT_CLOSE); ManagedBuildManager.performValueHandlerEvent(cfg, IManagedOptionValueHandler.EVENT_CLOSE);
IManagedBuildInfo info = getBuildInfo(cfgDescription); IManagedBuildInfo info = getBuildInfo(cfgDescription);
@ -638,9 +619,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
} }
@Override @Override
public void dataCached(ICConfigurationDescription cfgDescription, public void dataCached(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
CConfigurationData data,
IProgressMonitor monitor) {
BuildConfigurationData cfgData = (BuildConfigurationData)data; BuildConfigurationData cfgData = (BuildConfigurationData)data;
((Configuration)cfgData.getConfiguration()).setConfigurationDescription(cfgDescription); ((Configuration)cfgData.getConfiguration()).setConfigurationDescription(cfgDescription);
cfgData.clearCachedData(); cfgData.clearCachedData();

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2010 Intel Corporation and others. * Copyright (c) 2007, 2013 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -11,95 +11,114 @@
package org.eclipse.cdt.core.settings.model.extension; package org.eclipse.cdt.core.settings.model.extension;
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.core.settings.model.IModificationContext; import org.eclipse.cdt.core.settings.model.IModificationContext;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
/** /**
* the class is to be implemented by the Configuration data provider contributed via * The class is to be implemented by the Configuration data provider contributed via
* a org.eclipse.cdt.core.CConfigurationDataProvider extension point * a org.eclipse.cdt.core.CConfigurationDataProvider extension point
* *
*/ */
public abstract class CConfigurationDataProvider { public abstract class CConfigurationDataProvider {
/** /**
* requests the Configuration Data to be loadded for the given ConfigurationDescription * Requests the Configuration Data to be loaded for the given ConfigurationDescription.
*/ * The method can be called in following cases:
public abstract CConfigurationData loadConfiguration(ICConfigurationDescription des, IProgressMonitor monitor) throws CoreException; * <br>
* 1. Loading configuration from external data source such as .cproject.<br>
/** * 2. Loading preference configuration defined in Preferences -> C/C++ -> New project Wizard -> Makefile Project.
* requests the Configuration Data to be created for the given ConfigurationDescription *
* The method can be called in several cases: * @param cfgDescription - configuration description being loaded.
* 1. When the new configuration is being created based upon the already existing one via * @param monitor - progress monitor.
* theICProjectDescription.createConfiguration method call
* 2. When the configuration copy (clone) is being created for the copy description
* @param des
* @param baseDescription
* @param baseData
* @param clone true indicates that the configuration copy (clone) is being created for
* the copy description.
* @param monitor
* @return {@code false} indicates that the new configuration is being created based upon the already existing one via
* theICProjectDescription.createConfiguration method call, {@code true} otherwise
* @throws CoreException
*/
public abstract CConfigurationData createConfiguration(ICConfigurationDescription des,
ICConfigurationDescription baseDescription,
CConfigurationData baseData, boolean clone,
IProgressMonitor monitor) throws CoreException;
/**
* called to notify the provider that the configuration is removed
*/
public abstract void removeConfiguration(ICConfigurationDescription des, CConfigurationData data, IProgressMonitor monitor);
/**
* the method is called in case the implementer does NOT override
* the {@link #applyConfiguration(ICConfigurationDescription, ICConfigurationDescription, CConfigurationData, IModificationContext, IProgressMonitor)}
* method. See {@link #applyConfiguration(ICConfigurationDescription, ICConfigurationDescription, CConfigurationData, IModificationContext, IProgressMonitor)}
* for detail
* *
* @throws CoreException * @throws CoreException
*/ */
public CConfigurationData applyConfiguration(ICConfigurationDescription des, public abstract CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, IProgressMonitor monitor) throws CoreException;
ICConfigurationDescription baseDescription,
CConfigurationData baseData, /**
IProgressMonitor monitor) throws CoreException{ * Requests the Configuration Data to be created for the given ConfigurationDescription.
* The method can be called in several cases:
* <br>
* 1. When the new configuration is being created based upon the already existing one via
* ICProjectDescription.createConfiguration method call.<br>
* 2. When the configuration copy (clone) is being created for the copy description.
*
* @param cfgDescription - configuration description for the configuration data being created.
* @param baseCfgDescription - configuration description for the configuration data the new data to be based upon.
* @param baseData - configuration data the new data to be based upon.
* @param clone - {@code true} indicates that the configuration copy (clone) is being created for the copy description.
* @param monitor - progress monitor.
*
* @return {@code false} indicates that the new configuration is being created based upon the already existing one via
* ICProjectDescription.createConfiguration method call, {@code true} otherwise.
*
* @throws CoreException
*/
public abstract CConfigurationData createConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
boolean clone, IProgressMonitor monitor) throws CoreException;
/**
* Called to notify the provider that the configuration is removed.
*
* @param cfgDescription - configuration description being removed.
* @param data - configuration data.
* @param monitor - progress monitor.
*/
public abstract void removeConfiguration(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor);
/**
* The method is called in case the implementer does NOT override method
* {@link #applyConfiguration(ICConfigurationDescription, ICConfigurationDescription, CConfigurationData, IModificationContext, IProgressMonitor)}.
*
* @param cfgDescription - configuration description where the configuration data are being applied to.
* @param baseCfgDescription - configuration description of the configuration data being applied.
* @param baseData - configuration data being applied.
*
* @throws CoreException
*/
public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
IProgressMonitor monitor) throws CoreException {
return baseData; return baseData;
} }
/** /**
* called during the setProjectDescription operation to notify the provider that the configuration data * Called during the setProjectDescription operation to notify the provider that the configuration data
* is being applied. * is being applied.
* Provider would typically store all the necessary data configuration during this call. * Provider would typically store all the necessary data configuration during this call.
* *
* @param des * @param cfgDescription - configuration description where the configuration data are being applied to.
* @param baseDescription * @param baseCfgDescription - configuration description of the configuration data being applied.
* @param baseData * @param baseData - configuration data being applied.
* @param context the {@link IModificationContext} allows registering workspace runnables to be run * @param context the {@link IModificationContext} allows registering workspace runnables to be run
* as a single batch workspace operation. * as a single batch workspace operation.
* If possible the runnables will be run directly in the apply context(thread) after all * If possible the runnables will be run directly in the apply context(thread) after all
* configuration datas get applied. Otherwise runnables will be run as a separate job. * configuration datas get applied. Otherwise runnables will be run as a separate job.
* This allows to perform all workspace modifications registered by different configurations * This allows to perform all workspace modifications registered by different configurations
* to be run as a single batch peration together with the workspace modifications performed by the * to be run as a single batch operation together with the workspace modifications performed by the
* ICProjectDesacription framework * {@link ICProjectDescription} framework.
* @param monitor * @param monitor - progress monitor.
* *
* @throws CoreException * @throws CoreException
*/ */
public CConfigurationData applyConfiguration(ICConfigurationDescription des, public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription baseDescription, ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
CConfigurationData baseData, IModificationContext context, IProgressMonitor monitor) throws CoreException {
IModificationContext context,
IProgressMonitor monitor) throws CoreException{ return applyConfiguration(cfgDescription, baseCfgDescription, baseData, monitor);
return applyConfiguration(des, baseDescription, baseData, monitor);
} }
/** /**
* called to notify that the configuration data was cached * Called to notify that the configuration data was cached. Implementors can do any necessary cleaning, etc.
* implementors can do any necessary cleaning, etc. * Default implementation is empty.
* Default implementation is empty *
* @param cfgDescription - configuration description which was cached.
* @param data - configuration data.
* @param monitor - progress monitor.
*/ */
public void dataCached(ICConfigurationDescription cfgDes, CConfigurationData data, IProgressMonitor monitor){ public void dataCached(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
} }
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2008 Intel Corporation and others. * Copyright (c) 2007, 2013 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -19,79 +19,70 @@ import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
public class CDefaultConfigurationDataProvider extends public class CDefaultConfigurationDataProvider extends CConfigurationDataProvider {
CConfigurationDataProvider {
private static final String DEFAULT_STORAGE_ID = "defaultConfigurationDataProvider"; //$NON-NLS-1$ private static final String DEFAULT_STORAGE_ID = "defaultConfigurationDataProvider"; //$NON-NLS-1$
@Override
public CConfigurationData applyConfiguration(
ICConfigurationDescription des,
ICConfigurationDescription baseDescription,
CConfigurationData base,
IProgressMonitor monitor)
throws CoreException {
ICStorageElement el = getStorageElement(des, true);
CDataSerializer serializer = getDataSerializer();
serializer.store(base, el);
return base;
}
@Override @Override
public CConfigurationData createConfiguration( public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription des, ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
ICConfigurationDescription baseDescription,
CConfigurationData base,
boolean clone,
IProgressMonitor monitor) throws CoreException { IProgressMonitor monitor) throws CoreException {
CDataFactory factory = getDataFactory();
return factory.createConfigurationdata(des.getId(), des.getName(), base, clone); ICStorageElement el = getStorageElement(cfgDescription, true);
CDataSerializer serializer = getDataSerializer();
serializer.store(baseData, el);
return baseData;
} }
@Override @Override
public CConfigurationData loadConfiguration(ICConfigurationDescription des, public CConfigurationData createConfiguration(ICConfigurationDescription cfgDescription,
IProgressMonitor monitor) ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
throws CoreException { boolean clone, IProgressMonitor monitor) throws CoreException {
ICStorageElement el = getStorageElement(des, false);
if(el != null){ CDataFactory factory = getDataFactory();
return factory.createConfigurationdata(cfgDescription.getId(), cfgDescription.getName(), baseData, clone);
}
@Override
public CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, IProgressMonitor monitor) throws CoreException {
ICStorageElement el = getStorageElement(cfgDescription, false);
if(el != null) {
CDataSerializer serializer = getDataSerializer(); CDataSerializer serializer = getDataSerializer();
CDataFactory factory = getDataFactory(); CDataFactory factory = getDataFactory();
try { try {
return serializer.loadConfigurationData(factory, el); return serializer.loadConfigurationData(factory, el);
} catch (CoreException e){ } catch (CoreException e) {
if(des.isPreferenceConfiguration()) if(cfgDescription.isPreferenceConfiguration())
return createPreferenceConfig(factory); return createPreferenceConfig(factory);
throw e; throw e;
} }
} else if (des.isPreferenceConfiguration()){ } else if (cfgDescription.isPreferenceConfiguration()) {
return createPreferenceConfig(getDataFactory()); return createPreferenceConfig(getDataFactory());
} }
return null; return null;
} }
@Override @Override
public void removeConfiguration(ICConfigurationDescription des, public void removeConfiguration(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
CConfigurationData data,
IProgressMonitor monitor) {
//do nothing //do nothing
} }
protected CDataFactory getDataFactory(){ protected CDataFactory getDataFactory() {
return CDataFactory.getDefault(); return CDataFactory.getDefault();
} }
protected CDataSerializer getDataSerializer(){ protected CDataSerializer getDataSerializer() {
return CDataSerializer.getDefault(); return CDataSerializer.getDefault();
} }
protected String getStorageId(){ protected String getStorageId() {
return DEFAULT_STORAGE_ID; return DEFAULT_STORAGE_ID;
} }
protected ICStorageElement getStorageElement(ICConfigurationDescription des, boolean create) throws CoreException{ protected ICStorageElement getStorageElement(ICConfigurationDescription cfgDescription, boolean create) throws CoreException {
return des.getStorage(getStorageId(), create); return cfgDescription.getStorage(getStorageId(), create);
} }
protected CConfigurationData createPreferenceConfig(CDataFactory factory){ protected CConfigurationData createPreferenceConfig(CDataFactory factory) {
return CDataUtil.createEmptyData(null, "preference", factory, true); //$NON-NLS-1$ return CDataUtil.createEmptyData(null, "preference", factory, true); //$NON-NLS-1$
} }
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2010 Intel Corporation and others. * Copyright (c) 2007, 2013 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -45,43 +45,41 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
public class PathEntryConfigurationDataProvider extends public class PathEntryConfigurationDataProvider extends CConfigurationDataProvider {
CConfigurationDataProvider {
private static PathEntryDataFactory fFactory; private static PathEntryDataFactory fFactory;
public static CDataFactory getDataFactory() {
public static CDataFactory getDataFactory(){ if(fFactory == null) {
if(fFactory == null){
fFactory = new PathEntryDataFactory(); fFactory = new PathEntryDataFactory();
} }
return fFactory; return fFactory;
} }
public PathEntryConfigurationDataProvider(){ public PathEntryConfigurationDataProvider() {
getDataFactory(); getDataFactory();
} }
private static class PathEntryFolderData extends CDefaultFolderData { private static class PathEntryFolderData extends CDefaultFolderData {
private EntryStore fStore; private EntryStore fStore;
// public PathEntryFolderData(CConfigurationData cfg, CDataFacroty factory) {
// super(cfg, factory);
// }
// public PathEntryFolderData(String id, IPath path, // public PathEntryFolderData(CConfigurationData cfg, CDataFacroty factory) {
// CConfigurationData cfg, CDataFacroty factory) { // super(cfg, factory);
// super(id, path, cfg, factory); // }
// }
// public PathEntryFolderData(String id, IPath path,
// CConfigurationData cfg, CDataFacroty factory) {
// super(id, path, cfg, factory);
// }
public PathEntryFolderData(String id, IPath path, PathEntryFolderData base, public PathEntryFolderData(String id, IPath path, PathEntryFolderData base,
CConfigurationData cfg, CDataFactory factory, boolean clone) { CConfigurationData cfgData, CDataFactory factory, boolean clone) {
super(id, path, cfg, factory); super(id, path, cfgData, factory);
if(base != null) if(base != null)
fStore = new EntryStore(base.fStore, true); fStore = new EntryStore(base.fStore, true);
else else
fStore = new EntryStore(true); fStore = new EntryStore(true);
copyDataFrom(base, clone); copyDataFrom(base, clone);
} }
} }
@ -89,45 +87,44 @@ public class PathEntryConfigurationDataProvider extends
private static class PathEntryFileData extends CDefaultFileData { private static class PathEntryFileData extends CDefaultFileData {
private EntryStore fStore; private EntryStore fStore;
// public PathEntryFileData(CConfigurationData cfg, CDataFacroty factory) { // public PathEntryFileData(CConfigurationData cfg, CDataFacroty factory) {
// super(cfg, factory); // super(cfg, factory);
// } // }
// public PathEntryFileData(String id, IPath path, CConfigurationData cfg, // public PathEntryFileData(String id, IPath path, CConfigurationData cfg,
// CDataFacroty factory) { // CDataFacroty factory) {
// super(id, path, cfg, factory); // super(id, path, cfg, factory);
// } // }
public PathEntryFileData(String id, IPath path, PathEntryFileData base, public PathEntryFileData(String id, IPath path, PathEntryFileData base,
CConfigurationData cfg, CDataFactory factory, boolean clone) { CConfigurationData cfg, CDataFactory factory, boolean clone) {
super(id, path, cfg, factory); super(id, path, cfg, factory);
fStore = new EntryStore(base.fStore, true); fStore = new EntryStore(base.fStore, true);
copyDataFrom(base, clone); copyDataFrom(base, clone);
} }
public PathEntryFileData(String id, IPath path, PathEntryFolderData base, public PathEntryFileData(String id, IPath path, PathEntryFolderData base,
CLanguageData baseLangData, CConfigurationData cfg, CLanguageData baseLangData, CConfigurationData cfgData,
CDataFactory factory) { CDataFactory factory) {
super(id, path, cfg, factory); super(id, path, cfgData, factory);
fStore = new EntryStore(base.fStore, true); fStore = new EntryStore(base.fStore, true);
copyDataFrom(base, baseLangData); copyDataFrom(base, baseLangData);
} }
}
private static class PathEntryLanguageData extends CDefaultLanguageData {
}
private static class PathEntryLanguageData extends CDefaultLanguageData {
public PathEntryLanguageData(String id, CLanguageData base, EntryStore store) { public PathEntryLanguageData(String id, CLanguageData base, EntryStore store) {
fId = id; fId = id;
fStore = store; fStore = store;
copySettingsFrom(base); copySettingsFrom(base);
} }
public PathEntryLanguageData(String id, String name, String languageId, int kinds, public PathEntryLanguageData(String id, String name, String languageId, int kinds,
String[] ids, boolean isContentTypes, EntryStore store) { String[] ids, boolean isContentTypes, EntryStore store) {
super(id, languageId, ids, isContentTypes); super(id, languageId, ids, isContentTypes);
fStore = store; fStore = store;
@ -144,11 +141,10 @@ public class PathEntryConfigurationDataProvider extends
protected EntryStore createStore(CLanguageData data) { protected EntryStore createStore(CLanguageData data) {
return fStore; return fStore;
} }
}
private static class PathEntryDataFactory extends CDataFactory {
}
private static class PathEntryDataFactory extends CDataFactory {
@Override @Override
public CConfigurationData createConfigurationdata(String id, public CConfigurationData createConfigurationdata(String id,
String name, CConfigurationData base, boolean clone) { String name, CConfigurationData base, boolean clone) {
@ -157,21 +153,21 @@ public class PathEntryConfigurationDataProvider extends
} else if(id == null){ } else if(id == null){
id = CDataUtil.genId(null); id = CDataUtil.genId(null);
} }
return new CfgData(id, name, base, clone); return new CfgData(id, name, base, clone);
} }
@Override @Override
public CFileData createFileData(CConfigurationData cfg, public CFileData createFileData(CConfigurationData cfg,
CResourceData base, CLanguageData base2, CResourceData base, CLanguageData base2,
String id, boolean clone, String id, boolean clone,
IPath path) { IPath path) {
if(id == null) if(id == null)
id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); id = clone ? base.getId() : CDataUtil.genId(cfg.getId());
if(base.getType() == ICSettingBase.SETTING_FILE) if(base.getType() == ICSettingBase.SETTING_FILE)
return new PathEntryFileData(id, path, (PathEntryFileData)base, cfg, this, clone); return new PathEntryFileData(id, path, (PathEntryFileData)base, cfg, this, clone);
return new PathEntryFileData(id, path, (PathEntryFolderData)base, return new PathEntryFileData(id, path, (PathEntryFolderData)base,
base2, cfg, this); base2, cfg, this);
} }
@Override @Override
@ -179,7 +175,7 @@ public class PathEntryConfigurationDataProvider extends
CFolderData base, String id, boolean clone, IPath path) { CFolderData base, String id, boolean clone, IPath path) {
if(id == null) if(id == null)
id = clone ? base.getId() : CDataUtil.genId(cfg.getId()); id = clone ? base.getId() : CDataUtil.genId(cfg.getId());
return new PathEntryFolderData(id, path, (PathEntryFolderData)base, cfg, this, clone); return new PathEntryFolderData(id, path, (PathEntryFolderData)base, cfg, this, clone);
} }
@Override @Override
@ -187,12 +183,12 @@ public class PathEntryConfigurationDataProvider extends
CResourceData rcBase, CLanguageData base, String id, boolean clone) { CResourceData rcBase, CLanguageData base, String id, boolean clone) {
if(id == null) if(id == null)
id = clone ? base.getId() : CDataUtil.genId(rcBase.getId()); id = clone ? base.getId() : CDataUtil.genId(rcBase.getId());
EntryStore store; EntryStore store;
if(rcBase.getType() == ICSettingBase.SETTING_FOLDER) if(rcBase.getType() == ICSettingBase.SETTING_FOLDER)
store = ((PathEntryFolderData)rcBase).fStore; store = ((PathEntryFolderData)rcBase).fStore;
else else
store = ((PathEntryFileData)rcBase).fStore; store = ((PathEntryFileData)rcBase).fStore;
return new PathEntryLanguageData(id, base, store); return new PathEntryLanguageData(id, base, store);
} }
@Override @Override
@ -208,53 +204,49 @@ public class PathEntryConfigurationDataProvider extends
store = ((PathEntryFileData)rcBase).fStore; store = ((PathEntryFileData)rcBase).fStore;
return new PathEntryLanguageData(id, name, languageId, supportedEntryKinds, rcTypes, isContentTypes, store); return new PathEntryLanguageData(id, name, languageId, supportedEntryKinds, rcTypes, isContentTypes, store);
} }
} }
private static class CfgData extends CDefaultConfigurationData { private static class CfgData extends CDefaultConfigurationData {
// private PathEntryResolveInfo fResolveInfo; // private PathEntryResolveInfo fResolveInfo;
public CfgData(String id, String name, CConfigurationData base, boolean clone) { public CfgData(String id, String name, CConfigurationData base, boolean clone) {
super(id, name, base, fFactory, clone); super(id, name, base, fFactory, clone);
} }
public CfgData(String id, String name) { public CfgData(String id, String name) {
super(id, name, fFactory); super(id, name, fFactory);
} }
// public PathEntryResolveInfo getResolveInfo(){ // public PathEntryResolveInfo getResolveInfo(){
// return fResolveInfo; // return fResolveInfo;
// } // }
// //
// public void setResolveInfo(PathEntryResolveInfo info){ // public void setResolveInfo(PathEntryResolveInfo info){
// fResolveInfo = info; // fResolveInfo = info;
// } // }
} }
public static boolean isPathEntryData(CConfigurationData data){ public static boolean isPathEntryData(CConfigurationData data){
return data instanceof CfgData; return data instanceof CfgData;
} }
@Override @Override
public CConfigurationData applyConfiguration( public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription des, ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
ICConfigurationDescription baseDescription, IProgressMonitor monitor) throws CoreException {
CConfigurationData base,
IProgressMonitor monitor)
throws CoreException {
//TODO: check external/reference info here as well. //TODO: check external/reference info here as well.
if(!fFactory.isModified(base)){ if (!fFactory.isModified(baseData)) {
return createData(des, base, false, true); return createData(cfgDescription, baseData, false, true);
} }
IProject project = cfgDescription.getProjectDescription().getProject();
IProject project = des.getProjectDescription().getProject(); // ReferenceSettingsInfo refInfo = new ReferenceSettingsInfo(des);
// ReferenceSettingsInfo refInfo = new ReferenceSettingsInfo(des); IPathEntry entries[] = PathEntryTranslator.getPathEntries(project, baseCfgDescription, PathEntryTranslator.INCLUDE_USER);
IPathEntry entries[] = PathEntryTranslator.getPathEntries(project, baseDescription, PathEntryTranslator.INCLUDE_USER);
CModelManager manager = CModelManager.getDefault(); CModelManager manager = CModelManager.getDefault();
ICProject cproject = manager.create(project); ICProject cproject = manager.create(project);
IPathEntry[] curRawEntries = PathEntryManager.getDefault().getRawPathEntries(cproject); IPathEntry[] curRawEntries = PathEntryManager.getDefault().getRawPathEntries(cproject);
List<IPathEntry> list = new ArrayList<IPathEntry>(); List<IPathEntry> list = new ArrayList<IPathEntry>();
list.addAll(Arrays.asList(entries)); list.addAll(Arrays.asList(entries));
for(int i = 0; i < curRawEntries.length; i++){ for(int i = 0; i < curRawEntries.length; i++){
@ -262,16 +254,16 @@ public class PathEntryConfigurationDataProvider extends
list.add(curRawEntries[i]); list.add(curRawEntries[i]);
} }
} }
IPathEntry[] newEntries = list.toArray(new IPathEntry[list.size()]); IPathEntry[] newEntries = list.toArray(new IPathEntry[list.size()]);
PathEntryManager.getDefault().setRawPathEntries(cproject, newEntries, new NullProgressMonitor()); PathEntryManager.getDefault().setRawPathEntries(cproject, newEntries, new NullProgressMonitor());
return createData(des, base, false, false); return createData(cfgDescription, baseData, false, false);
} }
private CConfigurationData createData(ICConfigurationDescription des, CConfigurationData fallbackData, boolean modifiedFlag, boolean useCache) throws CoreException { private CConfigurationData createData(ICConfigurationDescription cfgDescription, CConfigurationData fallbackData, boolean modifiedFlag, boolean useCache) throws CoreException {
CConfigurationData dataToReturn; CConfigurationData dataToReturn;
try { try {
dataToReturn = createData(des, useCache); dataToReturn = createData(cfgDescription, useCache);
} catch (Exception e){ } catch (Exception e){
if(fallbackData != null) if(fallbackData != null)
dataToReturn = fallbackData; dataToReturn = fallbackData;
@ -282,73 +274,71 @@ public class PathEntryConfigurationDataProvider extends
} }
fFactory.setModified(dataToReturn, modifiedFlag); fFactory.setModified(dataToReturn, modifiedFlag);
return dataToReturn; return dataToReturn;
} }
@Override @Override
public CConfigurationData createConfiguration( public CConfigurationData createConfiguration(ICConfigurationDescription cfgDescription,
ICConfigurationDescription des, ICConfigurationDescription baseCfgDescription, CConfigurationData baseData,
ICConfigurationDescription baseDescription, boolean clone, IProgressMonitor monitor) throws CoreException {
CConfigurationData base,
boolean clone, CfgData copy = new CfgData(cfgDescription.getId(), cfgDescription.getName(), baseData, clone);
IProgressMonitor monitor) throws CoreException {
CfgData copy = new CfgData(des.getId(), des.getName(), base, clone);
copy.setModified(false); copy.setModified(false);
return copy; return copy;
} }
private CfgData createData(ICConfigurationDescription des, boolean useCache) throws CoreException{ private CfgData createData(ICConfigurationDescription cfgDescription, boolean useCache) throws CoreException {
IProject project = des.getProjectDescription().getProject(); IProject project = cfgDescription.getProjectDescription().getProject();
CModelManager manager = CModelManager.getDefault(); CModelManager manager = CModelManager.getDefault();
ICProject cproject = manager.create(project); ICProject cproject = manager.create(project);
PathEntryResolveInfo rInfo = PathEntryManager.getDefault().getResolveInfo(cproject, useCache); PathEntryResolveInfo rInfo = PathEntryManager.getDefault().getResolveInfo(cproject, useCache);
CfgData data = new CfgData(des.getId(), des.getName()); CfgData data = new CfgData(cfgDescription.getId(), cfgDescription.getName());
data.initEmptyData(); data.initEmptyData();
CDataUtil.adjustConfig(data, getDataFactory()); CDataUtil.adjustConfig(data, getDataFactory());
//CProjectDescriptionManager.getInstance().adjustDefaultConfig(data); //CProjectDescriptionManager.getInstance().adjustDefaultConfig(data);
// data.setResolveInfo(rInfo); // data.setResolveInfo(rInfo);
PathEntryTranslator tr = new PathEntryTranslator(project, data); PathEntryTranslator tr = new PathEntryTranslator(project, data);
ReferenceSettingsInfo refInfo = tr.applyPathEntries(rInfo, PathEntryTranslator.OP_REPLACE); ReferenceSettingsInfo refInfo = tr.applyPathEntries(rInfo, PathEntryTranslator.OP_REPLACE);
ICExternalSetting extSettings[] = refInfo.getExternalSettings(); ICExternalSetting extSettings[] = refInfo.getExternalSettings();
des.removeExternalSettings(); cfgDescription.removeExternalSettings();
if(extSettings.length != 0){ if (extSettings.length != 0) {
ICExternalSetting setting; ICExternalSetting setting;
for(int i = 0; i < extSettings.length; i++){ for(int i = 0; i < extSettings.length; i++){
setting = extSettings[i]; setting = extSettings[i];
des.createExternalSetting(setting.getCompatibleLanguageIds(), cfgDescription.createExternalSetting(setting.getCompatibleLanguageIds(),
setting.getCompatibleContentTypeIds(), setting.getCompatibleContentTypeIds(),
setting.getCompatibleExtensions(), setting.getCompatibleExtensions(),
setting.getEntries()); setting.getEntries());
} }
} }
// IPath projPaths[] = refInfo.getReferencedProjectsPaths(); // IPath projPaths[] = refInfo.getReferencedProjectsPaths();
// if(projPaths.length != 0){ // if(projPaths.length != 0){
// Map map = new HashMap(projPaths.length); // Map map = new HashMap(projPaths.length);
// for(int i = 0; i < projPaths.length; i++){ // for(int i = 0; i < projPaths.length; i++){
// map.put(projPaths[i].segment(0), ""); //$NON-NLS-1$ // map.put(projPaths[i].segment(0), ""); //$NON-NLS-1$
// } // }
// des.setReferenceInfo(map); // des.setReferenceInfo(map);
// } // }
cproject.close(); cproject.close();
String[] ids = getIds(des.get(CCorePlugin.BINARY_PARSER_UNIQ_ID)); String[] ids = getIds(cfgDescription.get(CCorePlugin.BINARY_PARSER_UNIQ_ID));
data.getTargetPlatformData().setBinaryParserIds(ids); data.getTargetPlatformData().setBinaryParserIds(ids);
ids = getIds(des.get(CCorePlugin.ERROR_PARSER_UNIQ_ID)); ids = getIds(cfgDescription.get(CCorePlugin.ERROR_PARSER_UNIQ_ID));
data.getBuildData().setErrorParserIDs(ids); data.getBuildData().setErrorParserIDs(ids);
data.setModified(false); data.setModified(false);
return data; return data;
} }
private String[] getIds(ICConfigExtensionReference refs[]){ private String[] getIds(ICConfigExtensionReference refs[]){
if(refs == null || refs.length == 0) if(refs == null || refs.length == 0)
return new String[0]; return new String[0];
String[] ids = new String[refs.length]; String[] ids = new String[refs.length];
for(int i = 0; i < refs.length; i++){ for(int i = 0; i < refs.length; i++){
ids[i] = refs[i].getID(); ids[i] = refs[i].getID();
@ -357,22 +347,17 @@ public class PathEntryConfigurationDataProvider extends
} }
@Override @Override
public CConfigurationData loadConfiguration(ICConfigurationDescription des, public CConfigurationData loadConfiguration(ICConfigurationDescription cfgDescription, IProgressMonitor monitor) throws CoreException {
IProgressMonitor monitor) return createData(cfgDescription, null, false, true);
throws CoreException {
return createData(des, null, false, true);
} }
@Override @Override
public void removeConfiguration(ICConfigurationDescription des, public void removeConfiguration(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
CConfigurationData data,
IProgressMonitor monitor) {
//do nothing for now //do nothing for now
} }
@Override @Override
public void dataCached(ICConfigurationDescription cfgDes, public void dataCached(ICConfigurationDescription cfgDescription, CConfigurationData data, IProgressMonitor monitor) {
CConfigurationData data, IProgressMonitor monitor) {
fFactory.setModified(data, false); fFactory.setModified(data, false);
} }