Commit 32cb94148d6c24ca185c26ffebf3dc45b8666b65
1 parent
86ec838e
feature: UserViewController und UserService optimiert
Showing
6 changed files
with
77 additions
and
34 deletions
pom.xml
@@ -43,6 +43,7 @@ | @@ -43,6 +43,7 @@ | ||
43 | <groupId>javax.ws.rs</groupId> | 43 | <groupId>javax.ws.rs</groupId> |
44 | <artifactId>javax.ws.rs-api</artifactId> | 44 | <artifactId>javax.ws.rs-api</artifactId> |
45 | <version>${jaxrs-version}</version> | 45 | <version>${jaxrs-version}</version> |
46 | + <scope>provided</scope> | ||
46 | </dependency> | 47 | </dependency> |
47 | <dependency> | 48 | <dependency> |
48 | <groupId>junit</groupId> | 49 | <groupId>junit</groupId> |
@@ -81,6 +82,7 @@ | @@ -81,6 +82,7 @@ | ||
81 | <groupId>mysql</groupId> | 82 | <groupId>mysql</groupId> |
82 | <artifactId>mysql-connector-java</artifactId> | 83 | <artifactId>mysql-connector-java</artifactId> |
83 | <version>${mysql-version}</version> | 84 | <version>${mysql-version}</version> |
85 | + <scope>provided</scope> | ||
84 | </dependency> | 86 | </dependency> |
85 | <dependency> | 87 | <dependency> |
86 | <groupId>org.jglue.cdi-unit</groupId> | 88 | <groupId>org.jglue.cdi-unit</groupId> |
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
@@ -58,11 +58,10 @@ public class UserService { | @@ -58,11 +58,10 @@ public class UserService { | ||
58 | } | 58 | } |
59 | 59 | ||
60 | public boolean deleteUser() { | 60 | public boolean deleteUser() { |
61 | + // ist zurzeit ein Benutzer angemeldet, können wir ihn löschen | ||
61 | final User user = sessionContext.getUser(); | 62 | final User user = sessionContext.getUser(); |
62 | - | ||
63 | if (user != null) { | 63 | if (user != null) { |
64 | - dao.remove(User.class, user.getId()); | ||
65 | - return true; | 64 | + return dao.remove(User.class, user.getId()) != null; |
66 | } | 65 | } |
67 | return false; | 66 | return false; |
68 | } | 67 | } |
src/main/java/net/ziemers/swxercise/ui/OtherViewController.java
0 → 100644
1 | +package net.ziemers.swxercise.ui; | ||
2 | + | ||
3 | +import javax.faces.bean.ApplicationScoped; | ||
4 | +import javax.ws.rs.GET; | ||
5 | +import javax.ws.rs.Path; | ||
6 | +import javax.ws.rs.Produces; | ||
7 | +import javax.ws.rs.core.MediaType; | ||
8 | + | ||
9 | +/** | ||
10 | + * REST-Methoden, die nirgendwo besser hinpassen. | ||
11 | + */ | ||
12 | +@ApplicationScoped | ||
13 | +@Path(UserViewController.webContextPath) | ||
14 | +public class OtherViewController { | ||
15 | + | ||
16 | + static final String webContextPath = "/"; | ||
17 | + | ||
18 | + @GET | ||
19 | + @Path("/v1/ping") | ||
20 | + @Produces(MediaType.TEXT_PLAIN) | ||
21 | + public String ping() { | ||
22 | + return "pong"; | ||
23 | + } | ||
24 | + | ||
25 | +} |
src/main/java/net/ziemers/swxercise/ui/RestResponse.java
@@ -6,6 +6,8 @@ public class RestResponse { | @@ -6,6 +6,8 @@ public class RestResponse { | ||
6 | 6 | ||
7 | private ResponseState responseState; | 7 | private ResponseState responseState; |
8 | 8 | ||
9 | + private String message; | ||
10 | + | ||
9 | public RestResponse() { | 11 | public RestResponse() { |
10 | this(ResponseState.SUCCESS); | 12 | this(ResponseState.SUCCESS); |
11 | } | 13 | } |
@@ -14,6 +16,11 @@ public class RestResponse { | @@ -14,6 +16,11 @@ public class RestResponse { | ||
14 | this.responseState = responseState; | 16 | this.responseState = responseState; |
15 | } | 17 | } |
16 | 18 | ||
19 | + public RestResponse(final ResponseState responseState, final String message) { | ||
20 | + this(responseState); | ||
21 | + this.message = message; | ||
22 | + } | ||
23 | + | ||
17 | public int getResponseCode() { | 24 | public int getResponseCode() { |
18 | return responseState.getResponseCode(); | 25 | return responseState.getResponseCode(); |
19 | } | 26 | } |
@@ -22,6 +29,8 @@ public class RestResponse { | @@ -22,6 +29,8 @@ public class RestResponse { | ||
22 | return responseState.getResponseText(); | 29 | return responseState.getResponseText(); |
23 | } | 30 | } |
24 | 31 | ||
32 | + public String getMessage() { return message; } | ||
33 | + | ||
25 | @Override | 34 | @Override |
26 | public boolean equals(Object o) { | 35 | public boolean equals(Object o) { |
27 | if (this == o) return true; | 36 | if (this == o) return true; |
src/main/java/net/ziemers/swxercise/ui/UserViewController.java
@@ -20,7 +20,7 @@ import net.ziemers.swxercise.ui.enums.ResponseState; | @@ -20,7 +20,7 @@ import net.ziemers.swxercise.ui.enums.ResponseState; | ||
20 | @Path(UserViewController.webContextPath) | 20 | @Path(UserViewController.webContextPath) |
21 | public class UserViewController { | 21 | public class UserViewController { |
22 | 22 | ||
23 | - static final String webContextPath = "/users"; | 23 | + static final String webContextPath = "/"; |
24 | 24 | ||
25 | @Inject | 25 | @Inject |
26 | private UserService userService; | 26 | private UserService userService; |
@@ -29,11 +29,12 @@ public class UserViewController { | @@ -29,11 +29,12 @@ public class UserViewController { | ||
29 | * Liefert alle User-Objekte zurück. | 29 | * Liefert alle User-Objekte zurück. |
30 | * | 30 | * |
31 | * Aufruf: | 31 | * Aufruf: |
32 | - * GET http://localhost:8080/swxercise/rest/users | 32 | + * GET http://localhost:8080/swxercise/rest/v1/users |
33 | * | 33 | * |
34 | - * @return die User-Objekte. | 34 | + * @return die User-Objekte, oder ein leeres JSON-Array, falls keine existieren. |
35 | */ | 35 | */ |
36 | @GET | 36 | @GET |
37 | + @Path("v1/users") | ||
37 | @Produces(MediaType.APPLICATION_JSON) | 38 | @Produces(MediaType.APPLICATION_JSON) |
38 | public Collection<User> getAllUsers() { | 39 | public Collection<User> getAllUsers() { |
39 | return userService.findAllUsers(); | 40 | return userService.findAllUsers(); |
@@ -43,13 +44,13 @@ public class UserViewController { | @@ -43,13 +44,13 @@ public class UserViewController { | ||
43 | * Liefert das User-Objekt mit der gewünschten Id zurück. | 44 | * Liefert das User-Objekt mit der gewünschten Id zurück. |
44 | * | 45 | * |
45 | * Aufruf: | 46 | * Aufruf: |
46 | - * GET http://localhost:8080/swxercise/rest/users/42 | 47 | + * GET http://localhost:8080/swxercise/rest/v1/user/42 |
47 | * | 48 | * |
48 | * @param id die Id des gewünschten User-Objekts | 49 | * @param id die Id des gewünschten User-Objekts |
49 | - * @return das User-Objekt. | 50 | + * @return das User-Objekt als JSON, oder <code>null</code>, falls keines existiert. |
50 | */ | 51 | */ |
51 | @GET | 52 | @GET |
52 | - @Path("{id}") | 53 | + @Path("v1/user/{id}") |
53 | @Produces(MediaType.APPLICATION_JSON) | 54 | @Produces(MediaType.APPLICATION_JSON) |
54 | public User getById(@PathParam("id") Long id) { | 55 | public User getById(@PathParam("id") Long id) { |
55 | return userService.findUser(id); | 56 | return userService.findUser(id); |
@@ -59,35 +60,41 @@ public class UserViewController { | @@ -59,35 +60,41 @@ public class UserViewController { | ||
59 | * Erstellt ein neues User-Objekt mit den gewünschten Eigenschaften, welche mittels {@link UserDto} definiert werden. | 60 | * Erstellt ein neues User-Objekt mit den gewünschten Eigenschaften, welche mittels {@link UserDto} definiert werden. |
60 | * | 61 | * |
61 | * Aufruf: | 62 | * Aufruf: |
62 | - * POST http://localhost:8080/swxercise/rest/users | 63 | + * POST http://localhost:8080/swxercise/rest/v1/user |
63 | * | 64 | * |
64 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | 65 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} |
65 | - * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war. | ||
66 | - * @throws Exception wirft eine Exception, wenn das Erstellen des UserDto fehlschlug | 66 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
67 | + | ||
67 | */ | 68 | */ |
68 | @POST | 69 | @POST |
70 | + @Path("v1/user") | ||
69 | @Consumes(MediaType.APPLICATION_JSON) | 71 | @Consumes(MediaType.APPLICATION_JSON) |
70 | @Produces(MediaType.APPLICATION_JSON) | 72 | @Produces(MediaType.APPLICATION_JSON) |
71 | - public RestResponse createUser(UserDto dto) throws Exception { | ||
72 | - userService.createUser(dto); | ||
73 | - return new RestResponse(); | 73 | + public RestResponse createUser(UserDto dto) { |
74 | + final Long id = userService.createUser(dto); | ||
75 | + if (id != null) { | ||
76 | + return new RestResponse(ResponseState.SUCCESS, String.valueOf(id)); | ||
77 | + } | ||
78 | + return new RestResponse(ResponseState.ALREADY_EXISTING); | ||
74 | } | 79 | } |
75 | 80 | ||
76 | /** | 81 | /** |
77 | - * Aktualisiert das User-Objekt mit der gewünschten Id mit den Eigenschaften, welche mittels {@link UserDto} definiert werden. | 82 | + * Aktualisiert das User-Objekt mit der gewünschten Id mit den Eigenschaften, |
83 | + * welche mittels {@link UserDto} definiert werden. Der Pfadparameter wird | ||
84 | + * als erstes ge'marshal't, das DTO im Post-Content danach (REST-Konvention). | ||
78 | * | 85 | * |
79 | * Aufruf: | 86 | * Aufruf: |
80 | - * PUT http://localhost:8080/swxercise/rest/users/42 | 87 | + * PUT http://localhost:8080/swxercise/rest/v1/user/42 |
81 | * | 88 | * |
82 | - * @param id die Id des gewünschten User-Objekts | ||
83 | - * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war. | ||
84 | - * @throws Exception wirft eine Exception, wenn das Erstellen des UserDto fehlschlug | 89 | + * @param id die Id des zu aktualisierenden User-Objekts |
90 | + * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | ||
91 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. | ||
85 | */ | 92 | */ |
86 | @PUT | 93 | @PUT |
87 | - @Path("{id}") | 94 | + @Path("v1/user/{id}") |
88 | @Consumes(MediaType.APPLICATION_JSON) | 95 | @Consumes(MediaType.APPLICATION_JSON) |
89 | @Produces(MediaType.APPLICATION_JSON) | 96 | @Produces(MediaType.APPLICATION_JSON) |
90 | - public RestResponse updateUser(@PathParam("id") Long id) throws Exception { | 97 | + public RestResponse updateUser(@PathParam("id") Long id, UserDto dto) { |
91 | // TODO noch zu implementieren | 98 | // TODO noch zu implementieren |
92 | return new RestResponse(ResponseState.FAILED); | 99 | return new RestResponse(ResponseState.FAILED); |
93 | } | 100 | } |
@@ -96,13 +103,13 @@ public class UserViewController { | @@ -96,13 +103,13 @@ public class UserViewController { | ||
96 | * Löscht das User-Objekt mit der gewünschten Id. | 103 | * Löscht das User-Objekt mit der gewünschten Id. |
97 | * | 104 | * |
98 | * Aufruf: | 105 | * Aufruf: |
99 | - * DELETE http://localhost:8080/swxercise/rest/users/42 | 106 | + * DELETE http://localhost:8080/swxercise/rest/v1/user/42 |
100 | * | 107 | * |
101 | * @param id die Id des gewünschten User-Objekts | 108 | * @param id die Id des gewünschten User-Objekts |
102 | - * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war. | 109 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
103 | */ | 110 | */ |
104 | @DELETE | 111 | @DELETE |
105 | - @Path("{id}") | 112 | + @Path("v1/user/{id}") |
106 | @Produces(MediaType.APPLICATION_JSON) | 113 | @Produces(MediaType.APPLICATION_JSON) |
107 | public RestResponse deleteUser(@PathParam("id") Long id) { | 114 | public RestResponse deleteUser(@PathParam("id") Long id) { |
108 | userService.deleteUser(id); | 115 | userService.deleteUser(id); |
@@ -113,11 +120,12 @@ public class UserViewController { | @@ -113,11 +120,12 @@ public class UserViewController { | ||
113 | * Löscht das User-Objekt des zurzeit angemeldeten Benutzers. | 120 | * Löscht das User-Objekt des zurzeit angemeldeten Benutzers. |
114 | * | 121 | * |
115 | * Aufruf: | 122 | * Aufruf: |
116 | - * DELETE http://localhost:8080/swxercise/rest/users | 123 | + * DELETE http://localhost:8080/swxercise/rest/v1/user |
117 | * | 124 | * |
118 | - * @return "Ok", wenn das Löschen des User-Objekts erfolgreich war. | 125 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
119 | */ | 126 | */ |
120 | @DELETE | 127 | @DELETE |
128 | + @Path("v1/user") | ||
121 | @Produces(MediaType.APPLICATION_JSON) | 129 | @Produces(MediaType.APPLICATION_JSON) |
122 | public RestResponse deleteUser() { | 130 | public RestResponse deleteUser() { |
123 | if (userService.deleteUser()) { | 131 | if (userService.deleteUser()) { |
@@ -130,13 +138,13 @@ public class UserViewController { | @@ -130,13 +138,13 @@ public class UserViewController { | ||
130 | * Meldet einen Benutzer durch übergebenen username und password mit einem neuen User-{@link SessionContext} an. | 138 | * Meldet einen Benutzer durch übergebenen username und password mit einem neuen User-{@link SessionContext} an. |
131 | * | 139 | * |
132 | * Aufruf: | 140 | * Aufruf: |
133 | - * POST http://localhost:8080/swxercise/rest/users/login | 141 | + * POST http://localhost:8080/swxercise/rest/v1/user/login |
134 | * | 142 | * |
135 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | 143 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} |
136 | - * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war. | 144 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
137 | */ | 145 | */ |
138 | @POST | 146 | @POST |
139 | - @Path("/login") | 147 | + @Path("v1/user/login") |
140 | @Consumes(MediaType.APPLICATION_JSON) | 148 | @Consumes(MediaType.APPLICATION_JSON) |
141 | @Produces(MediaType.APPLICATION_JSON) | 149 | @Produces(MediaType.APPLICATION_JSON) |
142 | public RestResponse loginUser(UserDto dto) { | 150 | public RestResponse loginUser(UserDto dto) { |
@@ -150,13 +158,12 @@ public class UserViewController { | @@ -150,13 +158,12 @@ public class UserViewController { | ||
150 | * Meldet den angemeldeten Benutzer von seinem User-{@link SessionContext} ab. | 158 | * Meldet den angemeldeten Benutzer von seinem User-{@link SessionContext} ab. |
151 | * | 159 | * |
152 | * Aufruf: | 160 | * Aufruf: |
153 | - * POST http://localhost:8080/swxercise/rest/users/logout | 161 | + * POST http://localhost:8080/swxercise/rest/v1/user/logout |
154 | * | 162 | * |
155 | - * @return "Ok", wenn die Erstellung des User-Objekts erfolgreich war. | 163 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
156 | */ | 164 | */ |
157 | @POST | 165 | @POST |
158 | - @Path("/logout") | ||
159 | - @Consumes(MediaType.APPLICATION_JSON) | 166 | + @Path("v1/user/logout") |
160 | @Produces(MediaType.APPLICATION_JSON) | 167 | @Produces(MediaType.APPLICATION_JSON) |
161 | public RestResponse logoutUser() { | 168 | public RestResponse logoutUser() { |
162 | if (userService.logoutUser()) { | 169 | if (userService.logoutUser()) { |
src/main/java/net/ziemers/swxercise/ui/enums/ResponseState.java
@@ -4,6 +4,7 @@ public enum ResponseState { | @@ -4,6 +4,7 @@ public enum ResponseState { | ||
4 | 4 | ||
5 | SUCCESS(0, "Success"), | 5 | SUCCESS(0, "Success"), |
6 | FAILED(1, "Failed"), | 6 | FAILED(1, "Failed"), |
7 | + ALREADY_EXISTING(2, "Already existing"), | ||
7 | ; | 8 | ; |
8 | 9 | ||
9 | private final int responseCode; | 10 | private final int responseCode; |