IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Validator : quel design pattern ?


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut Validator : quel design pattern ?
    Bonjour,

    Je cherche une façon simple d'offrir à toutes mes entités une validation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public abstract class EntityAbstract extends Serializable {
     
    	public abstract void validate() throws ValidationException;
     
    	protected static <E extends AbstractEntity> void validate(ClassValidator<E> validator, E entity) throws ValidationException {
    		InvalidValue[] values = validator.getInvalidValues(entity);
    		if(values != null && values.length > 0) {
    			throw new ValidationException(values);
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public final class Entity extends EntityAbstract {
     
    	private static final ClassValidator<Entity> VALIDATOR = new ClassValidator<Entity>(Entity.class);
     
    	@Override
    	public void validate() throws ValidationException {
    		validate(VALIDATOR, this);
    	}
    }
    Je pense que ça pourrait être mieux écrit, plus simple de créer des entités... mais je ne vois pas !

    A noter que j'utilise Spring 2.5, qui pourrait éventuellement me faciliter la tâche...

    Merci pour vos suggestions.

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    J'ai trouvé un peu mieux, avec la création automatique d'instances de validateurs dans une classe dédiée (ce qui évite de polluer les entités).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	private static final Map<String, ClassValidator<? extends AbstractEntity>> VALIDATORS = Collections
    			.synchronizedMap(new TreeMap<String, ClassValidator<? extends AbstractEntity>>());
     
    	/**
             * Get (and create if necessary) the validator for an Entity
             * @param <Entity> Entity class
             * @param entity Entity
             * @return Validator for this entity
             */
    	private static <Entity extends AbstractEntity> ClassValidator<Entity> getValidator(Entity entity) {
    		Class<Entity> clazz = (Class<Entity>) entity.getClass();
    		String className = clazz.getName();
    		ClassValidator<Entity> validator = null;
    		synchronized (VALIDATORS) {
    			validator = (ClassValidator<Entity>) VALIDATORS.get(className);
    			if (validator == null) {
    				validator = new ClassValidator<Entity>(clazz);
    				VALIDATORS.put(className, validator);
    			}
    		}
    		return validator;
    	}
    Il reste cependant des avertissements que je ne parviens pas à supprimer :
    • Unchecked cast from Class<capture#1-of ? extends AbstractEntity> to Class<Entity>
    • Unchecked cast from ClassValidator<capture#2-of ? extends AbstractEntity> to ClassValidator<Entity>

Discussions similaires

  1. Dépendance entre objets : quel design pattern?
    Par zigxag dans le forum Design Patterns
    Réponses: 3
    Dernier message: 13/12/2007, 10h14
  2. Quel Design Pattern choisir?
    Par Aïssa dans le forum Design Patterns
    Réponses: 20
    Dernier message: 24/01/2007, 17h12
  3. Réponses: 9
    Dernier message: 05/12/2006, 10h00
  4. Réponses: 5
    Dernier message: 21/06/2006, 14h47
  5. Quel design pattern pour réaliser une synthèse
    Par jbwan dans le forum Design Patterns
    Réponses: 3
    Dernier message: 21/04/2006, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo