From 3add45dbdf6bbf38a15143b5dfe9c930b572f02b Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Mon, 14 May 2007 17:33:28 +0000 Subject: [PATCH] project conversion fixes --- .../core/ManagedBuildManager.java | 142 +++++++++++++++++- .../internal/core/ManagedBuildInfo.java | 11 +- .../internal/core/ManagedProject.java | 54 +++---- .../UpdateManagedProject12.java | 4 +- .../UpdateManagedProject20.java | 4 +- .../UpdateManagedProject21.java | 4 +- .../UpdateManagedProject30.java | 58 +++---- .../UpdateManagedProject31.java | 2 +- .../model/CProjectDescriptionManager.java | 14 +- 9 files changed, 211 insertions(+), 82 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java index d6e70323b08..9ee45425dc3 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java @@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.cdt.managedbuilder.core; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -32,6 +34,16 @@ import java.util.TreeMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; import org.eclipse.cdt.core.AbstractCExtension; import org.eclipse.cdt.core.CCorePlugin; @@ -86,6 +98,7 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceStatus; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.IncrementalProjectBuilder; @@ -113,6 +126,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import org.w3c.dom.ProcessingInstruction; /** * This is the main entry point for getting at the build information @@ -1236,7 +1250,133 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI resConfig.setToolCommand(tool, command); } } - + + public static boolean saveBuildInfoLegacy(IProject project, boolean force) { + // Create document + Exception err = null; + try { + DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + Document doc = builder.newDocument(); + + // Get the build information for the project + ManagedBuildInfo buildInfo = (ManagedBuildInfo) getBuildInfo(project); + + // Save the build info + if (buildInfo != null && + !buildInfo.isReadOnly() && + buildInfo.isValid() && + (force == true || buildInfo.isDirty())) { + // For post-2.0 projects, there will be a version + String projectVersion = buildInfo.getVersion(); + if (projectVersion != null) { + ProcessingInstruction instruction = doc.createProcessingInstruction(VERSION_ELEMENT_NAME, projectVersion); + doc.appendChild(instruction); + } + Element rootElement = doc.createElement(ROOT_NODE_NAME); + doc.appendChild(rootElement); + buildInfo.serializeLegacy(doc, rootElement); + + // Transform the document to something we can save in a file + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$ + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(stream); + transformer.transform(source, result); + + // Save the document + IFile projectFile = project.getFile(SETTINGS_FILE_NAME); + String utfString = stream.toString("UTF-8"); //$NON-NLS-1$ + + if (projectFile.exists()) { + if (projectFile.isReadOnly()) { + // If we are not running headless, and there is a UI Window around, grab it + // and the associated shell + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window == null) { + IWorkbenchWindow windows[] = PlatformUI.getWorkbench().getWorkbenchWindows(); + window = windows[0]; + } + Shell shell = null; + if (window != null) { + shell = window.getShell(); + } + // Inform Eclipse that we are intending to modify this file + // This will provide the user the opportunity, via UI prompts, to fetch the file from source code control + // reset a read-only file protection to write etc. + // If there is no shell, i.e. shell is null, then there will be no user UI interaction + IStatus status = projectFile.getWorkspace().validateEdit(new IFile[]{projectFile}, shell); + // If the file is still read-only, then we should not attempt the write, since it will + // just fail - just throw an exception, to be caught below, and inform the user + // For other non-successful status, we take our chances, attempt the write, and pass + // along any exception thrown + if (!status.isOK()) { + if (status.getCode() == IResourceStatus.READ_ONLY_LOCAL) { + stream.close(); + throw new IOException(ManagedMakeMessages.getFormattedString(MANIFEST_ERROR_READ_ONLY, projectFile.getFullPath().toString())); //$NON-NLS-1$ + } + } + } + projectFile.setContents(new ByteArrayInputStream(utfString.getBytes("UTF-8")), IResource.FORCE, new NullProgressMonitor()); //$NON-NLS-1$ + } else { + projectFile.create(new ByteArrayInputStream(utfString.getBytes("UTF-8")), IResource.FORCE, new NullProgressMonitor()); //$NON-NLS-1$ + } + + // Close the streams + stream.close(); + } + } catch (ParserConfigurationException e) { + err = e; + } catch (FactoryConfigurationError e) { + err = e.getException(); + } catch (TransformerConfigurationException e) { + err = e; + } catch (TransformerFactoryConfigurationError e) { + err = e.getException(); + } catch (TransformerException e) { + err = e; + } catch (IOException e) { + // The save failed + err = e; + } catch (CoreException e) { + // Save to IFile failed + err = e; + } + + if (err != null) { + // Put out an error message indicating that the attempted write to the .cdtbuild project file failed + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window == null) { + IWorkbenchWindow windows[] = PlatformUI.getWorkbench().getWorkbenchWindows(); + window = windows[0]; + } + + final Shell shell = window.getShell(); + if (shell != null) { + final String exceptionMsg = err.getMessage(); + shell.getDisplay().syncExec( new Runnable() { + public void run() { + MessageDialog.openError(shell, + ManagedMakeMessages.getResourceString("ManagedBuildManager.error.write_failed_title"), //$NON-NLS-1$ + ManagedMakeMessages.getFormattedString(MANIFEST_ERROR_WRITE_FAILED, //$NON-NLS-1$ + exceptionMsg)); + } + } ); + } + } + // If we return an honest status when the operation fails, there are instances when the UI behavior + // is not very good + // Specifically, if "OK" is clicked by the user from the property page UI, and the return status + // from this routine is false, the property page UI will not be closed (note: this is Eclispe code) and + // the OK button will simply be grayed out + // At this point, the only way out is to click "Cancel" to get the UI to go away; note however that any + // property page changes will be sticky, in the UI, which is nonintuitive and confusing + // Therefore, just always return success, i.e. true, from this routine + return true; + } + public static boolean saveBuildInfo(IProject project, boolean force) { try { return updateBuildInfo(project, force); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java index 6ae40336ecb..c9b77f9a881 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java @@ -29,6 +29,7 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.settings.model.ICStorageElement; import org.eclipse.cdt.core.settings.model.WriteAccessException; +import org.eclipse.cdt.core.settings.model.util.XmlStorageElement; import org.eclipse.cdt.managedbuilder.core.BuildException; import org.eclipse.cdt.managedbuilder.core.IBuildObject; import org.eclipse.cdt.managedbuilder.core.IBuilder; @@ -58,8 +59,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; +import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.NodeList; /** * @@ -728,13 +729,13 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { * @param doc * @param element */ -/* public void serialize(Document doc, Element element) { + public void serializeLegacy(Document doc, Element element) { // Write out the managed build project if(managedProject != null){ Element projElement = doc.createElement(IManagedProject.MANAGED_PROJECT_ELEMENT_NAME); element.appendChild(projElement); - managedProject.serialize(doc, projElement); + ((ManagedProject)managedProject).serialize(new XmlStorageElement(projElement), true); } else{ Iterator iter = getTargets().listIterator(); @@ -751,12 +752,12 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { // Remember the default configuration - persistDefaultConfiguration(); +// persistDefaultConfiguration(); // I'm clean now setDirty(false); } -*/ + /* (non-Javadoc) * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#setDefaultConfiguration(org.eclipse.cdt.core.build.managed.IConfiguration) */ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedProject.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedProject.java index 6e16c2b509f..7398f898173 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedProject.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedProject.java @@ -20,7 +20,6 @@ import java.util.Map; import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.settings.model.ICStorageElement; -import org.eclipse.cdt.core.settings.model.util.XmlStorageElement; import org.eclipse.cdt.managedbuilder.buildproperties.IBuildPropertyType; import org.eclipse.cdt.managedbuilder.buildproperties.IBuildPropertyValue; import org.eclipse.cdt.managedbuilder.core.IBuildObject; @@ -37,9 +36,6 @@ import org.eclipse.cdt.utils.envvar.StorableEnvironment; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.PluginVersionIdentifier; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; public class ManagedProject extends BuildObject implements IManagedProject, IBuildPropertiesRestriction, IBuildPropertyChangeListener { @@ -229,42 +225,36 @@ public class ManagedProject extends BuildObject implements IManagedProject, IBui /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.core.IManagedProject#serialize() */ -/* public void serialize(Document doc, Element element) { - element.setAttribute(IBuildObject.ID, id); + public void serialize(ICStorageElement element, boolean saveChildren) { + serializeProjectInfo(element); - if (name != null) { - element.setAttribute(IBuildObject.NAME, name); + if(saveChildren){ + Collection configElements = getConfigurationCollection(); + Iterator iter = configElements.iterator(); + while (iter.hasNext()) { + Configuration config = (Configuration) iter.next(); + ICStorageElement configElement = element.createChild(IConfiguration.CONFIGURATION_ELEMENT_NAME); + config.serialize(configElement); + } + } - - if (projectType != null) { - element.setAttribute(PROJECTTYPE, projectType.getId()); - } - // Serialize my children - List configElements = getConfigurationList(); - Iterator iter = configElements.listIterator(); - while (iter.hasNext()) { - Configuration config = (Configuration) iter.next(); - Element configElement = doc.createElement(IConfiguration.CONFIGURATION_ELEMENT_NAME); - element.appendChild(configElement); - config.serialize(doc, configElement); - } - //serialize user-defined macros - if(userDefinedMacros != null){ - Element macrosElement = doc.createElement(StorableMacros.MACROS_ELEMENT_NAME); - element.appendChild(macrosElement); - userDefinedMacros.serialize(doc,macrosElement); - } - - if(userDefinedEnvironment != null){ - EnvironmentVariableProvider.fUserSupplier.storeEnvironment(this,true); - } +// //serialize user-defined macros +// if(userDefinedMacros != null){ +// Element macrosElement = doc.createElement(StorableMacros.MACROS_ELEMENT_NAME); +// element.appendChild(macrosElement); +// userDefinedMacros.serialize(doc,macrosElement); +// } +// +// if(userDefinedEnvironment != null){ +// EnvironmentVariableProvider.fUserSupplier.storeEnvironment(this,true); +// } // I am clean now isDirty = false; } -*/ + /* * P A R E N T A N D C H I L D H A N D L I N G */ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java index 238a1db39b2..7dec18c2f44 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2005 Intel Corporation and others. + * Copyright (c) 2004, 2007 Intel Corporation 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 @@ -763,7 +763,7 @@ class UpdateManagedProject12 { // if (treeLock) { WorkspaceJob job = new WorkspaceJob(ConverterMessages.getResourceString("UpdateManagedProject.notice")) { //$NON-NLS-1$ public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { - ManagedBuildManager.saveBuildInfo(project, false); + ManagedBuildManager.saveBuildInfoLegacy(project, false); return Status.OK_STATUS; } }; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java index ef5386db6f5..250bbeb287e 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2005 Intel Corporation and others. + * Copyright (c) 2004, 2007 Intel Corporation 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 @@ -114,7 +114,7 @@ class UpdateManagedProject20 { //initiate the job in all cases WorkspaceJob job = new WorkspaceJob(ConverterMessages.getResourceString("UpdateManagedProject.notice")) { //$NON-NLS-1$ public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { - ManagedBuildManager.saveBuildInfo(project, false); + ManagedBuildManager.saveBuildInfoLegacy(project, false); return Status.OK_STATUS; } }; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject21.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject21.java index 09244494d2f..901ff828570 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject21.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject21.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2006 Intel Corporation and others. + * Copyright (c) 2005, 2007 Intel Corporation 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 @@ -83,7 +83,7 @@ class UpdateManagedProject21 { WorkspaceJob job = new WorkspaceJob(ConverterMessages.getResourceString("UpdateManagedProject.notice")) { //$NON-NLS-1$ public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { checkForCPPWithC(monitor, project); - ManagedBuildManager.saveBuildInfo(project, true); + ManagedBuildManager.saveBuildInfoLegacy(project, true); return Status.OK_STATUS; } }; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject30.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject30.java index 70bca2e9c57..34dce4e9115 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject30.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject30.java @@ -12,24 +12,13 @@ package org.eclipse.cdt.managedbuilder.projectconverter; import java.io.File; -import org.eclipse.cdt.managedbuilder.core.IBuildObjectProperties; -import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; -import org.eclipse.cdt.managedbuilder.core.IManagedProject; -import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; -import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin; import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.eclipse.core.runtime.jobs.MultiRule; public class UpdateManagedProject30 { @@ -56,29 +45,30 @@ public class UpdateManagedProject30 { // We need to upgrade the version ((ManagedBuildInfo)info).setVersion("3.1.0"); // info.setValid(true); - - // Save the updated file. - IWorkspace workspace = project.getWorkspace(); -// boolean treeLock = workspace.isTreeLocked(); - ISchedulingRule rule1 = workspace.getRuleFactory().createRule(project); - ISchedulingRule rule2 = workspace.getRuleFactory().refreshRule(project); - ISchedulingRule rule = MultiRule.combine(rule1, rule2); - //since the java synchronized mechanism is now used for the build info loadding, - //initiate the job in all cases -// if (treeLock) { - WorkspaceJob job = new WorkspaceJob(ConverterMessages.getResourceString("UpdateManagedProject.notice")) { //$NON-NLS-1$ - public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { - ManagedBuildManager.saveBuildInfo(project, true); - return Status.OK_STATUS; - } - }; - job.setRule(rule); - job.schedule(); -// } else { -// checkForCPPWithC(monitor, project); -// ManagedBuildManager.saveBuildInfo(project, true); -// } - monitor.done(); + + //no need to persist data here +// // Save the updated file. +// IWorkspace workspace = project.getWorkspace(); +//// boolean treeLock = workspace.isTreeLocked(); +// ISchedulingRule rule1 = workspace.getRuleFactory().createRule(project); +// ISchedulingRule rule2 = workspace.getRuleFactory().refreshRule(project); +// ISchedulingRule rule = MultiRule.combine(rule1, rule2); +// //since the java synchronized mechanism is now used for the build info loadding, +// //initiate the job in all cases +//// if (treeLock) { +// WorkspaceJob job = new WorkspaceJob(ConverterMessages.getResourceString("UpdateManagedProject.notice")) { //$NON-NLS-1$ +// public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { +// ManagedBuildManager.saveBuildInfo(project, true); +// return Status.OK_STATUS; +// } +// }; +// job.setRule(rule); +// job.schedule(); +//// } else { +//// checkForCPPWithC(monitor, project); +//// ManagedBuildManager.saveBuildInfo(project, true); +//// } +// monitor.done(); } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java index 168865e5019..2e36e9db251 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 Intel Corporation and others. + * Copyright (c) 2007 Intel Corporation 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 diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 795d3b8984b..2b57c820410 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -428,6 +428,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { eDes = project.getDescription(); des = getConvertedDescription(project, eDes); } catch (CoreException e) { + CCorePlugin.log(e); } } @@ -599,7 +600,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { r.add(new IWorkspaceRunnable(){ public void run(IProgressMonitor monitor) throws CoreException { - proj.setDescription(eDes, monitor); + try { + proj.setDescription(eDes, monitor); + } catch (CoreException e){ + CCorePlugin.log(e); + } + } }); @@ -767,11 +773,13 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(CProjectConverterDesciptor.PROJECT_CONVERTER_EXTPOINT_ID); IExtension exts[] = extensionPoint.getExtensions(); - fConverters = new CProjectConverterDesciptor[exts.length]; + CProjectConverterDesciptor[] dess = new CProjectConverterDesciptor[exts.length]; for(int i = 0; i < exts.length; i++){ - fConverters[i] = new CProjectConverterDesciptor(exts[i]); + dess[i] = new CProjectConverterDesciptor(exts[i]); } + + fConverters = dess; }