OVal e la validazione degli oggetti in Java

Java

Ormai è indubbio che la Reflection sia un giochino con cui si stanno divertendo un sacco di persone. Si tratta di una serie di librerie (sia Java che .Net) che consentono di sapere a Runtime tutto su una classe, un’istanza o sull’assembly di partenza. In Java la reflection consente facilmente di effettuare il mixing di codice su un assembly (ciò ha dato vita alla celebre libreria AspectJ) e recentemente si sono viste queste tecniche portate su .Net.

Usando AspectJ un gruppo di sviluppatori ha creato la libreria OVal che consente di decorare gli attributi di una classe Java indicando i costraint che occorre soddisfare per utilizzare correttamente quell’attributo. Supponiamo di avere un campo di tipo string e vogliamo aggiungere un costraint che impedisca stringhe nulle o con lunghezze maggiori di 32 caratteri. Allora scriveremo qualcosa del tipo

@net.sf.oval.annotations.Guarded
public class BusinessObject
{
    @NotNull
    @NotEmpty
    @Length(max=10)
    private String name;
	
    public void setName(@FieldConstraints String name)
    {
        this.name = name;
    }
	
    public void setAlternativeName(@FieldConstraints("name") String altName)
    {
        this.alternativeName = altName;
    }
	
    ...
}

Potremo usare la classe in questo modo:

BusinessObject bo = new BusinessObject();
	
bo.setName(""); // throws a ConstraintsViolatedException because parameter is empty
	
bo.setAlternativeName(null); // throws a ConstraintsViolatedException because parameter is null

Simpatico no? A volte mi fermo a pensare che i linguaggi di programmazione abbiamo già detto tutto. Ma poi arriva una cosa così e mi rimangio tutto. Buon Natale e Felice Anno Nuovo!!!

3 Comments

  1. Luk  •  Dec 23, 2006 @4:39 pm

    I linguaggi di programmazione sono così lontani dalla ricchezza espressiva del linguaggio umano che ne vedremo ancora delle belle :)
    Buon Natale a tutti

  2. Refumar  •  Dec 23, 2006 @6:58 pm

    Ottima cosa, ma ormai non mi stupisco di niente. Auguri a tutti di Buon Natale.

  3. carmelo  •  Jan 14, 2007 @12:15 am

    Buono per chi lavora a livello middleware, tra web script e database, ma non solo.

    Commento tardivo, quindi Buona pasqua a tutti :D

Leave a Reply

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



  • Google Adsense

  • MiniBlog

    Banner Javaday Roma III Edizione >>

    Adobe ha appena sfornato il Flash player nella versione 10, stavolta anche per Linux da subito! Incredibile >>

    When the source code to Quake was leaked and circulated among the Quake community underground in 1996, a programmer unaffiliated with id Software used it to port Quake to Linux, and subsequently sent the patches to Carmack. Instead of pursuing legal action, id Software, at Carmack’s behest, used the patches as the foundation for a company-sanctioned Linux port. id Software has since publicly released the source code to Quake, Quake 2 and most recently Quake 3, all under the GNU General Public License (GPL). >>

    Ganymede Donate, please ;) >>

    Download Day 2008 >>

    Scusa Ameri, Sun s’è comprata MySQL e Oracle s’è pappata BEA. >>

    Chi ha bisogno di un Mac quando con Linux abbiamo Compiz, Open Office, Inkscape, Scribus, Eclipse, Tracker, ed ora anche una Time Machine per recuperare al volo vecchi backup? Per ora manca lo sberluccichio di casa Apple ma il funzionamento è analogo: si chiama FlyBack! >>

    Giusto per ricordarvi che una delle distribuzioni Linux più diffuse sta per raggiungere le nostre scrivanie :D

    >>

    Anche se me ne vergogno come un ladro non posso esimermi dal pubblico ludibrio consentendovi di ritrovare tracce di me nella storia di Internet: era il 6 Ottobre 1995 ed il 4 Novembre 1995. E come non ricordare la mia prima Home Page>>

    Assegnati gli Ig Nobel per la ricerca improbabile qui e, appena possibile, qui. >>

  • Categories