Commit ae4e5b43 authored by Syed Javed Ali's avatar Syed Javed Ali

Added custom validation annotations for product price and list of locations....

Added custom validation annotations for product price and list of locations. Added appender and layout for logging in logback.xml
parent 23eded19
......@@ -18,6 +18,7 @@ target/
*.iws
*.iml
*.ipr
*.log
### NetBeans ###
/nbproject/private/
......
package com.nisum.example.model;
import com.nisum.example.validator.ProductLocationListConstraint;
import com.nisum.example.validator.ProductPriceConstraint;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -21,8 +23,8 @@ public class Product {
@NotNull(message = "description should not be null")
@NotEmpty(message = "description cannot be empty")
String prodDescription;
@NotNull(message = "price should not be null")
@ProductPriceConstraint
Double prodPrice;
@NotNull(message = "Locations can not be null")
@ProductLocationListConstraint
List<Location> prodLocationList;
}
package com.nisum.example.validator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Documented
@Constraint(validatedBy =ProductLocationListValidator.class )
@Target({ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ProductLocationListConstraint {
String message() default "Location List cannot be null";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
package com.nisum.example.validator;
import com.nisum.example.model.Location;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.List;
public class ProductLocationListValidator implements ConstraintValidator<ProductLocationListConstraint, List<Location>> {
@Override
public boolean isValid(List<Location> locations, ConstraintValidatorContext context) {
boolean isValid=Boolean.TRUE;
if(locations==null){
isValid=Boolean.FALSE;
}
return isValid;
}
@Override
public void initialize(ProductLocationListConstraint constraintAnnotation) {
}
}
package com.nisum.example.validator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Documented
@Constraint(validatedBy = ProductPriceValidator.class)
@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ProductPriceConstraint {
String message() default "Price should be double value";
Class<?> [] groups() default {};
Class<? extends Payload>[] payload() default {};
}
package com.nisum.example.validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class ProductPriceValidator implements ConstraintValidator<ProductPriceConstraint,Double> {
@Override
public boolean isValid(Double aDouble, ConstraintValidatorContext constraintValidatorContext) {
return aDouble != null;
}
@Override
public void initialize(ProductPriceConstraint constraintAnnotation) {
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{YYYY:MM:dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.nisum.example" level="INFO">
<appender-ref ref="STDOUT" />
</logger>
</Configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment