From 34266704772f50b8325f1bd43ccb901b80341160 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Sun, 20 Oct 2013 15:15:37 -0400 Subject: [PATCH] bug 416024: ManagedBuildManager.locationToFullPath(str) moved to BuildEntryStorage --- .../core/ManagedBuildManager.java | 36 +++++------------- .../dataprovider/BuildEntryStorage.java | 37 ++++++++++++++++++- 2 files changed, 45 insertions(+), 28 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 3d7a89435ee..86930364fd1 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 @@ -102,6 +102,7 @@ import org.eclipse.cdt.managedbuilder.internal.core.TargetPlatform; import org.eclipse.cdt.managedbuilder.internal.core.Tool; import org.eclipse.cdt.managedbuilder.internal.core.ToolChain; import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildConfigurationData; +import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildEntryStorage; import org.eclipse.cdt.managedbuilder.internal.dataprovider.ConfigurationDataProvider; import org.eclipse.cdt.managedbuilder.internal.envvar.EnvironmentVariableProvider; import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider; @@ -121,6 +122,7 @@ import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; @@ -3915,37 +3917,17 @@ public class ManagedBuildManager extends AbstractCExtension { /** * Returns a string representing the workspace relative path with ${workspace_loc: stripped - * or null if the String path doesn't contain workspace_log + * or null if the String path doesn't contain workspace_loc * @param path String path to have workspace_loc removed * @return workspace path or null + * + * @deprecated as of CDT 8.3. This method is useless as API as it does something very specfic to {@link BuildEntryStorage}. + * It was moved there as private method {@link BuildEntryStorage#locationToFullPath}. */ + @Deprecated public static String locationToFullPath(String path){ - path = path.trim(); - if(!path.startsWith("${")) //$NON-NLS-1$ - return null; - final int index = path.lastIndexOf('}'); - if(index == -1) - return null; - - String varName = "workspace_loc"; //$NON-NLS-1$ - String str1 = path.substring(2, index); - String result = null; - if(str1.startsWith(varName)){ - str1 = str1.substring(varName.length()); - if(str1.length() != 0){ - if(str1.startsWith(":")){ //$NON-NLS-1$ - result = str1.substring(1); - } - } else { - result = "/"; //$NON-NLS-1$ - } - // If the user has a path like ${workspace_loc:/thing}/other/thing - // ensure we return /thing/other/thing - if (index < path.length() - 1) - result += path.substring(index + 1); - } - - return result; + Assert.isLegal(false, "Do not use this method"); //$NON-NLS-1$ + return null; } public static String fullPathToLocation(String path){ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildEntryStorage.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildEntryStorage.java index d2776b63d85..41639c2c59e 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildEntryStorage.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildEntryStorage.java @@ -591,8 +591,43 @@ public class BuildEntryStorage extends AbstractEntryStorage { // return new Object[] { value, Boolean.valueOf(false) }; // } + /** + * Returns a string representing the workspace relative path with ${workspace_loc: stripped + * or null if the String path doesn't contain workspace_loc + * @param path String path to have workspace_loc removed + * @return workspace path or null + */ + private static String locationToFullPath(String path){ + path = path.trim(); + if(!path.startsWith("${")) //$NON-NLS-1$ + return null; + final int index = path.lastIndexOf('}'); + if(index == -1) + return null; + + String varName = "workspace_loc"; //$NON-NLS-1$ + String str1 = path.substring(2, index); + String result = null; + if(str1.startsWith(varName)){ + str1 = str1.substring(varName.length()); + if(str1.length() != 0){ + if(str1.startsWith(":")){ //$NON-NLS-1$ + result = str1.substring(1); + } + } else { + result = "/"; //$NON-NLS-1$ + } + // If the user has a path like ${workspace_loc:/thing}/other/thing + // ensure we return /thing/other/thing + if (index < path.length() - 1) + result += path.substring(index + 1); + } + + return result; + } + private static PathInfo optionPathValueToEntry(String str, SupplierBasedCdtVariableSubstitutor subst) { - String unresolvedStr = ManagedBuildManager.locationToFullPath(str); + String unresolvedStr = locationToFullPath(str); boolean isWorkspacePath = false; if (unresolvedStr == null) { unresolvedStr = str;