External source of valueChange events. Can sources modification be avoided?

I use Vaadin together with Avaje Ebean ORM. Typical usage is to load some entity from DB with Ebean, edit it with Vaadin and save back.
I wrapping my domain entities with BeanItem and attach them to form. All forms are write-through. When user changes something in form it usually leads to change of several other of bean properies. I need the way to propagate them back to UI.
Ebean has pretty enhancer, which enhances all my domain objects. It makes possible to add interceptor to them, and allows to track changes to fields even setter was called locally from the same domain object.
The main idea is to use that interceptor to trigger valueChange event for Vaadin.
What is coming to my mind is to subclass BeanItem to add listener via Ebean interceptor which will trigger MethodProperty.fireValueChange.
But that leads to at least two problems:
1 fireValueChange will be triggered twice each time - from MethodProperty first, and then from Ebean interceptor second time.
2. AbstractBeanContainer will instantiate original BeanItems, not subclassed.
The only solution I see is to patch MethodProperty to skip fireValueChange for ebean-enhanced beans, and patch BeanContainer to instantiate correct BeanItem for such beans too.


Is there a cleaner way to implement such approach? Is it possible to avoid Vaadin source code modification?

Well, seems like modification of vaadin sources is unavoidable in such approach…
From other side - what’s Vaadin native approach to handle situation when change through Vaadin form to bound domain object leads to changes to other object fields?

For example switching order’s status to “SHIPPED” must automatically switch order’s field “shipment date” to current date. Both fields are editable through UI, of course.

What’s Vaadin native approach to do that?