Skip to content

Commit e667993

Browse files
author
Eugen
committed
Merge pull request eugenp#129 from Doha2012/master
small modifications
2 parents bf72c56 + 978b12c commit e667993

4 files changed

Lines changed: 99 additions & 21 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import org.baeldung.jackson.jsonview.Views;
4+
5+
import com.fasterxml.jackson.annotation.JsonView;
6+
7+
public class ItemWithView {
8+
@JsonView(Views.Public.class)
9+
public int id;
10+
11+
@JsonView(Views.Public.class)
12+
public String itemName;
13+
14+
@JsonView(Views.Public.class)
15+
public UserWithView owner;
16+
17+
public ItemWithView() {
18+
super();
19+
}
20+
21+
public ItemWithView(final int id, final String itemName, final UserWithView owner) {
22+
this.id = id;
23+
this.itemName = itemName;
24+
this.owner = owner;
25+
}
26+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.baeldung.jackson.bidirection;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.baeldung.jackson.jsonview.Views;
7+
8+
import com.fasterxml.jackson.annotation.JsonView;
9+
10+
public class UserWithView {
11+
@JsonView(Views.Public.class)
12+
public int id;
13+
14+
@JsonView(Views.Public.class)
15+
public String name;
16+
17+
@JsonView(Views.Internal.class)
18+
public List<ItemWithView> userItems;
19+
20+
public UserWithView() {
21+
super();
22+
}
23+
24+
public UserWithView(final int id, final String name) {
25+
this.id = id;
26+
this.name = name;
27+
userItems = new ArrayList<ItemWithView>();
28+
}
29+
30+
public void addItem(final ItemWithView item) {
31+
userItems.add(item);
32+
}
33+
}

jackson/src/test/java/org/baeldung/jackson/test/JacksonBidirectionRelationTest.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
import org.baeldung.jackson.bidirection.ItemWithIgnore;
1313
import org.baeldung.jackson.bidirection.ItemWithRef;
1414
import org.baeldung.jackson.bidirection.ItemWithSerializer;
15+
import org.baeldung.jackson.bidirection.ItemWithView;
1516
import org.baeldung.jackson.bidirection.User;
1617
import org.baeldung.jackson.bidirection.UserWithIdentity;
1718
import org.baeldung.jackson.bidirection.UserWithIgnore;
1819
import org.baeldung.jackson.bidirection.UserWithRef;
1920
import org.baeldung.jackson.bidirection.UserWithSerializer;
21+
import org.baeldung.jackson.bidirection.UserWithView;
22+
import org.baeldung.jackson.jsonview.Views;
2023
import org.junit.Test;
2124

2225
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -107,4 +110,26 @@ public void givenBidirectionRelation_whenUsingCustomDeserializer_thenCorrect() t
107110
assertEquals("John", item.owner.name);
108111
}
109112

110-
}
113+
@Test
114+
public void givenBidirectionRelation_whenUsingPublicJsonView_thenCorrect() throws JsonProcessingException {
115+
final UserWithView user = new UserWithView(1, "John");
116+
final ItemWithView item = new ItemWithView(2, "book", user);
117+
user.addItem(item);
118+
119+
final String result = new ObjectMapper().writerWithView(Views.Public.class).writeValueAsString(item);
120+
121+
assertThat(result, containsString("book"));
122+
assertThat(result, containsString("John"));
123+
assertThat(result, not(containsString("userItems")));
124+
}
125+
126+
@Test(expected = JsonMappingException.class)
127+
public void givenBidirectionRelation_whenUsingInternalJsonView_thenException() throws JsonProcessingException {
128+
final UserWithView user = new UserWithView(1, "John");
129+
final ItemWithView item = new ItemWithView(2, "book", user);
130+
user.addItem(item);
131+
132+
new ObjectMapper().writerWithView(Views.Internal.class).writeValueAsString(item);
133+
}
134+
135+
}

spring-security-rest-full/src/main/java/org/baeldung/web/controller/UserController.java

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@
1515
import org.baeldung.web.util.SearchCriteria;
1616
import org.springframework.beans.factory.annotation.Autowired;
1717
import org.springframework.data.jpa.domain.Specification;
18+
import org.springframework.http.HttpStatus;
1819
import org.springframework.stereotype.Controller;
20+
import org.springframework.web.bind.annotation.RequestBody;
1921
import org.springframework.web.bind.annotation.RequestMapping;
2022
import org.springframework.web.bind.annotation.RequestMethod;
2123
import org.springframework.web.bind.annotation.RequestParam;
2224
import org.springframework.web.bind.annotation.ResponseBody;
25+
import org.springframework.web.bind.annotation.ResponseStatus;
2326

27+
import com.google.common.base.Preconditions;
2428
import com.mysema.query.types.expr.BooleanExpression;
2529

2630
@Controller
@@ -86,28 +90,18 @@ public Iterable<MyUser> findAllByQuerydsl(@RequestParam(value = "search") final
8690

8791
// API - WRITE
8892

89-
@RequestMapping(method = RequestMethod.GET, value = "/users/new")
90-
@ResponseBody
91-
public long addUser(@RequestParam("first") final String first, @RequestParam("last") final String last, @RequestParam("age") final int age) {
92-
final User user = new User();
93-
user.setFirstName(first);
94-
user.setLastName(last);
95-
user.setEmail("john@doe.com");
96-
user.setAge(age);
97-
dao.save(user);
98-
return user.getId();
93+
@RequestMapping(method = RequestMethod.POST, value = "/users")
94+
@ResponseStatus(HttpStatus.CREATED)
95+
public void create(@RequestBody final User resource) {
96+
Preconditions.checkNotNull(resource);
97+
dao.save(resource);
9998
}
10099

101-
@RequestMapping(method = RequestMethod.GET, value = "/myusers/new")
102-
@ResponseBody
103-
public long addMyUser(@RequestParam("first") final String first, @RequestParam("last") final String last, @RequestParam("age") final int age) {
104-
final MyUser user = new MyUser();
105-
user.setFirstName(first);
106-
user.setLastName(last);
107-
user.setEmail("john@doe.com");
108-
user.setAge(age);
109-
mydao.save(user);
110-
return user.getId();
100+
@RequestMapping(method = RequestMethod.POST, value = "/myusers")
101+
@ResponseStatus(HttpStatus.CREATED)
102+
public void addMyUser(@RequestBody final MyUser resource) {
103+
Preconditions.checkNotNull(resource);
104+
mydao.save(resource);
111105
}
112106

113107
}

0 commit comments

Comments
 (0)