Skip to content

Commit 4cee202

Browse files
committed
Add jackson bidirectional relationship test
1 parent 983823d commit 4cee202

13 files changed

+394
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.io.IOException;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import com.fasterxml.jackson.core.JsonParser;
8+
import com.fasterxml.jackson.core.JsonProcessingException;
9+
import com.fasterxml.jackson.databind.DeserializationContext;
10+
import com.fasterxml.jackson.databind.JsonDeserializer;
11+
12+
public class CustomListDeserializer extends JsonDeserializer<List<ItemWithSerializer>> {
13+
14+
@Override
15+
public List<ItemWithSerializer> deserialize(final JsonParser jsonparser, final DeserializationContext context) throws IOException, JsonProcessingException {
16+
return new ArrayList<ItemWithSerializer>();
17+
}
18+
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.io.IOException;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import com.fasterxml.jackson.core.JsonGenerator;
8+
import com.fasterxml.jackson.core.JsonProcessingException;
9+
import com.fasterxml.jackson.databind.JsonSerializer;
10+
import com.fasterxml.jackson.databind.SerializerProvider;
11+
12+
public class CustomListSerializer extends JsonSerializer<List<ItemWithSerializer>> {
13+
14+
@Override
15+
public void serialize(final List<ItemWithSerializer> items, final JsonGenerator generator, final SerializerProvider provider) throws IOException, JsonProcessingException {
16+
final List<Integer> ids = new ArrayList<Integer>();
17+
for (final ItemWithSerializer item : items) {
18+
ids.add(item.id);
19+
}
20+
generator.writeObject(ids);
21+
}
22+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
4+
public class Item {
5+
public int id;
6+
public String itemName;
7+
public User owner;
8+
9+
public Item() {
10+
super();
11+
}
12+
13+
public Item(final int id, final String itemName, final User owner) {
14+
this.id = id;
15+
this.itemName = itemName;
16+
this.owner = owner;
17+
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
4+
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
5+
6+
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
7+
public class ItemWithIdentity {
8+
public int id;
9+
public String itemName;
10+
public UserWithIdentity owner;
11+
12+
public ItemWithIdentity() {
13+
super();
14+
}
15+
16+
public ItemWithIdentity(final int id, final String itemName, final UserWithIdentity owner) {
17+
this.id = id;
18+
this.itemName = itemName;
19+
this.owner = owner;
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
4+
public class ItemWithIgnore {
5+
public int id;
6+
public String itemName;
7+
public UserWithIgnore owner;
8+
9+
public ItemWithIgnore() {
10+
super();
11+
}
12+
13+
public ItemWithIgnore(final int id, final String itemName, final UserWithIgnore owner) {
14+
this.id = id;
15+
this.itemName = itemName;
16+
this.owner = owner;
17+
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import com.fasterxml.jackson.annotation.JsonManagedReference;
4+
5+
public class ItemWithRef {
6+
public int id;
7+
public String itemName;
8+
9+
@JsonManagedReference
10+
public UserWithRef owner;
11+
12+
public ItemWithRef() {
13+
super();
14+
}
15+
16+
public ItemWithRef(final int id, final String itemName, final UserWithRef owner) {
17+
this.id = id;
18+
this.itemName = itemName;
19+
this.owner = owner;
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
4+
public class ItemWithSerializer {
5+
public int id;
6+
public String itemName;
7+
public UserWithSerializer owner;
8+
9+
public ItemWithSerializer() {
10+
super();
11+
}
12+
13+
public ItemWithSerializer(final int id, final String itemName, final UserWithSerializer owner) {
14+
this.id = id;
15+
this.itemName = itemName;
16+
this.owner = owner;
17+
}
18+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class User {
7+
public int id;
8+
public String name;
9+
public List<Item> userItems;
10+
11+
public User() {
12+
super();
13+
}
14+
15+
public User(final int id, final String name) {
16+
this.id = id;
17+
this.name = name;
18+
userItems = new ArrayList<Item>();
19+
}
20+
21+
public void addItem(final Item item) {
22+
userItems.add(item);
23+
}
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
7+
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
8+
9+
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
10+
public class UserWithIdentity {
11+
public int id;
12+
public String name;
13+
public List<ItemWithIdentity> userItems;
14+
15+
public UserWithIdentity() {
16+
super();
17+
}
18+
19+
public UserWithIdentity(final int id, final String name) {
20+
this.id = id;
21+
this.name = name;
22+
userItems = new ArrayList<ItemWithIdentity>();
23+
}
24+
25+
public void addItem(final ItemWithIdentity item) {
26+
userItems.add(item);
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.annotation.JsonIgnore;
7+
8+
public class UserWithIgnore {
9+
public int id;
10+
public String name;
11+
12+
@JsonIgnore
13+
public List<ItemWithIgnore> userItems;
14+
15+
public UserWithIgnore() {
16+
super();
17+
}
18+
19+
public UserWithIgnore(final int id, final String name) {
20+
this.id = id;
21+
this.name = name;
22+
userItems = new ArrayList<ItemWithIgnore>();
23+
}
24+
25+
public void addItem(final ItemWithIgnore item) {
26+
userItems.add(item);
27+
}
28+
}

0 commit comments

Comments
 (0)