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] > >
