@Test public void testFuture() { Set<ConstraintViolation<ObjectWithValidation>> violations = validator.validate(obj, Future.class); assertNotNull(violations); assertEquals(violations.size(), 1); if (runPeformance) { long time = System.currentTimeMillis(); for (int index = 0; index < 10000; index++) { validator.validate(obj, Future.class); } long used = System.currentTimeMillis() - time; System.out.println("Hibernate Validator [Future] check used " + used + "ms, avg. " + ((double) used) / 10000 + "ms."); } }
private void convert(MetaDataEntry metaData, Map<String, Object> result) { if (NotNull.class.getName().equals(metaData.getKey())) { result.put(CommonMetaDataKeys.REQUIRED.getKey(), Boolean.TRUE); } if (Size.class.getName().equals(metaData.getKey())) { Size size = (Size) metaData.getValue(); if (size.max() < Integer.MAX_VALUE) { result.put(CommonMetaDataKeys.SIZE.getKey(), size.max()); } } if (Past.class.getName().equals(metaData.getKey())) { result.put(CommonMetaDataKeys.PAST.getKey(), Boolean.TRUE); } if (Future.class.getName().equals(metaData.getKey())) { result.put(CommonMetaDataKeys.FUTURE.getKey(), Boolean.TRUE); } }
private static boolean isValidSimpleConstraint(String cName, String field, Object actual, LinkedList<String> err) { if ("required".equals(cName) && !required().isValid(actual)) { err.add(Utils.formatMessage("{0} is required.", field)); return false; } else if (matches(AssertFalse.class, cName) && !falsy().isValid(actual)) { err.add(Utils.formatMessage("{0} must be false.", field)); return false; } else if (matches(AssertTrue.class, cName) && !truthy().isValid(actual)) { err.add(Utils.formatMessage("{0} must be true.", field)); return false; } else if (matches(Future.class, cName) && !future().isValid(actual)) { err.add(Utils.formatMessage("{0} must be in the future.", field)); return false; } else if (matches(Past.class, cName) && !past().isValid(actual)) { err.add(Utils.formatMessage("{0} must be in the past.", field)); return false; } else if (matches(URL.class, cName) && !url().isValid(actual)) { err.add(Utils.formatMessage("{0} is not a valid URL.", field)); return false; } else if (matches(Email.class, cName) && !email().isValid(actual)) { err.add(Utils.formatMessage("{0} is not a valid email.", field)); return false; } return true; }
@Override public Object process(AnnotationInfo ctx, Object value) throws Exception { if (!ctx.isAnnotationPresent(Future.class)) { return value; } return DateUtils.addDays(new Date(), 2); }
@Future @NotNull @Temporal(TemporalType.DATE) @Column(name = "data_entrega", nullable = false) public Date getDataEntrega() { return this.dataEntrega; }
/** * Getter for the conference start date. * * @return the start date */ @Future @NotNull @Temporal(value = TemporalType.DATE) @Column(nullable = false) public Date getStartDate() { return startDate; }
/** * Getter for the conference end date. * * @return the end date */ @Future @NotNull @Temporal(value = TemporalType.DATE) @Column(nullable = false) public Date getEndDate() { return endDate; }
@Basic @Temporal(TemporalType.DATE) @Future @NotNull public Date getCheckinDate() { return checkinDate; }
@Basic @Temporal(TemporalType.DATE) @Future @NotNull public Date getCheckoutDate() { return checkoutDate; }
private static void mapBeanValidationParameter(Annotation annotation, InstanceDescriptor element) { SimpleTypeDescriptor typeDescriptor = (SimpleTypeDescriptor) element.getLocalType(false); if (annotation instanceof AssertFalse) typeDescriptor.setTrueQuota(0.); else if (annotation instanceof AssertTrue) typeDescriptor.setTrueQuota(1.); else if (annotation instanceof DecimalMax) typeDescriptor.setMax(String.valueOf(DescriptorUtil.convertType(((DecimalMax) annotation).value(), typeDescriptor))); else if (annotation instanceof DecimalMin) typeDescriptor.setMin(String.valueOf(DescriptorUtil.convertType(((DecimalMin) annotation).value(), typeDescriptor))); else if (annotation instanceof Digits) { Digits digits = (Digits) annotation; typeDescriptor.setGranularity(String.valueOf(Math.pow(10, - digits.fraction()))); } else if (annotation instanceof Future) typeDescriptor.setMin(new SimpleDateFormat("yyyy-MM-dd").format(TimeUtil.tomorrow())); else if (annotation instanceof Max) typeDescriptor.setMax(String.valueOf(((Max) annotation).value())); else if (annotation instanceof Min) typeDescriptor.setMin(String.valueOf(((Min) annotation).value())); else if (annotation instanceof NotNull) { element.setNullable(false); element.setNullQuota(0.); } else if (annotation instanceof Null) { element.setNullable(true); element.setNullQuota(1.); } else if (annotation instanceof Past) typeDescriptor.setMax(new SimpleDateFormat("yyyy-MM-dd").format(TimeUtil.yesterday())); else if (annotation instanceof Pattern) typeDescriptor.setPattern(String.valueOf(((Pattern) annotation).regexp())); else if (annotation instanceof Size) { Size size = (Size) annotation; typeDescriptor.setMinLength(size.min()); typeDescriptor.setMaxLength(size.max()); } }
@Override public boolean incudeInValidation(Future futureAnnotation, RequestHandler requestHandler, ValidationContext validationCtx) { return true; }
@Override public void validate(Future futureAnnotation, String name, ValidationContext validationCtx, Errors errors) { Object value = validationCtx.value(name); if (value == null) return; if (!(value instanceof Date)) errors.add(name, futureAnnotation.message(), value); LocalDate inputDate = ((Date) value).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); if (tomorrow().isBefore(inputDate) || tomorrow().isEqual(inputDate)) errors.add(name, futureAnnotation.message(), value); }
@Override public void initialize(Future constraintAnnotation) { }
@Override public void initialize(final Future constraintAnnotation) {}
@Future public Date showDate(boolean correct) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, correct ? 5 : -5); return cal.getTime(); }
private void appendFutureValidator(SourceWriter w, JField field) { Future futureAnnotation = field.getAnnotation(Future.class); if (futureAnnotation != null) { w.println(", new FutureValidator(\"%s\")", futureAnnotation.message()); } }
public void rentCar( @NotNull String customer, @NotNull @Future Date startDate, @Min(1) int durationInDays) { //... }
public void methodWithArgumentFuture(@Future Date date0) {}