package servlet;
import test2_constraints_validation.*;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.executable.ExecutableValidator;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Set;
/**
* Created by Giovanni on 25/04/2015.
*/
@WebServlet(name = "Servlettest2")
public class Servlettest2 extends HttpServlet {
@Inject
ValidatorFactory validatorFactory;
@Inject
Validator validator;
@Inject
xg_substring_class xg_substring_class;
@Inject
substring_class substring_class;
@Inject
general_class_wrapper general_class_wrapper;
@Inject
general_class general_class;
@Inject
class_with_builtin_constraints class_with_builtin_constraints;
@Inject
class_test_method class_test_method;
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. */
out.println("");
out.println("");
out.println("
");
out.println("Servlet xg");
out.println("");
out.println("");
out.println("Servlet xg at " + request.getContextPath() + "
");
///////////////// check null return
//class_test_method.test_method();
//out.println("Test Null without validator");
//out.println("
");
///////////////// entire class validation
Set> violations = validator.validate(xg_substring_class);
if (violations.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("
");
Set> violations2 = validator.validate(substring_class);
if (violations2.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("
");
Set> violations3 = validator.validate(general_class_wrapper);
if (violations3.size() > 0) {
out.println("error");
Iterator> it = violations3.iterator();
while (it.hasNext()){
ConstraintViolation t = it.next();
out.println(t.getInvalidValue() + " " + t.getMessage());
}
} else{
out.println("tutto ok");
}
out.println("
");
Set> violations4 = validator.validate(general_class);
if (violations4.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("
");
//////////////// single method paramenter validation
Method method = null;
try {
method = class_with_builtin_constraints.class.getMethod("calculatePrice", Float.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
ExecutableValidator methodValidator = validator. forExecutables();
Set> violations5 = methodValidator.validateParameters(class_with_builtin_constraints, method, new Object[]{new Float(2)});
if (violations5.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("
");
//////////////// single method return value parameter validation
method = null;
try {
method = class_with_builtin_constraints.class.getMethod("calculatePrice", Float.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
methodValidator = validator. forExecutables();
Set> violations6 = methodValidator.validateReturnValue(class_with_builtin_constraints, method, new Float(6));
if (violations6.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("
");
//////////////// check single property without make an instance of the object
Set> violations7 = validator.validateValue(class_with_builtin_constraints.class, "title", "aabb");
if (violations7.size() > 0) out.println("error"); else out.println("tutto ok");
out.println("");
out.println("");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
}