Commit 7e738cb7fc72ed327f16171758809aacb155a8d7

Authored by Thomas Ziemer
1 parent 2392615c

refactor: die REST-Methoden schicker gemacht

src/main/java/net/ziemers/swxercise/db/dao/GenericDao.java
... ... @@ -35,6 +35,13 @@ public class GenericDao {
35 35 return entityManager.merge(entity);
36 36 }
37 37  
  38 + public <T extends BaseEntity> T remove(Class<T> entityType, Long primaryKey) {
  39 + final T entity = findById(entityType, primaryKey);
  40 +
  41 + entityManager.remove(entity);
  42 + return entity;
  43 + }
  44 +
38 45 /**
39 46 * @param entityType Entity-Typ.
40 47 * @param primaryKey Id
... ...
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
... ... @@ -5,7 +5,6 @@ import java.util.Collection;
5 5 import javax.ejb.Stateless;
6 6 import javax.inject.Inject;
7 7  
8   -import net.ziemers.swxercise.db.dao.GenericDao;
9 8 import net.ziemers.swxercise.db.dao.user.UserDao;
10 9 import net.ziemers.swxercise.lg.model.user.Profile;
11 10 import net.ziemers.swxercise.lg.model.user.User;
... ... @@ -25,7 +24,7 @@ public class UserService {
25 24 return dao.findAll(User.class);
26 25 }
27 26  
28   - public Long saveUser(final UserDto userDto) {
  27 + public Long createUser(final UserDto userDto) {
29 28 final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword());
30 29  
31 30 // wir füllen das User-Objekt mit Method Chaining
... ... @@ -35,4 +34,8 @@ public class UserService {
35 34 return dao.save(user);
36 35 }
37 36  
  37 + public void deleteUser(final Long id) {
  38 + dao.remove(User.class, id);
  39 + }
  40 +
38 41 }
... ...
src/main/java/net/ziemers/swxercise/ui/UserViewController.java
... ... @@ -21,25 +21,25 @@ public class UserViewController {
21 21 private UserService userService;
22 22  
23 23 /**
24   - * Schickt eine Hello-Nachricht zum Aufrufer zurück.
  24 + * Liefert alle User-Objekte zurück.
25 25 *
26   - * @param name der Name, der in der Hallo-Nachricht angegeben wird
27   - * @return eine Hallo-Nachricht
  26 + * @return die User-Objekte.
28 27 */
29 28 @GET
30   - @Path("/hello/{name}")
31   - @Produces(MediaType.TEXT_PLAIN)
32   - public String helloPath(@PathParam("name") String name) {
33   - return String.format("Hello %s", name);
34   - }
35   -
36   - @GET
37   - @Path("/all")
38 29 @Produces(MediaType.APPLICATION_JSON)
39 30 public Collection<User> getAllUsers() {
40 31 return userService.findAllUsers();
41 32 }
42 33  
  34 + /**
  35 + * Liefert das User-Objekt mit der gewünschten Id zurück.
  36 + *
  37 + * Aufruf:
  38 + * GET http://localhost:8080/swxercise/rest/users/42
  39 + *
  40 + * @param id die Id des gewünschten User-Objekts
  41 + * @return das User-Objekt.
  42 + */
43 43 @GET
44 44 @Path("{id}")
45 45 @Produces(MediaType.APPLICATION_JSON)
... ... @@ -47,12 +47,54 @@ public class UserViewController {
47 47 return userService.findUser(id);
48 48 }
49 49  
  50 + /**
  51 + * Erstellt ein neues User-Objekt mit den gewünschten Eigenschaften, welche mittels {@link UserDto} definiert werden.
  52 + *
  53 + * Aufruf:
  54 + * POST http://localhost:8080/swxercise/rest/users
  55 + *
  56 + * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto}
  57 + * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war.
  58 + * @throws Exception wirft eine Exception, wenn das Erstellen des UserDto fehlschlug
  59 + */
  60 + @POST
  61 + @Consumes(MediaType.APPLICATION_JSON)
  62 + @Produces({MediaType.TEXT_PLAIN})
  63 + public String createUser(UserDto dto) throws Exception {
  64 + userService.createUser(dto);
  65 + return "Ok";
  66 + }
  67 +
  68 + /**
  69 + * Aktualisiert das User-Objekt mit der gewünschten Id mit den Eigenschaften, welche mittels {@link UserDto} definiert werden.
  70 + *
  71 + * Aufruf:
  72 + * PUT http://localhost:8080/swxercise/rest/users/42
  73 + *
  74 + * @param id die Id des gewünschten User-Objekts
  75 + * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war.
  76 + * @throws Exception wirft eine Exception, wenn das Erstellen des UserDto fehlschlug
  77 + */
50 78 @PUT
51   - @Path("/user")
  79 + @Path("{id}")
52 80 @Consumes(MediaType.APPLICATION_JSON)
53 81 @Produces({MediaType.TEXT_PLAIN})
54   - public String postUser(UserDto userDto) throws Exception {
55   - userService.saveUser(userDto);
  82 + public String updateUser(@PathParam("id") Long id) throws Exception {
  83 + // TODO noch zu implementieren
  84 + return "Ok";
  85 + }
  86 +
  87 + /**
  88 + * Löscht das User-Objekt mit der gewünschten Id.
  89 + *
  90 + * @param id die Id des gewünschten User-Objekts
  91 + * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war.
  92 + */
  93 + @DELETE
  94 + @Path("{id}")
  95 + @Produces({MediaType.TEXT_PLAIN})
  96 + public String deleteUser(@PathParam("id") Long id) {
  97 + userService.deleteUser(id);
56 98 return "Ok";
57 99 }
58 100  
... ...
src/test/java/net/ziemers/swxercise/ui/RestViewControllerTest.java renamed to src/test/java/net/ziemers/swxercise/ui/UserViewControllerTest.java
... ... @@ -7,19 +7,14 @@ import org.mockito.InjectMocks;
7 7 import org.mockito.junit.MockitoJUnitRunner;
8 8  
9 9 @RunWith(MockitoJUnitRunner.class)
10   -public class RestViewControllerTest {
11   -
  10 +public class UserViewControllerTest {
  11 +
12 12 @InjectMocks
13 13 private UserViewController underTest;
14 14  
15 15 @Test
16 16 public void test() {
17   - final String name = "Tom";
18   - final String expected = "Hello " + name;
19   - String actual;
20   -
21   - actual = underTest.helloPath(name);
22   - Assert.assertEquals(expected, actual);
  17 + // TODO noch zu implementieren
23 18 }
24 19  
25 20 }
... ...