@Override
 public void validateChangedObject(FacesContext context, UIComponent component, Object arg2)
     throws ValidatorException {
   String value = (String) arg2;
   if (StringUtils.isEmpty(value)) {
     throw new ValidatorException(
         MessageFactory.getMessage(
             context,
             "javax.faces.component.UIInput.REQUIRED",
             MessageFactory.getLabel(context, component)));
   }
   try {
     if (!vdtService.equalsPersistenceValue(entityClass, fieldName, id, value)) {
       if (StringUtils.isNotEmpty(message)) {
         throw new ValidatorException(Messages.createError(message));
       } else {
         throw new ValidatorException(
             MessageFactory.getMessage(
                 context,
                 "com.esoft.core.validator.AlreadyExistValidator.PERSISTENCE_VALUE",
                 MessageFactory.getLabel(context, component)));
       }
     }
   } catch (SecurityException e) {
     e.printStackTrace();
     throw new ValidatorException(
         MessageFactory.getMessage(
             context,
             "javax.faces.converter.NO_SUCH_FIELD",
             MessageFactory.getLabel(context, component),
             "get" + StringUtils.capitalize(fieldName)));
   } catch (ClassNotFoundException e) {
     e.printStackTrace();
     throw new ValidatorException(
         MessageFactory.getMessage(
             context,
             "javax.faces.converter.CLASS_NOT_FOUND",
             MessageFactory.getLabel(context, component),
             entityClass));
   } catch (NoSuchMethodException e) {
     e.printStackTrace();
     throw new ValidatorException(
         MessageFactory.getMessage(
             context,
             "javax.faces.converter.NO_SUCH_FIELD",
             MessageFactory.getLabel(context, component),
             "get" + StringUtils.capitalize(fieldName)));
   }
 }
 @Override
 public void validate(FacesContext context, UIComponent component, Object value)
     throws ValidatorException {
   if (value != null && extensions != null && extensions.length > 0) {
     if (value instanceof InputFileInfo) {
       InputFileInfo info = (InputFileInfo) value;
       String choice = info.getConvertedChoice();
       if (!InputFileChoice.isUploadOrKeepTemp(choice)) {
         return;
       }
       String filename = info.getConvertedFilename();
       if (filename != null) {
         String lowerCaseFilename = filename.toLowerCase();
         boolean error = authorized;
         for (String extension : extensions) {
           String lowerCaseExtension = extension.trim().toLowerCase();
           if (lowerCaseFilename.endsWith(lowerCaseExtension)) {
             error = !authorized;
             break;
           }
         }
         // TODO: handle content types
         if (error) {
           String messageId =
               authorized
                   ? MIMETYPE_AUTHORIZED_EXTENSIONS_MESSAGE_ID
                   : MIMETYPE_UNAUTHORIZED_EXTENSIONS_MESSAGE_ID;
           throw new ValidatorException(
               MessageFactory.getMessage(context, messageId, StringUtils.join(extensions, ", ")));
         }
       }
     }
   }
 }
 /**
  * Add keyed error/message.
  *
  * @param level
  * @param key message key
  */
 private void addError(FacesContext context, String key) {
   FacesMessage fMessage = MessageFactory.getMessage(key);
   if (fMessage != null) {
     FacesContext facesContext = FacesContext.getCurrentInstance();
     fMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
     facesContext.addMessage(null, fMessage);
   }
 }
  @Override
  public void validate(FacesContext context, UIComponent component, Object value)
      throws ValidatorException {
    Date data = (Date) value;

    if (data != null && data.after(new Date())) {
      Object label = MessageFactory.getLabel(context, component);
      String descricaoErro = label + " não pode ser data futura";

      FacesMessage message =
          new FacesMessage(FacesMessage.SEVERITY_ERROR, descricaoErro, descricaoErro);
      throw new ValidatorException(message);
    }
  }