Skip to content

Commit a99ff13

Browse files
committed
Java Validation API
1 parent a359905 commit a99ff13

File tree

6 files changed

+114
-0
lines changed

6 files changed

+114
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.hellokoding</groupId>
8+
<artifactId>java.bean-validation</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>1.8</maven.compiler.source>
13+
<maven.compiler.target>1.8</maven.compiler.target>
14+
</properties>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.hibernate</groupId>
19+
<artifactId>hibernate-validator</artifactId>
20+
<version>6.0.16.Final</version>
21+
</dependency>
22+
23+
<dependency>
24+
<groupId>org.glassfish</groupId>
25+
<artifactId>javax.el</artifactId>
26+
<version>3.0.1-b09</version>
27+
</dependency>
28+
29+
<dependency>
30+
<groupId>junit</groupId>
31+
<artifactId>junit</artifactId>
32+
<version>4.4</version>
33+
<scope>test</scope>
34+
</dependency>
35+
36+
</dependencies>
37+
</project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.hellokoding.java;
2+
3+
import javax.validation.ConstraintViolation;
4+
import javax.validation.Validation;
5+
import javax.validation.Validator;
6+
import java.math.BigDecimal;
7+
import java.util.Set;
8+
9+
public class Main {
10+
public static void main(String[] args) {
11+
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
12+
Set<ConstraintViolation<Product>> constraintViolations = validator.validate(new Product(null, "Hello Koding", "Practical Coding Courses, Tutorials and Examples", BigDecimal.ZERO));
13+
14+
for(ConstraintViolation constraintViolation : constraintViolations) {
15+
System.out.println(constraintViolation.getPropertyPath().toString().toUpperCase() + " " + constraintViolation.getMessage());
16+
}
17+
}
18+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.hellokoding.java;
2+
3+
import javax.validation.constraints.Min;
4+
import javax.validation.constraints.NotNull;
5+
import javax.validation.constraints.Size;
6+
import java.math.BigDecimal;
7+
8+
public class Product {
9+
@NotNull
10+
private Long id;
11+
12+
@NotNull
13+
@ProductCodeExisting
14+
private String code;
15+
16+
@Size(min=1, max = 10, message = "{Size.name}")
17+
private String name;
18+
19+
@Min(1)
20+
private BigDecimal price;
21+
22+
public Product(Long id, String code, String name, BigDecimal price) {
23+
this.id = id;
24+
this.code = code;
25+
this.name = name;
26+
this.price = price;
27+
}
28+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.hellokoding.java;
2+
3+
import javax.validation.Constraint;
4+
import javax.validation.Payload;
5+
import java.lang.annotation.*;
6+
7+
@Documented
8+
@Retention(RetentionPolicy.RUNTIME)
9+
@Target({ElementType.FIELD, ElementType.PARAMETER})
10+
@Constraint(validatedBy = ProductCodeExistingValidator.class)
11+
public @interface ProductCodeExisting {
12+
String message() default "{ProductCodeExisting}";
13+
14+
Class<?>[] groups() default { };
15+
16+
Class<? extends Payload>[] payload() default { };
17+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hellokoding.java;
2+
3+
import javax.validation.ConstraintValidator;
4+
import javax.validation.ConstraintValidatorContext;
5+
6+
public class ProductCodeExistingValidator implements ConstraintValidator<ProductCodeExisting, String> {
7+
@Override
8+
public boolean isValid(String productCode, ConstraintValidatorContext context) {
9+
return productCode.equals("P1") || productCode.equals("P2");
10+
}
11+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
javax.validation.constraints.NotNull.message=is required
2+
Size.name=must be between {min} and {max} character long
3+
ProductCodeExisting="${validatedValue}" is not existing

0 commit comments

Comments
 (0)