Eliraz Levi has uploaded a new change for review.

Change subject: engine: integrate CidrValidation to backend
......................................................................

engine: integrate CidrValidation to backend

adding @Cidr and UTest classes

Change-Id: Ib4dc94cc350dc03195c3f24ba783036592e3c03e
Bug-Url: https://bugzilla.redhat.com/1080074
Signed-off-by: Eliraz Levi <el...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/ExternalSubnet.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/CidrConstraint.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/Cidr.java
A 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/CidrAnnotationTest.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
6 files changed, 131 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/32540/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/ExternalSubnet.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/ExternalSubnet.java
index 70ab587..d94c86f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/ExternalSubnet.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/ExternalSubnet.java
@@ -7,6 +7,7 @@
 
 import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
 import org.ovirt.engine.core.common.businessentities.Nameable;
+import org.ovirt.engine.core.common.validation.annotation.Cidr;
 import org.ovirt.engine.core.common.validation.group.RemoveEntity;
 
 public class ExternalSubnet extends IVdcQueryable implements Serializable, 
Nameable {
@@ -18,6 +19,7 @@
 
     private String name;
 
+    @Cidr
     private String cidr;
 
     private IpVersion ipVersion;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/CidrConstraint.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/CidrConstraint.java
new file mode 100644
index 0000000..4b16b83
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/CidrConstraint.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.core.common.validation;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+import org.ovirt.engine.core.common.validation.annotation.Cidr;
+
+public class CidrConstraint implements ConstraintValidator<Cidr, String> {
+
+    @Override
+    public void initialize(Cidr constraintAnnotation) {
+    }
+
+    @Override
+    public boolean isValid(String cidr, ConstraintValidatorContext context) {
+        boolean isCidrFormat = CidrValidator.isCidrFormatValid(cidr);
+        if (!isCidrFormat) {
+            return false;
+        }
+        boolean isNetworkAddress = 
CidrValidator.isCidrValidNetworkAddress(cidr);
+        if (!isNetworkAddress) {
+            context.disableDefaultConstraintViolation();
+            
context.buildConstraintViolationWithTemplate("CIDR_NOT_NETWORK_ADDRESS")
+                    .addNode("cidr")
+                    .addConstraintViolation();
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/Cidr.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/Cidr.java
new file mode 100644
index 0000000..13baf5a
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/Cidr.java
@@ -0,0 +1,29 @@
+package org.ovirt.engine.core.common.validation.annotation;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+import org.ovirt.engine.core.common.validation.CidrConstraint;
+
+/***
+ * the annotation valid
+ * @author elevi
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = CidrConstraint.class)
+public @interface Cidr {
+    String message() default "BAD_CIDR_FORMAT";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/CidrAnnotationTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/CidrAnnotationTest.java
new file mode 100644
index 0000000..d7c8a56
--- /dev/null
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/CidrAnnotationTest.java
@@ -0,0 +1,60 @@
+package org.ovirt.engine.core.common.utils;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Collection;
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validator;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.ovirt.engine.core.common.validation.CidrValidatorTest;
+import org.ovirt.engine.core.common.validation.annotation.Cidr;
+
+@RunWith(Parameterized.class)
+public class CidrAnnotationTest {
+
+    private String cidr;
+    private boolean expectedResult;
+    private Validator validator;
+
+    public CidrAnnotationTest(String cidr, boolean expectedResult) {
+        this.cidr = cidr;
+        this.expectedResult = expectedResult;
+    }
+
+    @Before
+    public void setup() throws Exception {
+        validator = ValidationUtils.getValidator();
+    }
+
+    @Test
+    public void checkCidrAnnotation() {
+        CidrContainer container = new CidrContainer(cidr);
+        Set<ConstraintViolation<CidrContainer>> result = 
validator.validate(container);
+        assertEquals("Failed to validate name: " + container.getCidr(), 
expectedResult, result.isEmpty());
+    }
+
+    @Parameterized.Parameters
+    public static Collection<Object[]> namesParams() {
+        return CidrValidatorTest.data();
+    }
+
+    private class CidrContainer {
+        @Cidr
+        private String cidr;
+
+        public CidrContainer(String cidr) {
+            super();
+            this.cidr = cidr;
+        }
+
+        public String getCidr() {
+            return cidr;
+        }
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 0368c1a..1f08a2d 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1265,3 +1265,6 @@
 KDUMP_DETECTION_NOT_ENABLED_FOR_VDS=Cannot ${action} ${type}. Kdump 
integration is not enabled for host '${VdsName}'.
 KDUMP_DETECTION_NOT_CONFIGURED_ON_VDS=Cannot ${action} ${type}. Kdump is not 
properly configured on host '${VdsName}'.
 
+CIDR_NOT_NETWORK_ADDRESS=Cidr not represnting a network address.\nplease 
ensure ip and mask are matching to network ip address. \nexample: valid network 
address: 2.2.0.0/16 \ninvalid: 2.2.0.1/16
+BAD_CIDR_FORMAT=Cidr bad format, expected:\n x.x.x.x/y  where:\n x belongs to 
[0,255] \n y belongs to [0,32] \n both inclusive
+
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index bcf8b78..59b5ea4 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -3373,4 +3373,10 @@
 
     @DefaultStringValue("Cannot ${action} ${type}. Target cluster belongs to 
different Data Center.")
     String VDS_CLUSTER_ON_DIFFERENT_STORAGE_POOL();
+
+    @DefaultStringValue("Cidr not represnting a network address.\nplease 
ensure ip and mask are matching to network ip address. \nexample: valid network 
address: 2.2.0.0/16 \ninvalid: 2.2.0.1/16")
+    String CIDR_NOT_NETWORK_ADDRESS();
+
+    @DefaultStringValue("Cidr bad format, expected:\n x.x.x.x/y  where:\n x 
belongs to [0,255] \n y belongs to [0,32] \n both inclusive")
+    String BAD_CIDR_FORMAT();
 }


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

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

Reply via email to