+1

Juergen

On 4/22/05, Eelco Hillenius <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> In project wicket-contrib-data, there is TransientObjectDetachableModel.
> I find this model very usefull, and think that this model (maybe with a
> different name?) should be in wicket-core or wicket-extensions as in my
> opinion the current way of making a custom detachable models is just too
> verbose.
> 
> It handles the case where you want to load an object when onAttach is
> called, that object (transient) is returned on getObject, and onDetach,
> the object is set to null again. In my implementation, there is only one
> method to implement (load) opposed to the multiple methods when
> overriding AbstractDetachableModel.
> 
> An example of it's usage:
> 
> public final class HuidigeKlantModel extends TransientObjectDetachableModel
> {
>    protected Object load()
>    {
>        FmoDemoSession session = (FmoDemoSession)WebSession.get();
>        return session.getHuidigeKlant();
>    }
> }
> 
> And this is the implementation:
> 
> import wicket.Component;
> import wicket.model.AbstractDetachableModel;
> 
> /**
> * Model that makes working with detachable models a breeze again.
> * Holds a temporary, transient model object, that is set on 'onAttach'
> by calling
> * abstract method 'load', and that will be reset/ set to null on
> 'onDetach'.
> *
> * A usage example:
> * <pre>
> * TransientObjectDetachableModel venueListModel = new
> TransientObjectDetachableModel()
> * {
> *   protected Object load()
> *   {
> *      return getVenueDao().findVenues();
> *   }
> * };
> * </pre>
> *
> * @author Eelco Hillenius
> */
> public abstract class TransientObjectDetachableModel extends
> AbstractDetachableModel
> {
>    /** temporary, transient object. */
>    private transient Object tempModelObject;
> 
>    /**
>     * Construct.
>     */
>    public TransientObjectDetachableModel()
>    {
>        super();
>    }
> 
>    /**
>     * @see wicket.model.AbstractDetachableModel#onAttach()
>     */
>    protected final void onAttach()
>    {
>        this.setObject(load());
>    }
> 
>    /**
>     * Loads and returns the (temporary) model object.
>     * @return the (temporary) model object
>     */
>    protected abstract Object load();
> 
>    /**
>     * @see wicket.model.AbstractDetachableModel#onDetach()
>     */
>    protected final void onDetach()
>    {
>        tempModelObject = null;
>    }
> 
>    /**
>     * @see
> wicket.model.AbstractDetachableModel#onGetObject(wicket.Component)
>     */
>    protected final Object onGetObject(Component component)
>    {
>        return tempModelObject;
>    }
> 
>    /**
>     * Sets the object.
>     * @param object the object
>     */
>    protected final void setObject(Object object)
>    {
>        setObject(null, object);
>    }
> 
>    /**
>     * @see
> wicket.model.AbstractDetachableModel#onSetObject(wicket.Component,
> java.lang.Object)
>     */
>    protected final void onSetObject(Component component, Object object)
>    {
>        this.tempModelObject = object;
>    }
> 
>    /**
>     * @see wicket.model.IModel#getNestedModel()
>     */
>    public final Object getNestedModel()
>    {
>        return tempModelObject;
>    }
> }
> 
> Votes please?
> 
> Eelco
> 
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now.
> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
> _______________________________________________
> Wicket-develop mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
>


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id396&op=click
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to