code: protected <E extends Throwable, V extends ATSecDBValidator> Set<ATError> handleException(E e, Log logger, V validator, 
  			String key, String suffix, String defaultMessagePrefix, Object... arguments) {
  		if(null != logger) {
  			logger.error(e.getMessage(), e);
  		}
  		Set<ATError> errors = new HashSet<>(1);
  		if (null != validator) {
  			errors.add(new ATError(key, 
  					validator.getMessageWithSuffix(suffix, arguments, defaultMessagePrefix + ": "+ e.getMessage())));
  		}
  		else if (null != messageSource) {
  			errors.add(new ATError(key, 
  					messageSource.getMessage(key, null, defaultMessagePrefix + ": "+ e.getMessage(), LocaleContextHolder.getLocale())));
  		} else {
  			errors.add(new ATError(key, defaultMessagePrefix));
  		}
  		return errors;
  	}
docs: logging the error and creates {@link ATError} list output
  
  @param e - required: the exception
  @param logger - optional: (could be null), if not null, exception will be logged as error
  @param validator - optional: (could be null)
  @param key - required: the error key
  @param suffix the suffix for resource message key (prefix and area is managed in validator), will be ignored if validator is null
  @param defaultMessagePrefix message as prefix combined with exception.getMessage if no message resource has been found
  @param arguments additional arguments
  @return list of errors
  
  @see #handleException(Throwable, Log, String, String, String)
  @see #handleException(Throwable, Log, ATSecDBValidator, String, String, String)