[Yocto #4008] Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com> --- .../sdk/ide/wizard/NewYoctoCProjectTemplate.java | 34 +++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-)
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..8ab5972 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/NewYoctoCProjectTemplate.java @@ -10,6 +10,8 @@ *******************************************************************************/ package org.yocto.sdk.ide.wizard; +import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; @@ -46,11 +48,11 @@ 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.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 +60,20 @@ public class NewYoctoCProjectTemplate extends ProcessRunner { protected boolean savedAutoBuildingValue; protected ProjectCreatedActions pca; protected IManagedBuildInfo info; + protected List<Character> illegalChars = Arrays.asList('$', '"','#','%','&','\'','(',')','*', '+', ',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~'); public NewYoctoCProjectTemplate() { pca = new ProjectCreatedActions(); } - + private String printIllegalChars(){ + String print = ""; + for (int i = 0; i < illegalChars.size(); i++) { + print += illegalChars.get(i); + if (i != illegalChars.size() - 1) + print += " ,"; + } + return print; + } public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException { String projectName = args[0].getSimpleValue(); @@ -74,9 +85,10 @@ 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("Project name " + "\""+ projectName +"\"" +" is invalid! " + + "\nNone of these characters are accepted inside project names: whitespaces, " + printIllegalChars()); } if (!project.exists()) { IWorkspace workspace = ResourcesPlugin.getWorkspace(); @@ -166,6 +178,18 @@ public class NewYoctoCProjectTemplate extends ProcessRunner { throw new OperationCanceledException(Messages.getString("NewManagedProject.3") + e.getMessage()); } } + private boolean isValidProjectName(String projectName) { + if (projectName.contains("\\s+")) + return false; + + char[] chars = projectName.toCharArray(); + if (!Character.isJavaIdentifierStart(chars[0])) + return false; + for (int i = 1; i < chars.length; i++) + if (illegalChars.contains(chars[i])) + return false; + return true; +} 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