CayenneContext.rollbackChanges (client-side) is marking objects in other 
contexts as transient!
-----------------------------------------------------------------------------------------------

                 Key: CAY-771
                 URL: https://issues.apache.org/cayenne/browse/CAY-771
             Project: Cayenne
          Issue Type: Bug
          Components: Cayenne Core Library
    Affects Versions: 3.0
         Environment: Mac OS X 10.4.9, Java 1.5, Cayenne 3.0-prerelease svn 
515808
            Reporter: Lachlan Deck
         Assigned To: Andrus Adamchik


The problem is: (this is 3 tier client-side)
- having two edit screens open, each with their own editing context but editing 
the same type of object
- use one edit screen and enter some data (particular data that sets a 
relationship value)
- close the edit screen where you've adjusted the data and then attempt to 
repeat the steps in the other edit screen.
- Exception thrown because the object you're trying to set the relationship on 
no longer has a context!

-------------------------------------------
--- logging and stack traces -----
-------------------------------------------
The context rolling back changes: (our subclass is simply calling super)
18:32:51,179 [AWT-EventQueue-0] DEBUG ish.oncourse.cayenne.CayenneContext  - 
rollbackChanges:[EMAIL PROTECTED]

Here's a stack trace from setPersistenceState; in our PersistentObject subclass 
I'm just logging (before calling super) the object. Notice this particular 
object is in a different context - but it's being marked as transient :-/

---- Here's the relevant stack trace from setPersistenceState in the object 
that shouldn't be touched -----
18:32:51,245 [AWT-EventQueue-0] DEBUG 
ish.oncourse.cayenne.glue.PersistentObject  - setPersistenceState context null? 
false
18:32:51,245 [AWT-EventQueue-0] DEBUG 
ish.oncourse.cayenne.glue.PersistentObject  - <[EMAIL PROTECTED], 
id=<ObjectId:CourseClass, TEMP:0
0001FB5B97E3E8F>, state=new, [EMAIL PROTECTED]> old state : new, new transient
java.lang.Exception
        at 
ish.oncourse.cayenne.glue.PersistentObject.setPersistenceState(PersistentObject.java:287)
        at 
org.apache.cayenne.ObjectContextStateLog.graphReverted(ObjectContextStateLog.java:89)
        at 
org.apache.cayenne.CayenneContextGraphManager.graphReverted(CayenneContextGraphManager.java:154)
        at 
org.apache.cayenne.CayenneContextMergeHandler$3.run(CayenneContextMergeHandler.java:105)
        at 
org.apache.cayenne.CayenneContextMergeHandler.runWithEventsDisabled(CayenneContextMergeHandler.java:286)
        at 
org.apache.cayenne.CayenneContextMergeHandler.graphRolledback(CayenneContextMergeHandler.java:102)
        at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.cayenne.util.Invocation.fire(Invocation.java:204)
        at 
org.apache.cayenne.event.EventManager$Dispatch.fire(EventManager.java:397)
        at 
org.apache.cayenne.event.DispatchQueue.dispatchEvent(DispatchQueue.java:146)
        at 
org.apache.cayenne.event.DispatchQueue.dispatchEvent(DispatchQueue.java:58)
        at 
org.apache.cayenne.event.EventManager.dispatchEvent(EventManager.java:336)
        at 
org.apache.cayenne.event.EventManager.postEvent(EventManager.java:307)
        at 
org.apache.cayenne.remote.ClientChannel.onSync(ClientChannel.java:215)
        at 
org.apache.cayenne.CayenneContext.rollbackChanges(CayenneContext.java:276)
        at 
ish.oncourse.cayenne.CayenneContext.rollbackChanges(CayenneContext.java:159)
        at 
ish.oncourse.controller.CayenneController.rollbackChanges(CayenneController.java:281)
        at 
ish.oncourse.controller.EditController.cancelEditRecord(EditController.java:610)
        at 
ish.oncourse.controller.EditController.windowClosing(EditController.java:455)
        at 
java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:291)
        at 
java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:291)
        at java.awt.Window.processWindowEvent(Window.java:1190)
        at javax.swing.JFrame.processWindowEvent(JFrame.java:267)
        at java.awt.Window.processEvent(Window.java:1148)
        at java.awt.Component.dispatchEventImpl(Component.java:4021)
        at java.awt.Container.dispatchEventImpl(Container.java:2068)
        at java.awt.Window.dispatchEventImpl(Window.java:1774)
        at java.awt.Component.dispatchEvent(Component.java:3869)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at 
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
        at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
18:32:51,345 [AWT-EventQueue-0] DEBUG 
ish.oncourse.cayenne.glue.PersistentObject  - setPersistenceState context null? 
true



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to