code: @Override
  	public boolean isValid(String value, ConstraintValidatorContext constraintContext) {
  		
  		// Si l'objet est null : false
  		if(value == null) return false;
  		
  		// Si l'objet n'est pas une chaine : false
  		if(!(value instanceof String)) return false;
  		
  		// On caste
  		String stringValue = (String) value;
  		
  		// Si la chaine est vide : false
  		if(stringValue == null || stringValue.length() == 0) return false;
  		
  		// Obtention du tableau de valeurs
  		String[] parts = stringValue.split("\\.");
  		
  		// Si la tableau n'a pas une taille de 4
  		if(parts == null || parts.length < 4) return false;
  		
  		// Pattern Numerique
  		Pattern pattern = Pattern.compile("\\d+");
  		
  		// Parcours du tableau
  		for (String part : parts) {
  
  			// Si ce n'est pas un Numerique
  			if(!pattern.matcher(part).matches()) return false;
  		}
  		
  		// On retourne true
  		return true;
  	}
docs: /*
  (non-Javadoc)
  @see javax.validation.ConstraintValidator#isValid(java.lang.Object, javax.validation.ConstraintValidatorContext)