Java Code Examples for javax.validation.ConstraintViolationException#getConstraintViolations()

The following examples show how to use javax.validation.ConstraintViolationException#getConstraintViolations() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
@Test
public void testListElementAttributeNotNull() {
	ProjectData data = new ProjectData();
	data.setValue(null); // violation

	Project project = new Project();
	project.setId(1L);
	project.setName("test");
	project.getDataList().add(data);

	try {
		projectRepo.create(project);
	} catch (ConstraintViolationException e) {
		Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
		Assert.assertEquals(1, violations.size());
		ConstraintViolationImpl violation = (ConstraintViolationImpl) violations.iterator().next();
		Assert.assertEquals("{javax.validation.constraints.NotNull.message}", violation.getMessageTemplate());
		Assert.assertEquals("dataList[0].value", violation.getPropertyPath().toString());
		Assert.assertNotNull(violation.getMessage());
		Assert.assertEquals("/data/attributes/data-list/0/value", violation.getErrorData().getSourcePointer());
	}
}
 
Example 2
@Override
public ValidationErrorMessage createBody(ConstraintViolationException ex, HttpServletRequest req) {

    ErrorMessage tmpl = super.createBody(ex, req);
    ValidationErrorMessage msg = new ValidationErrorMessage(tmpl);

    for (ConstraintViolation<?> violation : ex.getConstraintViolations()) {
        Node pathNode = findLastNonEmptyPathNode(violation.getPropertyPath());

        // path is probably useful only for properties (fields)
        if (pathNode != null && pathNode.getKind() == ElementKind.PROPERTY) {
            msg.addError(pathNode.getName(), convertToString(violation.getInvalidValue()), violation.getMessage());

        // type level constraints etc.
        } else {
            msg.addError(violation.getMessage());
        }
    }
    return msg;
}
 
Example 3
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
public ResponseEntity<ErrorMessage> handleConstraintViolatedException(ConstraintViolationException ex
) {
	Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations();


	List<String> errors = new ArrayList<>(constraintViolations.size());
	String error;
	for (ConstraintViolation constraintViolation : constraintViolations) {

		error = constraintViolation.getMessage();
		errors.add(error);
	}

	ErrorMessage errorMessage = new ErrorMessage(errors);
	return new ResponseEntity(errorMessage, HttpStatus.BAD_REQUEST);
}
 
Example 4
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
public ResponseEntity<ErrorMessage> handleConstraintViolatedException(ConstraintViolationException ex
) {
	Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations();


	List<String> errors = new ArrayList<>(constraintViolations.size());
	String error;
	for (ConstraintViolation constraintViolation : constraintViolations) {

		error = constraintViolation.getMessage();
		errors.add(error);
	}

	ErrorMessage errorMessage = new ErrorMessage(errors);
	return new ResponseEntity(errorMessage, HttpStatus.BAD_REQUEST);
}
 
Example 5
@Test
public void testPropertyOnRelationId() {

	ResourceRepository<Schedule, Serializable> scheduleRepo = client.getRepositoryForType(Schedule.class);

	Project project = new Project();
	project.setId(2L);
	project.setName("test");

	Schedule schedule = new Schedule();
	schedule.setId(1L);
	schedule.setName("test");
	schedule.setProjectId(null);
	try {
		scheduleRepo.create(schedule);
	} catch (ConstraintViolationException e) {
		Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
		Assert.assertEquals(1, violations.size());
		ConstraintViolationImpl violation = (ConstraintViolationImpl) violations.iterator().next();
		Assert.assertEquals("{javax.validation.constraints.NotNull.message}", violation.getMessageTemplate());
		Assert.assertEquals("project", violation.getPropertyPath().toString());
		Assert.assertEquals("/data/relationships/project", violation.getErrorData().getSourcePointer());
	}
}
 
Example 6
@Override
public Response toResponse(ConstraintViolationException exception) {
	ConstraintViolationException ex = (ConstraintViolationException) exception;
	List<FieldError> errors = new ArrayList<FieldError>();
	for (ConstraintViolation<?> violation : ex.getConstraintViolations()) {
		errors.add(new FieldError(Inflector.underscore(violation.getPropertyPath().toString()), violation.getMessage(), violation.getInvalidValue()));
	}
	Map<String, List<FieldError>> message = new HashMap<String, List<FieldError>>();
	message.put("fieldErrors", errors);
	return Response.status(UnprocessableEntityStatusType.INSTANCE).entity(message).build();
}
 
