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,6 +35,13 @@ public class GenericDao {
35 return entityManager.merge(entity); 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 * @param entityType Entity-Typ. 46 * @param entityType Entity-Typ.
40 * @param primaryKey Id 47 * @param primaryKey Id
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
@@ -5,7 +5,6 @@ import java.util.Collection; @@ -5,7 +5,6 @@ import java.util.Collection;
5 import javax.ejb.Stateless; 5 import javax.ejb.Stateless;
6 import javax.inject.Inject; 6 import javax.inject.Inject;
7 7
8 -import net.ziemers.swxercise.db.dao.GenericDao;  
9 import net.ziemers.swxercise.db.dao.user.UserDao; 8 import net.ziemers.swxercise.db.dao.user.UserDao;
10 import net.ziemers.swxercise.lg.model.user.Profile; 9 import net.ziemers.swxercise.lg.model.user.Profile;
11 import net.ziemers.swxercise.lg.model.user.User; 10 import net.ziemers.swxercise.lg.model.user.User;
@@ -25,7 +24,7 @@ public class UserService { @@ -25,7 +24,7 @@ public class UserService {
25 return dao.findAll(User.class); 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 final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword()); 28 final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword());
30 29
31 // wir füllen das User-Objekt mit Method Chaining 30 // wir füllen das User-Objekt mit Method Chaining
@@ -35,4 +34,8 @@ public class UserService { @@ -35,4 +34,8 @@ public class UserService {
35 return dao.save(user); 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,25 +21,25 @@ public class UserViewController {
21 private UserService userService; 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 @GET 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 @Produces(MediaType.APPLICATION_JSON) 29 @Produces(MediaType.APPLICATION_JSON)
39 public Collection<User> getAllUsers() { 30 public Collection<User> getAllUsers() {
40 return userService.findAllUsers(); 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 @GET 43 @GET
44 @Path("{id}") 44 @Path("{id}")
45 @Produces(MediaType.APPLICATION_JSON) 45 @Produces(MediaType.APPLICATION_JSON)
@@ -47,12 +47,54 @@ public class UserViewController { @@ -47,12 +47,54 @@ public class UserViewController {
47 return userService.findUser(id); 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 @PUT 78 @PUT
51 - @Path("/user") 79 + @Path("{id}")
52 @Consumes(MediaType.APPLICATION_JSON) 80 @Consumes(MediaType.APPLICATION_JSON)
53 @Produces({MediaType.TEXT_PLAIN}) 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 return "Ok"; 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,19 +7,14 @@ import org.mockito.InjectMocks;
7 import org.mockito.junit.MockitoJUnitRunner; 7 import org.mockito.junit.MockitoJUnitRunner;
8 8
9 @RunWith(MockitoJUnitRunner.class) 9 @RunWith(MockitoJUnitRunner.class)
10 -public class RestViewControllerTest {  
11 - 10 +public class UserViewControllerTest {
  11 +
12 @InjectMocks 12 @InjectMocks
13 private UserViewController underTest; 13 private UserViewController underTest;
14 14
15 @Test 15 @Test
16 public void test() { 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 }