Saturday, 28 January 2017

Jackson - Json Validator for POJO with Annotations

Code to validate a model POJO using jackson using annotations
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.google.gson.JsonIOException;

public class JsonValidator {

 public static void main(String[] args) throws JsonIOException, IOException {

  ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
  Validator validator = factory.getValidator();
  ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
  List<String> jsonObjString = new ArrayList<String>();
  jsonObjString.add("postBox: Mumbai ");

  for (String attribute : jsonObjString) {
   System.out.println("Attribute :\n" + attribute);
   Address user = null;
   try {
    user = objectMapper.readValue(attribute, Address.class);
   } catch (IOException e) {
    System.out.println("Exception caught:");
   }
   if (user != null) {
    final Set<ConstraintViolation<Address>> violations = validator.validate(user);
    if (violations.size() > 0) {
     System.out.println("Config contains errors:");
     for (ConstraintViolation<Address> u : violations) {
      System.out.println("  \"" + u.getPropertyPath().toString() + "\"" + " " + u.getMessage());
     }

    } else {
     System.out.println("NO ERRORS ");
    }

   }
  }
  ;

 }

}


       
 

Use a model Class to validate





import org.hibernate.validator.constraints.NotEmpty;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.sun.istack.internal.NotNull;


@JsonInclude(JsonInclude.Include.NON_NULL)
public class Address {
 
 
 
 @NotNull
 @NotEmpty(message="Incorrect Data")
 private String postBox;
 
 @NotNull
 @NotEmpty(message="Incorrect Data")
 private String flatNumber;
 
 public String getPostBox() {
  return postBox;
 }
 public void setPostBox(String postBox) {
  this.postBox = postBox;
 }
 public String getFlatNumber() {
  return flatNumber;
 }
 public void setFlatNumber(String flatNumber) {
  this.flatNumber = flatNumber;
 }


 
 
}

       
 

below the jars required

No comments:

Post a Comment

AWS Certificate Manager - Import Certificate

How to import a certificate. Use Key Store Explorer to open the cert and export keypair in PEM format  This will save a file cert.pem. Make ...