diff --git a/javaxval/.gitignore b/javaxval/.gitignore
new file mode 100644
index 000000000000..8027134ae9bd
--- /dev/null
+++ b/javaxval/.gitignore
@@ -0,0 +1,6 @@
+.classpath
+.project
+.settings/
+target/
+bin/
+
diff --git a/javaxval/bin/.gitignore b/javaxval/bin/.gitignore
new file mode 100644
index 000000000000..55a6bcf59675
--- /dev/null
+++ b/javaxval/bin/.gitignore
@@ -0,0 +1,6 @@
+.classpath
+.project
+.settings/
+target/
+
+
diff --git a/javaxval/bin/pom.xml b/javaxval/bin/pom.xml
new file mode 100644
index 000000000000..592f3c343151
--- /dev/null
+++ b/javaxval/bin/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+ org.baeldung
+ javaxval
+ 0.1-SNAPSHOT
+
+
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+ javax.validation
+ validation-api
+ 1.1.0.Final
+
+
+
+ org.hibernate
+ hibernate-validator
+ 5.2.1.Final
+
+
+
+ org.hibernate
+ hibernate-validator-annotation-processor
+ 5.2.1.Final
+
+
+
+ javax.el
+ javax.el-api
+ 2.2.4
+
+
+
+ org.glassfish.web
+ javax.el
+ 2.2.4
+
+
+
+
+
+
\ No newline at end of file
diff --git a/javaxval/pom.xml b/javaxval/pom.xml
new file mode 100644
index 000000000000..592f3c343151
--- /dev/null
+++ b/javaxval/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+ org.baeldung
+ javaxval
+ 0.1-SNAPSHOT
+
+
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+ javax.validation
+ validation-api
+ 1.1.0.Final
+
+
+
+ org.hibernate
+ hibernate-validator
+ 5.2.1.Final
+
+
+
+ org.hibernate
+ hibernate-validator-annotation-processor
+ 5.2.1.Final
+
+
+
+ javax.el
+ javax.el-api
+ 2.2.4
+
+
+
+ org.glassfish.web
+ javax.el
+ 2.2.4
+
+
+
+
+
+
\ No newline at end of file
diff --git a/javaxval/src/main/java/org/baeldung/User.java b/javaxval/src/main/java/org/baeldung/User.java
new file mode 100644
index 000000000000..2d86a4ec2fc6
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/User.java
@@ -0,0 +1,56 @@
+package org.baeldung;
+
+import javax.validation.constraints.AssertTrue;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+public class User {
+
+ @NotNull(message = "Name cannot be null")
+ private String name;
+
+ @AssertTrue
+ private boolean working;
+
+ @Size(min = 10, max = 200, message = "Number of characters should be in between 10 and 200 inclusive")
+ private String aboutMe;
+
+ @Min(value = 18, message = "Age should not be less than 18")
+ @Max(value = 150, message = "Age should not be more than 150")
+ private int age;
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public boolean isWorking() {
+ return working;
+ }
+
+ public void setWorking(boolean working) {
+ this.working = working;
+ }
+
+ public String getAboutMe() {
+ return aboutMe;
+ }
+
+ public void setAboutMe(String aboutMe) {
+ this.aboutMe = aboutMe;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/javaxval/src/test/java/org/baeldung/ValidationTest.java b/javaxval/src/test/java/org/baeldung/ValidationTest.java
new file mode 100644
index 000000000000..727630e70350
--- /dev/null
+++ b/javaxval/src/test/java/org/baeldung/ValidationTest.java
@@ -0,0 +1,81 @@
+package org.baeldung;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ValidationTest {
+
+ @Test
+ public void ifNameIsNull_nameValidationFails() {
+ User user = new User();
+ user.setWorking(true);
+ user.setAboutMe("Its all about me!!");
+ user.setAge(50);
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+ Set> violations = validator.validate(user);
+ Assert.assertEquals(violations.isEmpty(), false);
+ }
+
+ @Test
+ public void ifSizeNotInRange_aboutMeValidationFails() {
+ User user = new User();
+ user.setName("MyName");
+ user.setAboutMe("Its all about me!!");
+ user.setAge(50);
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+ Set> violations = validator.validate(user);
+ Assert.assertEquals(violations.isEmpty(), false);
+ }
+
+ @Test
+ public void ifWorkingIsFalse_workingValidationFails() {
+ User user = new User();
+ user.setName("MyName");
+ user.setAboutMe("Its all about me!!");
+ user.setAge(50);
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+ Set> violations = validator.validate(user);
+ Assert.assertEquals(violations.isEmpty(), false);
+ }
+
+ @Test
+ public void ifAgeNotRange_ageValidationFails() {
+ User user = new User();
+ user.setName("MyName");
+ user.setAboutMe("Its all about me!!");
+ user.setAge(8);
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+ Set> violations = validator.validate(user);
+ Assert.assertEquals(violations.isEmpty(), false);
+ }
+
+
+ @Test
+ public void ifFnameNullAgeNotRangeAndWorkingIsFalse_validationFailsWithThreeErrors() {
+ User user = new User();
+ user.setAboutMe("Its all about me!!");
+ user.setAge(300);
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+ Set> violations = validator.validate(user);
+ Assert.assertEquals(violations.isEmpty(), false);
+ Assert.assertEquals(violations.size(), 3);
+ }
+}