Community
Participate
Working Groups
Code assumes that list consists either of CDOID's only, or of CDOObjects only. But the list content can in fact be mixed. When it is, a ClassCastException gets thrown because the subsequent iteration over the list's contents assumes all elements are CDOID's. Offending code is in CDONotificationBuilder.java, lines 180 ff.
Created attachment 173394 [details] Testcase (as a patch) Testcase demonstrates how the problem can occur during refresh, if the list being clear locally had a new element that had not been committed yet.
I have a fix in mind...
I'm thinking there may be a deeper problem here. It seems a CDOClearFeatureDelta is generated if the incoming update removes all *persisted* elements of the list. So the mistake, as I see it, is that the delta is generated from a comparison between the new revision (from the server) and the revision that was originally viewed in the client -- but actually it should be between the new revision and the lists's *current* value (which may contain new, unpersisted elements).
Created attachment 173397 [details] Fix and Test v1
Committed to R3_0_maintenance
Moving all open problem reports to 4.0
Undoing accidental version change.
Closing.