http://markmail.org/message/qttwc5kunubl6ieo

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Dec 5, 2016 at 4:46 PM, Martijn Dashorst <[email protected]
> wrote:

> This would not be any more efficient than scanning for fields that
> implement IDetachable. Which is: rather inefficient for when you have
> component hierarchies of 100-1000s of components.
>
> We have created a utility method at $$$ job that removes the need for
> the null check, and takes into account arrays and lists:
>
> protected void onDetach() {
>     detachQuietly(model1);
>     detachQuietly(model2);
> }
>
> public static void detachQuietly(Object detachable)
> {
>     if (detachable instanceof Component)
>     {
>         ((Component) detachable).detach();
>     }
>     else if (detachable instanceof IDetachable)
>     {
>         ((IDetachable) detachable).detach();
>     }
>     else if (detachable instanceof Map)
>     {
>         for (Map.Entry< ? , ? > entry : ((Map< ? , ? >)
> detachable).entrySet())
>         {
>             detachQuietly(entry.getKey());
>             detachQuietly(entry.getValue());
>         }
>     }
>     else if (detachable instanceof Iterable)
>     {
>         Iterator< ? > iter = ((Iterable< ? >) detachable).iterator();
>         while (iter.hasNext())
>         {
>             detachQuietly(iter.next());
>         }
>     }
>     else if (detachable instanceof Object[])
>     {
>         Object[] array = (Object[]) detachable;
>         for (Object curObj : array)
>         {
>             detachQuietly(curObj);
>         }
>     }
> }
>
>
>
> On Mon, Dec 5, 2016 at 4:34 PM, Boris Goldowsky <[email protected]>
> wrote:
> > Is there any way to create an annotation that would mark a field’s value
> as something that ought to be detached?  That is, instead of:
> >
> > private IModel<User> userModel;
> >
> >                 @Override
> >                 public void onDetach() {
> >                                 super.onDetach();
> >                                 if (userModel != null)
> >                                                 userModel.detach();
> >                 }
> >
> > I would like to be able to write simply:
> >
> >                 @Detach
> > private IModel<User> userModel;
> >
> > Has anyone tried this?
> >
> > Boris
> >
>
>
>
> --
> Become a Wicket expert, learn from the best: http://wicketinaction.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to