+1 Having IDetachable items detached by default makes sense
On Fri, Apr 6, 2012 at 10:56 AM, Igor Vaynberg <igor.vaynb...@gmail.com> wrote: > its easy to enable detaching of any IDetachable field rather then only > IModel. this code can also walk behaviors, but i dont think it should > go beyond that. walking the entire object graph will be too expensive. > right now it performs a lot of caching which makes it work well. > > -igor > > On Fri, Apr 6, 2012 at 10:48 AM, Dan Retzlaff <dretzl...@gmail.com> wrote: >> Sorry to double-post, but I realized it's trivial to visit the object graph >> since local final variables show up as fields in the inner class. This >> following snippet prints "detaching". So what do you think about >> generalizing the automatic detach to all objects, not just components? >> >> final IModel model = new IModel() { >> @Override >> public Object getObject() { >> return null; >> } >> @Override >> public void setObject(Object object) { >> } >> @Override >> public void detach() { >> System.out.println("detaching"); >> } >> }; >> Object object = new Object() { >> public void method() { >> System.out.println(model.getObject()); >> } >> }; >> for (Field f : object.getClass().getDeclaredFields()) { >> System.out.println(f.getName()); >> if (IModel.class.isAssignableFrom(f.getType())) { >> f.setAccessible(true); >> ((IModel)f.get(object)).detach(); >> } >> } >> >> On Fri, Apr 6, 2012 at 11:26 AM, Dan Retzlaff <dretzl...@gmail.com> wrote: >> >>> I wish there were a way to apply this strategy to the whole object graph >>> (not just fields). I use local final LoadableDetachableModels on occasion, >>> and it'd be nice for those to magically detach too. I'm +0. >>> >>> Just got Calc-Eric's message. Looks like we're on the same page. >>> >>> >>> On Fri, Apr 6, 2012 at 10:42 AM, Igor Vaynberg >>> <igor.vaynb...@gmail.com>wrote: >>> >>>> i wrote a IDetachListener that automatically detaches any IModel >>>> fields found on components. is this something we would be interested >>>> in for core? its been running in production for a while without any >>>> noticeable overhead and its nice not to have to implemenet onDetach() >>>> all the time just to forward it to secondary models. the only downside >>>> is that once we introduce this feature we can never remote it because >>>> doing so will break code. >>>> >>>> thoughts? >>>> >>>> -igor >>>> >>> >>>