You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "John Huss (JIRA)" <ji...@apache.org> on 2013/06/04 23:21:21 UTC

[jira] [Created] (CAY-1832) Exception when modifying objects in postLoad callback

John Huss created CAY-1832:
------------------------------

             Summary: Exception when modifying objects in postLoad callback
                 Key: CAY-1832
                 URL: https://issues.apache.org/jira/browse/CAY-1832
             Project: Cayenne
          Issue Type: Bug
          Components: Core Library
    Affects Versions: 3.2M1
            Reporter: John Huss
            Assignee: John Huss
            Priority: Minor
             Fix For: 3.2M1


Say you have a postLoad callback on an entity that calls a setter on the object, for example:

public void publicCallback(Object entity) {
        Artist a = (Artist)entity;
        a.setArtistName("Changed");
}

This works if you fetch the object directly with a SelectQuery.  But if you fault in the object through a relationship it will call BaseContext.prepareForAccess which has this:

            // sanity check...
            if (object.getPersistenceState() != PersistenceState.COMMITTED) {

                String state = PersistenceState.persistenceStateName(object
                        .getPersistenceState());

                // TODO: andrus 4/13/2006, modified and deleted states are possible due to
                // a race condition, should we handle them here?

                throw new FaultFailureException(...
            }

Since the object is modified (not committed) an exception is thrown.  It is valid to allow mutating an object during postLoad.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira