cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Huss <johnth...@gmail.com>
Subject Re: Change tracking API in Cayenne
Date Fri, 11 Oct 2019 14:37:29 GMT
Providing a "minimal viable product" type of implementation of this as a
starting point for users to customize or copy would probably be helpful.

On Fri, Oct 11, 2019 at 9:35 AM Andrus Adamchik <andrus@objectstyle.org>
wrote:

> So you'd need to consume GraphDiff, you need to implement a custom
> GraphChangeHandler, and then do "diff.apply(myChangeHandler)" to aggregate
> / filter the changes you care about. All the references to "nodeId" in
> GraphChangeHandler can be cast to ObjectId, so you can tie it back to the
> actual objects. So while it is not user-friendly, I think you can turn it
> to useful info in a fairly straightforward manner.
>
> Andrus
>
>
> > On Oct 11, 2019, at 10:24 AM, John Huss <johnthuss@gmail.com> wrote:
> >
> > I haven't worked with the GraphDiff API much, but it's not super easy to
> > turn a GraphDiff into something immediately useful.
> >
> > When I've needed things like this I've usually constructed a
> > List<Map<String, Object>> with a row for each changed object and a map
> with
> > attribute/relationship key to the new value. Looking at
> > NodePropertyChangeOperation - it has the key and the old and new value,
> but
> > the API doesn't have any way of extracting that information that I see.
> >
> > Most likely I just don't understand how to use this correctly, but I'm
> > guessing I wouldn't be the only one.
> >
> > On Fri, Oct 11, 2019 at 5:36 AM Andrus Adamchik <andrus@objectstyle.org>
> > wrote:
> >
> >> Was just answering Cayenne change tracking question on StackOverlow [1],
> >> and realized that the only user-friendly API that allows to check for
> >> individual changes is "cayenne-commitlog" that only works during commit.
> >> All the pre-commit APIs are internal and require lots of hoop jumping. I
> >> think we can address that on the cheap in 4.2 by defining a method like
> >> this in GraphManager.java:
> >>
> >>  GraphDiff getChanges();
> >>
> >> We already have such method implemented in ObjectStore, so there's
> really
> >> no effort and an immediate benefit. Or take it a step further and
> >> additionally implement filtering changes per object:
> >>
> >>  GraphDiff getChanges(Persistent)
> >>
> >> Thoughts?
> >>
> >> Andrus
> >>
> >> [1]
> >>
> https://stackoverflow.com/questions/58318730/what-is-the-current-best-method-of-getting-the-changes-to-an-object-hierarchy-in
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message