Skip to content

Commit 72ab284

Browse files
wynnteoWynn Teo
andauthored
Bael 9422 (#18762)
* BAEL-9422 * Update test name --------- Co-authored-by: Wynn Teo <[email protected]>
1 parent 90bcf33 commit 72ab284

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/bidirection/Item.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
package com.baeldung.jackson.bidirection;
22

3+
import com.fasterxml.jackson.annotation.JsonBackReference;
4+
35
public class Item {
6+
47
public int id;
58
public String itemName;
69
public User owner;
710

11+
@JsonBackReference(value="soldItemsRef")
12+
public User soldOwner;
13+
@JsonBackReference(value="wishlistRef")
14+
public User wishlistOwner;
15+
816
public Item() {
917
super();
1018
}

jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/bidirection/User.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,19 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6+
import com.fasterxml.jackson.annotation.JsonManagedReference;
7+
68
public class User {
9+
710
public int id;
811
public String name;
912
public List<Item> userItems;
1013

14+
@JsonManagedReference(value="wishlistRef")
15+
public List<Item> wishlist = new ArrayList<>();
16+
@JsonManagedReference(value="soldItemsRef")
17+
public List<Item> soldItems = new ArrayList<>();
18+
1119
public User() {
1220
super();
1321
}

jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/bidirection/JacksonBidirectionRelationUnitTest.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import static org.hamcrest.Matchers.nullValue;
77
import static org.junit.Assert.assertEquals;
88
import static org.junit.Assert.assertThat;
9+
import static org.junit.jupiter.api.Assertions.assertThrows;
910

1011
import java.io.IOException;
12+
import java.util.List;
1113

1214
import org.junit.Test;
1315

@@ -18,7 +20,7 @@
1820

1921
public class JacksonBidirectionRelationUnitTest {
2022

21-
@Test (expected = JsonMappingException.class)
23+
@Test(expected = JsonMappingException.class)
2224
public void givenBidirectionRelation_whenSerializing_thenException() throws JsonProcessingException {
2325
final User user = new User(1, "John");
2426
final Item item = new Item(2, "book", user);
@@ -149,4 +151,39 @@ public void givenBidirectionRelation_whenUsingInternalJsonView_thenException() t
149151
.writeValueAsString(item);
150152
}
151153

154+
@Test
155+
public void givenMultipleBackReferencesOnWishlist_whenNamedReference_thenNoException() throws JsonProcessingException {
156+
User user = new User();
157+
user.id = 1;
158+
user.name = "Alice";
159+
160+
Item item1 = new Item();
161+
item1.id = 101;
162+
item1.itemName = "Book";
163+
item1.wishlistOwner = user;
164+
165+
Item item2 = new Item();
166+
item2.id = 102;
167+
item2.itemName = "Pen";
168+
item2.wishlistOwner = user;
169+
170+
user.wishlist = List.of(item1, item2);
171+
172+
Item item3 = new Item();
173+
item3.id = 201;
174+
item3.itemName = "Laptop";
175+
item3.soldOwner = user;
176+
177+
Item item4 = new Item();
178+
item4.id = 202;
179+
item4.itemName = "Phone";
180+
item4.soldOwner = user;
181+
182+
user.soldItems = List.of(item3, item4);
183+
184+
String json = new ObjectMapper().writeValueAsString(user);
185+
assertThat(json, containsString("Alice"));
186+
assertThat(json, containsString("Book"));
187+
assertThat(json, containsString("Pen"));
188+
}
152189
}

0 commit comments

Comments
 (0)