Commit 7e738cb7fc72ed327f16171758809aacb155a8d7
1 parent
2392615c
refactor: die REST-Methoden schicker gemacht
Showing
4 changed files
with
71 additions
and
24 deletions
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 | } | ... | ... |