From 592eaff97037c0047dcbab71cd37fd8e4fec4245 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Thu, 24 May 2007 13:40:52 +0000 Subject: [PATCH] 1. additonal fix for [Bug 186665] CDT 4 update old version project failed. 2. externalization fixes --- .../core/ResourceChangeHandler2.java | 3 ++- .../BuildDescriptionGnuMakefileGenerator.java | 7 ++++--- .../internal/core/Configuration.java | 15 +++++++++------ .../internal/core/ManagedMakeMessages.java | 6 +++++- .../internal/core/PluginResources.properties | 5 +++++ .../internal/core/ResourceConfiguration.java | 2 +- .../UpdateManagedProject30.java | 2 +- .../UpdateManagedProject31.java | 18 +++++++++++------- .../GenerateMakefileWithBuildDescription.java | 7 ++++--- 9 files changed, 42 insertions(+), 23 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ResourceChangeHandler2.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ResourceChangeHandler2.java index 05328881209..4a660dea4fe 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ResourceChangeHandler2.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ResourceChangeHandler2.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.settings.model.util.ResourceChangeHandlerBase; import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo; +import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages; import org.eclipse.cdt.managedbuilder.internal.dataprovider.ConfigurationDataProvider; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; @@ -186,7 +187,7 @@ class ResourceChangeHandler2 extends ResourceChangeHandlerBase{ IWorkspace wsp = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = wsp.getRoot(); - Job job = new Job("project build settings update job"){ + Job job = new Job(ManagedMakeMessages.getString("ResourceChangeHandler2.0")){ //$NON-NLS-1$ protected IStatus run(IProgressMonitor monitor) { for(Iterator iter = projSet.iterator(); iter.hasNext();){ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescriptionGnuMakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescriptionGnuMakefileGenerator.java index ed8a0dd36b9..69d28671477 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescriptionGnuMakefileGenerator.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescriptionGnuMakefileGenerator.java @@ -24,6 +24,7 @@ import org.eclipse.cdt.managedbuilder.buildmodel.IBuildResource; import org.eclipse.cdt.managedbuilder.buildmodel.IBuildStep; import org.eclipse.cdt.managedbuilder.buildmodel.IStepVisitor; import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin; +import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -61,7 +62,7 @@ public class BuildDescriptionGnuMakefileGenerator { try { write(fWriter, step); } catch (IOException e) { - throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), "IO exception occured: ", e)); + throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), ManagedMakeMessages.getString("BuildDescriptionGnuMakefileGenerator.0"), e)); //$NON-NLS-1$ } return VISIT_CONTINUE; } @@ -104,7 +105,7 @@ public class BuildDescriptionGnuMakefileGenerator { writer.flush(); } catch (IOException e) { - throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), "IO exception occured: ", e)); + throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), ManagedMakeMessages.getString("BuildDescriptionGnuMakefileGenerator.1"), e)); //$NON-NLS-1$ } } @@ -132,7 +133,7 @@ public class BuildDescriptionGnuMakefileGenerator { deps = createVarRef(VAR_TARGETS); } else if (step == fDes.getInputStep()){ target = IN_STEP_RULE; - deps = ""; + deps = ""; //$NON-NLS-1$ } else { IBuildResource[] inputs = step.getInputResources(); IBuildResource[] outputs = step.getOutputResources(); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java index b79da655973..4ff77feb2ac 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java @@ -1178,16 +1178,19 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild * @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getArtifactExtension() */ public String getArtifactExtension() { + String ext = getArtifactExtensionAttribute(true); + return ext != null ? ext : EMPTY_STRING; + } + + public String getArtifactExtensionAttribute(boolean querySuperClass) { if (artifactExtension == null) { // Ask my parent first if (parent != null) { return parent.getArtifactExtension(); - } else { - return EMPTY_STRING; - } - } else { - return artifactExtension; - } + } + return null; + } + return artifactExtension; } /* (non-Javadoc) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java index 41fb1861617..5eab6d5506e 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2006 IBM Corporation and others. + * Copyright (c) 2004, 2007 IBM 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 @@ -31,6 +31,10 @@ public class ManagedMakeMessages { } } + public static String getString(String key) { + return getResourceString(key); + } + public static String getResourceString(String key) { try { return resourceBundle.getString(key); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties index 4c4bcc46a03..5769ef00efa 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties @@ -109,6 +109,8 @@ UserDefinedMacroSupplier.storeOutputStream.wrong.arguments=Failed to persist mac # BuildMacroStatus messages BuildMacroStatus.status.macro.undefined=Macro {0} is undefined BuildFilesAction.buildingSelectedFiles=Building Selected Files +BuildDescriptionGnuMakefileGenerator.0=IO exception occured: +BuildDescriptionGnuMakefileGenerator.1=IO exception occured: BuildFilesAction.buildSelectedFile=Build the selected file. BuildMacroStatus.status.reference.eachother=Macros {0} and {1} reference each other BuildMacroStatus.status.reference.incorrect=Macro {0} reference is incorrect @@ -127,6 +129,8 @@ GeneratedMakefileBuilder.buildResourcesFinished=Build of selected resources is c GeneratedMakefileBuilder.buildSelectedIncremental=Building selected file(s) incrementally GeneratedMakefileBuilder.buildSelectedRebuild=Rebuilding selected file(s) GeneratedMakefileBuilder.buildingFile=Building file +GenerateMakefileWithBuildDescription.0=info is null +GenerateMakefileWithBuildDescription.1=cfg is null GeneratedMakefileBuilder.0=Cleaning output file(s) for BuildFilesAction.building=Building BuildFilesAction.buildFiles=Build File(s) @@ -153,3 +157,4 @@ CommonBuilder.12=can not clean programmatically: build workspace path is not fol CommonBuilder.13=can not clean programmatically: build folder is not accessible CommonBuilder.22=Building referenced configurations.. MakeBuilder.buildError= +ResourceChangeHandler2.0=project build settings update job diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java index 4aa0c6afcbe..dfa40947ffa 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java @@ -977,7 +977,7 @@ public class ResourceConfiguration extends ResourceInfo implements IFileInfo { IPath path = getPath(); String ext = path.getFileExtension(); if(ext == null) - ext = ""; + ext = ""; //$NON-NLS-1$ ITool tool = ((FolderInfo)parentRc).getToolFromInputExtension(ext); if(tool == null) return true; 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 34dce4e9115..22caf960c8f 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 @@ -43,7 +43,7 @@ public class UpdateManagedProject30 { // No physical conversion is need since the 3.1 model is a superset of the 3.0 model // We need to upgrade the version - ((ManagedBuildInfo)info).setVersion("3.1.0"); + ((ManagedBuildInfo)info).setVersion("3.1.0"); //$NON-NLS-1$ // info.setValid(true); //no need to persist data here 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 627b49ac809..4bfbb997498 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 @@ -17,13 +17,14 @@ 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.Configuration; import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; public class UpdateManagedProject31 { - private static final String INEXISTEND_PROP_ID = ""; + private static final String INEXISTEND_PROP_ID = ""; //$NON-NLS-1$ static void doProjectUpdate(IProgressMonitor monitor, final IProject project) throws CoreException { IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); @@ -54,7 +55,7 @@ public class UpdateManagedProject31 { String artefactType = artefactTypeSupported ? null : INEXISTEND_PROP_ID; String buildType = buildTypeSupported ? null : INEXISTEND_PROP_ID; - + String artExt = ((Configuration)cfg).getArtifactExtensionAttribute(false); String id = cfg.getId(); if(artefactType == null){ artefactType = getBuildArtefactTypeFromId(id); @@ -89,22 +90,25 @@ public class UpdateManagedProject31 { ManagedBuilderCorePlugin.log(e); } } + + if(artExt != null) + cfg.setArtifactExtension(artExt); } private static String getBuildArtefactTypeFromId(String id){ - if(id.indexOf(".exe") != -1) + if(id.indexOf(".exe") != -1) //$NON-NLS-1$ return ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_EXE; - if(id.indexOf(".so") != -1) + if(id.indexOf(".so") != -1) //$NON-NLS-1$ return ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_SHAREDLIB; - if(id.indexOf(".lib") != -1) + if(id.indexOf(".lib") != -1) //$NON-NLS-1$ return ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_STATICLIB; return null; } private static String getBuildTypeFromId(String id){ - if(id.indexOf(".debug") != -1) + if(id.indexOf(".debug") != -1) //$NON-NLS-1$ return ManagedBuildManager.BUILD_TYPE_PROPERTY_DEBUG; - if(id.indexOf(".release") != -1) + if(id.indexOf(".release") != -1) //$NON-NLS-1$ return ManagedBuildManager.BUILD_TYPE_PROPERTY_RELEASE; return null; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/templateengine/processes/GenerateMakefileWithBuildDescription.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/templateengine/processes/GenerateMakefileWithBuildDescription.java index 7a78e3a300e..ed8fc5e4142 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/templateengine/processes/GenerateMakefileWithBuildDescription.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/templateengine/processes/GenerateMakefileWithBuildDescription.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.internal.buildmodel.BuildDescriptionGnuMakefileGenerator; +import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; @@ -38,16 +39,16 @@ public class GenerateMakefileWithBuildDescription extends ProcessRunner{ IProject projectHandle = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(projectHandle); if(info == null) - throw new ProcessFailureException("info is null"); + throw new ProcessFailureException(ManagedMakeMessages.getString("GenerateMakefileWithBuildDescription.0")); //$NON-NLS-1$ IConfiguration cfg = info.getDefaultConfiguration(); if(cfg == null) - throw new ProcessFailureException("cfg is null"); + throw new ProcessFailureException(ManagedMakeMessages.getString("GenerateMakefileWithBuildDescription.1")); //$NON-NLS-1$ IBuildDescription des; try { des = BuildDescriptionManager.createBuildDescription(cfg, null, 0); - IFile file = projectHandle.getFile("makefile"); + IFile file = projectHandle.getFile("makefile"); //$NON-NLS-1$ ByteArrayOutputStream oStream = new ByteArrayOutputStream(100); BuildDescriptionGnuMakefileGenerator gen = new BuildDescriptionGnuMakefileGenerator(des); gen.store(oStream);