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

Reply via email to