Hi Ioana, This patch still can't address the situation that found by Timo as following....
Thanks, Jessica I forgot to mention. I found a way to create projects with invalid names. # Create a new Yocto C Project # Enter a wrong name eg. Test" # Press next # Press finish # --> Error Message is shown, press ok # Press back # Change the name to an also invalid name eg. Test$ # Click finish -----Original Message----- From: yocto-boun...@yoctoproject.org [mailto:yocto-boun...@yoctoproject.org] On Behalf Of Ioana Grigoropol Sent: Thursday, March 14, 2013 4:50 AM To: yocto@yoctoproject.org Subject: [yocto] [PATCH v2] [eclipse-poky][master]Add more comprehensive error message for invalid project name [Yocto #4008] Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com> --- .../org/yocto/sdk/ide/YoctoSDKMessages.properties | 1 + .../sdk/ide/wizard/NewYoctoCProjectTemplate.java | 27 ++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties index 8596123..fc9813f 100644 --- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties +++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.p +++ roperties @@ -10,6 +10,7 @@ * BMW Car IT - added keys for target profiles *******************************************************************************/ Wizard.SDK.Warning.Title = Invalid Yocto Project ADT Location +Wizard.SDK.Error.ProjecName = Project name "{0}" is invalid! \nNone of +these characters are accepted inside project names: whitespaces, {1} Poky.SDK.Location.Empty = Specified Toolchain Root Location is empty. Poky.SDK.Location.Empty.Advice = You need specify Toolchain Root Location before building any project. diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java index 5ffd6b7..4d1684a 100644 --- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java +++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCPr +++ ojectTemplate.java @@ -10,8 +10,11 @@ *******************************************************************************/ package org.yocto.sdk.ide.wizard; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature; import org.eclipse.cdt.core.CCorePlugin; @@ -46,11 +49,12 @@ import org.yocto.sdk.ide.YoctoProfileElement; import org.yocto.sdk.ide.YoctoSDKChecker; import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom; import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults; +import org.yocto.sdk.ide.YoctoSDKMessages; +import org.yocto.sdk.ide.YoctoSDKPlugin; import +org.yocto.sdk.ide.YoctoUIElement; import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature; import org.yocto.sdk.ide.natures.YoctoSDKProjectNature; import org.yocto.sdk.ide.utils.YoctoSDKUtils; -import org.yocto.sdk.ide.YoctoSDKPlugin; -import org.yocto.sdk.ide.YoctoUIElement; @SuppressWarnings("restriction") @@ -58,11 +62,19 @@ public class NewYoctoCProjectTemplate extends ProcessRunner { protected boolean savedAutoBuildingValue; protected ProjectCreatedActions pca; protected IManagedBuildInfo info; + protected List<Character> illegalChars = Arrays.asList('$', '"','#','%','&','\'','(',')','*', '+', ',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~'); + private static final String PROJECT_NAME_ERROR = +"Wizard.SDK.Error.ProjecName"; public NewYoctoCProjectTemplate() { pca = new ProjectCreatedActions(); } - + private String printIllegalChars(){ + String print = ""; + for (Character ch : illegalChars) + print += ch + ", "; + print = print.substring(0, print.length() - 2); + return print; + } public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException { String projectName = args[0].getSimpleValue(); @@ -74,9 +86,9 @@ public class NewYoctoCProjectTemplate extends ProcessRunner { boolean isEmptryProject = Boolean.valueOf(isEmptyProjetValue).booleanValue(); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); try { - if (projectName.contains(" ")) { + if (!isValidProjectName(projectName)) { project.delete(true, null); - throw new ProcessFailureException(projectName + " contains space(s). Project name can't contain space(s)"); + throw new +ProcessFailureException(YoctoSDKMessages.getFormattedString(PROJECT_NAM +E_ERROR, new Object[]{projectName, printIllegalChars()})); } if (!project.exists()) { IWorkspace workspace = ResourcesPlugin.getWorkspace(); @@ -166,6 +178,11 @@ public class NewYoctoCProjectTemplate extends ProcessRunner { throw new OperationCanceledException(Messages.getString("NewManagedProject.3") + e.getMessage()); } } + private boolean isValidProjectName(String projectName) { + Pattern pattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\-]*$"); + Matcher matcher = pattern.matcher(projectName); + return matcher.find(); +} protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException { IWorkspaceDescription workspaceDesc = workspace.getDescription(); -- 1.7.9.5 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto