Daniel Erez has uploaded a new change for review.

Change subject: core,ui: VM,Template name - support Unicode characters
......................................................................

core,ui: VM,Template name - support Unicode characters

Adjusted VM/Template name validations to accept Unicode characters.

* VmStatic/VmTemplate/AddVmTemplateParameters:
  use ValidI18NName annotation for name field.
* ValidationUtils/I18NNameValidation: add '.' as valid character
  (to preserve current name validation which support '.').
* UnitVmModel: use I18NNameValidation for name validation.

Change-Id: I4105c327bdfce9587ae8ab2dcfc8180cf90cb4af
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ValidationUtils.java
M 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/I18NRegexpTest.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/I18NNameValidation.java
7 files changed, 16 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/10473/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java
index df598da..8c7628e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java
@@ -9,6 +9,7 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.utils.ValidationUtils;
+import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
 import org.ovirt.engine.core.compat.Guid;
@@ -26,7 +27,7 @@
     private HashMap<Guid, DiskImage> diskInfoDestinationMap;
 
     @Size(max = 40, message = "VALIDATION.VM_TEMPLATE.NAME.MAX", groups = { 
CreateEntity.class, UpdateEntity.class })
-    @Pattern(regexp = ValidationUtils.NO_SPECIAL_CHARACTERS_WITH_DOT, message 
= "ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS")
+    @ValidI18NName(message = 
"ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS")
     private String _name;
 
     @Pattern(regexp = ValidationUtils.ONLY_I18N_ASCII_OR_NONE,
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
index 5529caa..8f2124b 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
@@ -6,7 +6,6 @@
 import javax.persistence.Entity;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 import javax.validation.groups.Default;
 
@@ -16,7 +15,7 @@
 import org.ovirt.engine.core.common.businessentities.mapping.GuidType;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.common.utils.ValidationUtils;
+import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.common.validation.group.ImportClonedEntity;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
@@ -30,8 +29,8 @@
 
     @Size(min = 1, max = BusinessEntitiesDefinitions.VM_NAME_SIZE, groups = { 
Default.class, ImportClonedEntity.class })
     @Column(name = "vm_name")
-    @Pattern(regexp = ValidationUtils.NO_SPECIAL_CHARACTERS_WITH_DOT, message 
= "ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS", groups = { 
CreateEntity.class,
-            UpdateEntity.class, ImportClonedEntity.class })
+    @ValidI18NName(message = 
"ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS",
+            groups = { CreateEntity.class, UpdateEntity.class, 
ImportClonedEntity.class })
     private String name = "";
 
     @Column(name = "vmt_guid")
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
index 3471d0d..4d3cff0 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
@@ -12,7 +12,6 @@
 import javax.persistence.Enumerated;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 import javax.validation.groups.Default;
 
@@ -23,7 +22,7 @@
 import org.ovirt.engine.core.common.businessentities.mapping.GuidType;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.common.utils.ValidationUtils;
+import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.common.validation.group.ImportClonedEntity;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
@@ -53,7 +52,7 @@
     @Size(min = 1, max = BusinessEntitiesDefinitions.VM_TEMPLATE_NAME_SIZE,
             message = "VALIDATION.VM_TEMPLATE.NAME.MAX",
             groups = { Default.class, ImportClonedEntity.class })
-    @Pattern(regexp = ValidationUtils.NO_SPECIAL_CHARACTERS_WITH_DOT, message 
= "ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS", groups = { 
CreateEntity.class,
+    @ValidI18NName(message = 
"ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS", groups = { 
CreateEntity.class,
             UpdateEntity.class, ImportClonedEntity.class })
     @Column(name = "name", length = 
BusinessEntitiesDefinitions.VM_TEMPLATE_NAME_SIZE, nullable = false)
     private String name;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ValidationUtils.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ValidationUtils.java
index 79215c7..7b30dd7 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ValidationUtils.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ValidationUtils.java
@@ -16,7 +16,7 @@
 
 public class ValidationUtils {
 
-    public static final String NO_SPECIAL_CHARACTERS_I18N = "^[\\p{L}0-9_-]+$";
+    public static final String NO_SPECIAL_CHARACTERS_I18N = 
"^[\\p{L}0-9._-]+$";
     public static final String NO_SPECIAL_CHARACTERS = "[0-9a-zA-Z_-]+";
     public static final String ONLY_I18N_ASCII_OR_NONE = "[\\p{ASCII}\\p{L}]*";
     public static final String ONLY_ASCII_OR_NONE = "[\\p{ASCII}]*";
diff --git 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/I18NRegexpTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/I18NRegexpTest.java
index 5891619..88eba98 100644
--- 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/I18NRegexpTest.java
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/I18NRegexpTest.java
@@ -30,6 +30,9 @@
     public static CorrectString chineseText = new CorrectString("你好世界_-");
 
     @DataPoint
+    public static CorrectString dotSign = new CorrectString(".");
+
+    @DataPoint
     public static IncorrectString atSign = new IncorrectString("@");
 
     @DataPoint
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index 69f9055..31a6a8f 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -42,12 +42,12 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel;
 import org.ovirt.engine.ui.uicommonweb.validation.AsciiOrNoneValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.ByteSizeValidation;
+import org.ovirt.engine.ui.uicommonweb.validation.I18NNameValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyQuotaValidation;
-import org.ovirt.engine.ui.uicommonweb.validation.RegexValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.ValidationResult;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
@@ -1959,33 +1959,12 @@
         if (getOSType().getIsValid())
         {
             VmOsType osType = (VmOsType) getOSType().getSelectedItem();
-
-            String nameExpr = "^[-\\w\\.]{1,"; //$NON-NLS-1$
-            String nameMsg;
-            if (AsyncDataProvider.IsWindowsOsType(osType))
-            {
-                nameExpr += WINDOWS_VM_NAME_MAX_LIMIT;
-                nameMsg =
-                        ConstantsManager.getInstance()
-                                .getMessages()
-                                
.nameMustConataionOnlyAlphanumericChars(WINDOWS_VM_NAME_MAX_LIMIT);
-            }
-            else
-            {
-                nameExpr += NON_WINDOWS_VM_NAME_MAX_LIMIT;
-                nameMsg =
-                        ConstantsManager.getInstance()
-                                .getMessages()
-                                
.nameMustConataionOnlyAlphanumericChars(NON_WINDOWS_VM_NAME_MAX_LIMIT);
-            }
-
-            nameExpr += "}$"; //$NON-NLS-1$
-
             getName().ValidateEntity(
                     new IValidation[] {
                             new NotEmptyValidation(),
-                            new LengthValidation(this.getBehavior() instanceof 
TemplateVmModelBehavior ? 40 : 64),
-                            new RegexValidation(nameExpr, nameMsg)
+                            new LengthValidation(this.getBehavior() instanceof 
TemplateVmModelBehavior ? 40 :
+                                AsyncDataProvider.IsWindowsOsType(osType) ? 
WINDOWS_VM_NAME_MAX_LIMIT : NON_WINDOWS_VM_NAME_MAX_LIMIT),
+                            new I18NNameValidation()
                     });
 
             getDescription().ValidateEntity(
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/I18NNameValidation.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/I18NNameValidation.java
index 6479c21..3c50e36 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/I18NNameValidation.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/I18NNameValidation.java
@@ -28,7 +28,7 @@
     }
 
     protected String specialCharacters() {
-        return "_-"; //$NON-NLS-1$
+        return "._-"; //$NON-NLS-1$
     }
 
     protected String end() {


--
To view, visit http://gerrit.ovirt.org/10473
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4105c327bdfce9587ae8ab2dcfc8180cf90cb4af
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <de...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to