Re: [jira] Commented: (CAY-512) Keep DataObjects in commited state for no-op writeProperties

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Feb 19 2009 - 08:06:20 EST

  • Next message: Kevin Menard: "Re: jira permissions?"

    > So it works correct, provided "artist.setName(artist.getName());"
    > pushes object to modified state. The problem is that isNoop() can
    > work slowly, so we likely don't want to fire it always when
    > hasChanges() is called.

    +1.

    On Feb 19, 2009, at 7:31 AM, Andrey Razumovsky (JIRA) wrote:

    >
    > [ https://issues.apache.org/cayenne/browse/CAY-512?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13248
    > #action_13248 ]
    >
    > Andrey Razumovsky commented on CAY-512:
    > ---------------------------------------
    >
    > Hi Øyvind,
    >
    > The javadoc in hasChanges() says:
    > "Returns <code>true</code> if there are any modified, deleted or new
    > objects registered with this DataContext".
    >
    > So it works correct, provided "artist.setName(artist.getName());"
    > pushes object to modified state. The problem is that isNoop() can
    > work slowly, so we likely don't want to fire it always when
    > hasChanges() is called.
    >
    > A new method, however, would be useful
    >
    >
    >
    >> Keep DataObjects in commited state for no-op writeProperties
    >> ------------------------------------------------------------
    >>
    >> Key: CAY-512
    >> URL: https://issues.apache.org/cayenne/browse/CAY-512
    >> Project: Cayenne
    >> Issue Type: Improvement
    >> Components: Cayenne Core Library
    >> Affects Versions: 1.2 branch
    >> Environment: M9-B1
    >> Reporter: Mike Kienenberger
    >> Assignee: Andrus Adamchik
    >> Fix For: Undefined future
    >>
    >>
    >> Regression: Cayenne M9+ sets DataObjects as "modified" during no-op
    >> writeProperties
    >> writeProperty("x", "y") puts dataObject into a modified state when
    >> "y" was already the value of "x" before the method call.
    >> Before M9, object would remain in committed state.
    >> Object in my ObjectStore:
    >> <ObjectId:Announcement, ANNOUNCEMENT_ID=200>={<ObjectId:Announcement,
    >> ANNOUNCEMENT_ID=200>; modified; [enabled=>Y; description=>SNAP;
    >> contentList=>(..); effectiveEndDate=>Mon Oct 31 00:00:00 EST 2005;
    >> effectiveStartDate=>Thu Sep 01 00:00:00 EDT 2005;
    >> qualifiedViewpointList=>(..)]}
    >> ObjectDiff of record -- appears to indicate that nothing has changed.
    >> Same as the other 4 restored objects.
    >> Comparision of snapshot values to object store values shows nothing
    >> different.
    >> value= ObjectDiff (id=3310)
    >> arcSnapshot= HashMap (id=3311)
    >> currentArcSnapshot= null
    >> diffId= 1
    >> flatIds= null
    >> nodeId= ObjectId (id=3309)
    >> objectStore= ObjectStore (id=3200)
    >> otherDiffs= null
    >> snapshot= HashMap (id=3312)
    >> org.objectstyle.cayenne.access.ObjectDif..33d68a
    >> {}
    >> null
    >> 1
    >> null
    >> <ObjectId:Announcement, ANNOUNCEMENT_ID=200>
    >> org.objectstyle.cayenne.access.ObjectStor..0cf
    >> null
    >> {enabled=Y, description=SNAP, effectiveEndDate=Mon Oct 31 00:00:00
    >> EST
    >> 2005, effectiveStartDate=Thu Sep 01 00:00:00 EDT 2005}
    >> A workaround has been to add code in my BaseDataObject class to check
    >> for the old value equaling the new value in writeProperty(), and if
    >> so, do nothing.
    >
    > --
    > This message is automatically generated by JIRA.
    > -
    > You can reply to this email to add a comment to the issue online.
    >
    >



    This archive was generated by hypermail 2.0.0 : Thu Feb 19 2009 - 08:06:52 EST