code: public static <T> void validate(Request<T> request) throws ValidationConstraintViolationException {
  		if (request != null) {
  			Class<?> clazz = request.getClass();
  			List<ConstraintViolation> leafs = new LinkedList<ConstraintViolation>();
  
  			Field[] fields = clazz.getDeclaredFields();
  			for (Field field : fields) {
  				if (null != field.getAnnotation(Required.class)) {
  
  					field.setAccessible(true);
  					Object value = null;
  					try {
  						value = field.get(request);
  					} catch (Exception e) {
  						// not cool...
  						throw new ValidationConstraintViolationException(e);
  					}
  
  					if (value == null || value instanceof String && ((String) value).isEmpty()) {
  						ConstraintViolation violation = ConstraintViolation.newConstraintViolation("@" + Required.class.getSimpleName(), field);
  						leafs.add(violation);
  					}
  				}
  			}
  
  			if (!leafs.isEmpty()) {
  				throw new ValidationConstraintViolationException(preMessage, leafs);
  			}
  		}
  	}
docs: <p>
  validate.
  </p>
  
  @param request
  a {@link com.apitrary.api.request.Request} object.
  @param <T>
  a T object.
  @throws com.apitrary.api.client.exception.ValidationConstraintViolationException
  if any.