users@jersey.java.net

JAXB and object relationships

From: Steve Mactaggart <steve_at_whitesquaresoft.com>
Date: Tue, 6 Oct 2009 15:53:35 +1100

We have been using Jersey for a project for the last few months and
loving it. But this week have run into an issue that I think is with
JAXB not Jersey.
I'm posting the question here, as I guess others like me have probably
run into the same issue and there might be a really simple answer.

What I have is an element that has 2 children, each of them have
children where some of their children reference each other.

Let me show some code.

Root root = new Root();

Parent parent1 = new Parent();
Parent parent2 = new Parent();

root.add(parent1);
root.add(parent2);

Child child1 = new Child();
Child child2 = new Child();
Child child3 = new Child();

parent1.add(child1);
parent1.add(child2);

parent2.add(child2);
parent2.add(child3);

So we have 1 root, 2 parents and 3 children.

If I send this up and down the JAXB path, I seem to get back 4
children. Each Parent has their own copy of child2. Is there anyway
to get JAXB to serialise the relationship and show that both parent1
and parent2 point to the same object?

We only found this issue recently, when more complex elements were
being transmitted.

If there is no way to get JAXB to do this (thats what I believe at the
moment), does anyone have any suggestions of a way I could do some
magic in Jersey to re-instate the relationship?

Cheers,
Steve