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