Example 7
@ExceptionHandler
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public Object handle(Exception exception) {
    logger.error("错误信息  ====  "+exception.getMessage());
    if (exception instanceof BindException) {
        BindException bindException = (BindException) exception;
        List<FieldError> fieldErrors = bindException.getFieldErrors();
        for (FieldError fieldError : fieldErrors) {
            return ResponseMessage.error(10010,fieldError.getField() + fieldError.getDefaultMessage());
        }
    }

    if (exception instanceof ConstraintViolationException) {
        ConstraintViolationException exs = (ConstraintViolationException) exception;

        Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
        for (ConstraintViolation<?> violation : violations) {
            return ResponseMessage.error(10010,violation.getPropertyPath() + violation.getMessage());
        }
    }
    if (exception instanceof HandlerException) {
        HandlerException handlerException = (HandlerException) exception;
        return new ResponseMessage(handlerException.getCode(), handlerException.getErrorInfo());
    }
    if (exception instanceof MissingServletRequestParameterException) {
        MissingServletRequestParameterException missingServletRequestParameterException = (MissingServletRequestParameterException) exception;
        return ResponseMessage.error(10010, "请求参数" + missingServletRequestParameterException.getParameterName() + "不能为空");
    }
    if (exception instanceof FileUploadException) {
        FileUploadException fileUploadException = (FileUploadException) exception;
        return ResponseMessage.error(10010, fileUploadException.getMessage());
    }

    return ResponseMessage.error(0, "服务异常");
}
 
Example 8
@Test
public void testSetElementAttributeNotNull() {
	Project project = new Project();
	project.setId(1L);
	project.setName("test");
	// ProjectData corrupedElement = null;
	for (int i = 0; i < 11; i++) {
		ProjectData data = new ProjectData();
		if (i != 3) {
			data.setValue(Integer.toString(i));
			// corrupedElement = data;
		}
		project.getDataSet().add(data);
	}

	try {
		projectRepo.create(project);
	} catch (ConstraintViolationException e) {
		Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
		Assert.assertEquals(1, violations.size());
		ConstraintViolationImpl violation = (ConstraintViolationImpl) violations.iterator().next();
		Assert.assertEquals("{javax.validation.constraints.NotNull.message}", violation.getMessageTemplate());
		Assert.assertTrue(violation.getPropertyPath().toString().startsWith("dataSet["));
		Assert.assertTrue(violation.getPropertyPath().toString().endsWith("].value"));

		Assert.assertTrue(violation.getErrorData().getSourcePointer().startsWith("/data/attributes/dataSet/"));

		//	TODO attempt to preserver order in Crnk by comparing incoming request, sourcePointer and server Set
		//  or use of order preserving sets
		//			List<ProjectData> list = new ArrayList<>(project.getDataSet());
		//			int index = list.indexOf(corrupedElement);
		//			Assert.assertEquals(violation.getErrorData().getSourcePointer(), "/data/attributes/dataSet/" + index +
		// "/value");
	}
}
 
Example 9
@Test
public void shouldValidateDeviceId() {
  // given
  final Installation installation = new Installation();
  installation.setDeviceToken("invalid");

  final iOSVariant variant = new iOSVariant();
  variant.setName("iOS Variant Name");
  variant.setPassphrase("12");
  variant.setProduction(false);
  variant.setCertificate("12".getBytes());
  entityManager.persist(variant);
  installation.setVariant(variant);

  // when
  installationDao.create(installation);
  try {
    entityManager.flush();
    fail("ConstraintViolationException should have been thrown");
  } catch (ConstraintViolationException violationException) {
    // then
    final Set<ConstraintViolation<?>> constraintViolations = violationException
        .getConstraintViolations();
    assertThat(constraintViolations).isNotEmpty();
    assertThat(constraintViolations.size()).isEqualTo(1);

    assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo(
        "Device token is not valid for this device type");
  }
}
 
Example 10
public ValidationResponse(final ConstraintViolationException cause) {
  super(false, new ArrayList<>());
  //noinspection ThrowableResultOfMethodCallIgnored
  checkNotNull(cause);
  Set<ConstraintViolation<?>> violations = cause.getConstraintViolations();
  if (violations != null && !violations.isEmpty()) {
    for (ConstraintViolation<?> violation : violations) {
      List<String> entries = new ArrayList<>();
      // iterate path to get the full path
      Iterator<Node> it = violation.getPropertyPath().iterator();
      while (it.hasNext()) {
        Node node = it.next();
        if (ElementKind.PROPERTY == node.getKind() || (ElementKind.PARAMETER == node.getKind() && !it.hasNext())) {
          if (node.getKey() != null) {
            entries.add(node.getKey().toString());
          }
          entries.add(node.getName());
        }
      }
      if (entries.isEmpty()) {
        if (messages == null) {
          messages = new ArrayList<>();
        }
        messages.add(violation.getMessage());
      }
      else {
        if (errors == null) {
          errors = new HashMap<>();
        }
        errors.put(Joiner.on('.').join(entries), violation.getMessage());
      }
    }
  }
  else if (cause.getMessage() != null) {
    messages = new ArrayList<>();
    messages.add(cause.getMessage());
  }
}
 
