This week's book giveaway is in the Performance forum.We're giving away four copies of The Java Performance Companion and have Charlie Hunt, Monica Beckwith, Poonam Parhar, & Bengt Rutisson on-line!See this thread for details.
Win a copy of The Java Performance Companion this week in the Performance forum!

Assignment rules for relationships

Richard Green
Ranch Hand
Posts: 536
I dont get it. Can some one explain this to me:

Spec: Page Number 139

One-to-many bidirectional relationships

A and B are in a one-to-many bidirectional relationship:

A 0..1<-----> 0..* B

Before change:

Collection b1 = a1.getB();
Collection b2 = a2.getB();
B b11, b12, ... , b1n; // members of b1
B b21, b22, ... , b2m; // members of b2

Change:

a1.setB(a2.getB());
Expected result:
(a2.getB().isEmpty()) &&
(b2.isEmpty()) &&
(b1 == a1.getB()) &&
(b2 == a2.getB()) &&
(a1.getB().contains(b21)) &&
(a1.getB().contains(b22)) && ... &&
(a1.getB().contains(b2m)) &&
(b11.getA() == null) &&
(b12.getA() == null) && ... &&
(b1n.getA() == null) &&
(a1.isIdentical(b21.getA())) &&
(a1.isIdentical(b22.getA())) && ...&&
(a1.isIdentical(b2m.getA()))

I understand the above. But.

Change:
b2m.setA(b1n.getA());

Since b1n.getA() == null, shouldn't it be b2m.setA(null); ??

but according to the spec, it is

Expected result:
(b1.contains(b11)) &&
(b1.contains(b12)) && ... &&
(b1.contains(b1n)) &&
(b1.contains(b2m)) &&
(b2.contains(b21)) &&
(b2.contains(b22)) && ... &&
(b2.contains(b2m_1)) &&
(a1.isIdentical(b11.getA())) &&
(a1.isIdentical(b12.getA())) && ... &&
(a1.isIdentical(b1n.getA())) &&
(a2.isIdentical(b21.getA())) &&
(a2.isIdentical(b22.getA())) && ... &&
(a2.isIdentical(b2m_1.getA())) &&
(a1.isIdentical(b2m.getA()))

Richard Green
Ranch Hand
Posts: 536
I dont get it. Can someone explain.

Herman Schelti
Ranch Hand
Posts: 387
hi Lynette Dawson,

see page 137:
All changes in each subsection are assumed to be applied to the figure labeled �Before change� at the beginning of the subsection (i.e., changes are not cumulative).

Hope this helps!

Herman

Richard Green
Ranch Hand
Posts: 536
Oh damn, that explains a lot!!

Cheers!