Salve,

Provo a porre un quesito su un problema che sto affrontando per capire quale possa essere una soluzione passabile e/o migliore:

Io ho un dto che, per semplicità, rappresenta un Contact(nome/cognome/etc) che possiede vari Address (via/citta/etc), ognuno dei quali address ha un oggetto Label. Il contact appartiene ad uno User. La label può appartenere allo User o essere di Sistema. Quindi una cosa del tipo:

codice:
class Contact{

....
List<Address> addresses;
..
}

class Address{
  ...
   Label label;
}
Devo validare questo dto prima di procedere nella catena per la persistenza. Ho due validazioni:

1) campi obbligatori o con altri tipi di constraints "base": fatto, spring validator e annotations e tutto è andato perfettamente

2) Validare l'oggetto Label:

praticamente prima di procedere alla persistenza dovrei rispondere a queste domande: è una label di sistema? è dell'utente? è una label nuova? deve essere aggiornata la label nel db? non devo fare nulla? Questo perchè Label è posta sotto "versioning" (così come contact) e risponde a delle regole complesse e precise.

Quindi: come posso fare ad assicurarmi che le label del dto siano valide ai miei fini? Considerando che in realtà Contact è un oggetto molto complesso, con Label sparse un pò dappertutto, cosa dovrei fare, un validatore custom? estrarre tutte le label e fare i test del caso? "Famose a fidarmi dell'input" e chiudiamo gli occhi?

Come si può affrontare un problema simile secondo voi?