Example 11
protected Response handleConstraintViolationException(ConstraintViolationException cve) {
    ViolationReport report = new ViolationReport();
    for (ConstraintViolation cv : cve.getConstraintViolations()) {
        report.addConstraintViolation(new RestConstraintViolation(
                cv.getPropertyPath().toString(),
                cv.getMessage(),
                cv.getInvalidValue() == null ? "null" : cv.getInvalidValue().toString()));
    }
    // TODO for now just do xml output
    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(report).type(ContentType.TEXT_XML_UTF_8).build();
}
 
Example 12
@ExceptionHandler(ValidationException.class)
@ResponseBody
public Object badArgumentHandler(ValidationException e) {
    logger.error(e.getMessage(), e);
    if (e instanceof ConstraintViolationException) {
        ConstraintViolationException exs = (ConstraintViolationException) e;
        Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
        for (ConstraintViolation<?> item : violations) {
            String message = ((PathImpl) item.getPropertyPath()).getLeafNode().getName() + item.getMessage();
            return ResponseUtil.fail(402, message);
        }
    }
    return ResponseUtil.badArgumentValue();
}
 
Example 13
Source Project: dubbox   File: RpcExceptionMapper.java    License: Apache License 2.0 5 votes vote down vote up
protected Response handleConstraintViolationException(ConstraintViolationException cve) {
    ViolationReport report = new ViolationReport();
    for (ConstraintViolation cv : cve.getConstraintViolations()) {
        report.addConstraintViolation(new RestConstraintViolation(
                cv.getPropertyPath().toString(),
                cv.getMessage(),
                cv.getInvalidValue() == null ? "null" : cv.getInvalidValue().toString()));
    }
    // TODO for now just do xml output
    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(report).type(ContentType.TEXT_XML_UTF_8).build();
}
 
Example 14
Source Project: tutorials   File: ApiExceptionHandler.java    License: MIT License 5 votes vote down vote up
@SuppressWarnings("rawtypes")
@ExceptionHandler(ConstraintViolationException.class)
public ResponseEntity<ErrorResponse> handle(ConstraintViolationException e) {
    ErrorResponse errors = new ErrorResponse();
    for (ConstraintViolation violation : e.getConstraintViolations()) {
        ErrorItem error = new ErrorItem();
        error.setCode(violation.getMessageTemplate());
        error.setMessage(violation.getMessage());
        errors.addError(error);
    }

    return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
}
 
Example 15
@ExceptionHandler(ConstraintViolationException.class)
public Result<?> handler(ConstraintViolationException e) {
	Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
	List<String> fieldList = new ArrayList<>();
	if (log.isDebugEnabled()) {
		constraintViolations.forEach(f -> {
			fieldList.add(f.getPropertyPath().toString());
			log.debug("field format error: " + toString());
		});
	}
	return Result.fail(ResultCode.PARAM_INVALID, fieldList);
}
 
Example 16
Source Project: plumemo   File: RestExceptionHandler.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * validation 异常处理
 *
 * @param request 请求体
 * @param e       ConstraintViolationException
 * @return HttpResult
 */
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
public Result onConstraintViolationException(HttpServletRequest request,
                                             ConstraintViolationException e) {
    Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
    if (!CollectionUtils.isEmpty(constraintViolations)) {
        String errorMessage = constraintViolations
                .stream()
                .map(ConstraintViolation::getMessage)
                .collect(Collectors.joining(";"));
        return Result.createWithErrorMessage(errorMessage, ErrorEnum.PARAM_ERROR.getCode());
    }
    return Result.createWithErrorMessage(e.getMessage(), ErrorEnum.PARAM_ERROR.getCode());
}
 
Example 17
@AroundInvoke
@Override
public Object validateMethodInvocation(InvocationContext ctx) throws Exception {
    try {
        return super.validateMethodInvocation(ctx);
    } catch (ConstraintViolationException e) {
        throw new ResteasyViolationExceptionImpl(e.getConstraintViolations(), getAccept(ctx.getMethod()));
    }
}
 
Example 18
private String prepareMessage(ConstraintViolationException exception) {
    StringBuilder message = new StringBuilder();

    for (ConstraintViolation<?> cv : exception.getConstraintViolations()) {
        message.append(cv.getMessage());
    }
    return message.toString();
}
 
Example 19
@Override
public Response toResponse(ConstraintViolationException exception) {
    Set<ConstraintViolation<?>> constraintViolations = exception.getConstraintViolations();
    StringBuilder errors = new StringBuilder();
    constraintViolations.forEach(exc -> errors.append(exc.getMessage()));
    return ResponseFactory.response(BAD_REQUEST,
            new ErrorResponse(BAD_REQUEST.getStatusCode(), errors.toString()));
}
 
Example 20
@Path("/service-method-validation")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Result tryMeServiceMethodValidation(Book book) {
    try {
        bookService.validateBook(book);
        return new Result("Book is valid! It was validated by service method validation.");
    } catch (ConstraintViolationException e) {
        return new Result(e.getConstraintViolations());
    }
}