Commit 0bbe393da7f117487144d74b221c9ae5d3883317

Authored by Thomas Ziemer
1 parent b4808f61

feature: lesen und schreiben mittels REST/Jackson

src/main/java/net/ziemers/swxercise/lg/user/Profile.java
@@ -4,6 +4,7 @@ import javax.persistence.Entity; @@ -4,6 +4,7 @@ import javax.persistence.Entity;
4 import javax.validation.constraints.NotNull; 4 import javax.validation.constraints.NotNull;
5 5
6 import net.ziemers.swxercise.db.BaseEntity; 6 import net.ziemers.swxercise.db.BaseEntity;
  7 +import net.ziemers.swxercise.lg.user.enums.PasswordHashType;
7 8
8 @Entity 9 @Entity
9 public class Profile extends BaseEntity { 10 public class Profile extends BaseEntity {
@@ -14,6 +15,9 @@ public class Profile extends BaseEntity { @@ -14,6 +15,9 @@ public class Profile extends BaseEntity {
14 @NotNull 15 @NotNull
15 private String passwordHash; 16 private String passwordHash;
16 17
  18 + @NotNull
  19 + private PasswordHashType passwordHashType = PasswordHashType.Unknown;
  20 +
17 private String mailaddress; 21 private String mailaddress;
18 22
19 public Profile() { 23 public Profile() {
@@ -34,14 +38,22 @@ public class Profile extends BaseEntity { @@ -34,14 +38,22 @@ public class Profile extends BaseEntity {
34 this.username = username; 38 this.username = username;
35 } 39 }
36 40
37 - public String getPasswordHash() { 41 + private String getPasswordHash() {
38 return passwordHash; 42 return passwordHash;
39 } 43 }
40 44
41 - public void setPasswordHash(String passwordHash) { 45 + private void setPasswordHash(String passwordHash) {
42 this.passwordHash = passwordHash; 46 this.passwordHash = passwordHash;
43 } 47 }
44 48
  49 + private PasswordHashType getPasswordHashType() {
  50 + return passwordHashType;
  51 + }
  52 +
  53 + private void setPasswordHashType(PasswordHashType passwordHashType) {
  54 + this.passwordHashType = passwordHashType;
  55 + }
  56 +
45 public String getMailaddress() { 57 public String getMailaddress() {
46 return mailaddress; 58 return mailaddress;
47 } 59 }
src/main/java/net/ziemers/swxercise/lg/user/User.java
@@ -51,4 +51,9 @@ public class User extends BaseEntity { @@ -51,4 +51,9 @@ public class User extends BaseEntity {
51 this.profile = profile; 51 this.profile = profile;
52 } 52 }
53 53
  54 + public User withProfile(final Profile profile) {
  55 + setProfile(profile);
  56 + return this;
  57 + }
  58 +
54 } 59 }
src/main/java/net/ziemers/swxercise/lg/user/enums/PasswordHashType.java 0 → 100644
  1 +package net.ziemers.swxercise.lg.user.enums;
  2 +
  3 +public enum PasswordHashType {
  4 +
  5 + Unknown,
  6 + ;
  7 +}
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
@@ -6,7 +6,9 @@ import javax.ejb.Stateless; @@ -6,7 +6,9 @@ import javax.ejb.Stateless;
6 import javax.inject.Inject; 6 import javax.inject.Inject;
7 7
8 import net.ziemers.swxercise.db.dao.GenericDao; 8 import net.ziemers.swxercise.db.dao.GenericDao;
  9 +import net.ziemers.swxercise.lg.user.Profile;
9 import net.ziemers.swxercise.lg.user.User; 10 import net.ziemers.swxercise.lg.user.User;
  11 +import net.ziemers.swxercise.lg.user.dto.UserDto;
10 12
11 @Stateless 13 @Stateless
12 public class UserService { 14 public class UserService {
@@ -20,7 +22,13 @@ public class UserService { @@ -20,7 +22,13 @@ public class UserService {
20 return genericDao.findAll(User.class); 22 return genericDao.findAll(User.class);
21 } 23 }
22 24
23 - public Long saveUser(final User user) { 25 + public Long saveUser(final UserDto userDto) {
  26 + final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword());
  27 +
  28 + // wir füllen das User-Objekt mit Method Chaining
  29 + final User user = new User(userDto.getFirstname(), userDto.getLastname())
  30 + .withProfile(profile);
  31 +
24 return genericDao.save(user); 32 return genericDao.save(user);
25 } 33 }
26 34
src/main/java/net/ziemers/swxercise/ui/RestViewController.java renamed to src/main/java/net/ziemers/swxercise/ui/UserViewController.java
@@ -13,8 +13,8 @@ import net.ziemers.swxercise.lg.user.dto.UserDto; @@ -13,8 +13,8 @@ import net.ziemers.swxercise.lg.user.dto.UserDto;
13 import net.ziemers.swxercise.lg.user.service.UserService; 13 import net.ziemers.swxercise.lg.user.service.UserService;
14 14
15 @ApplicationScoped 15 @ApplicationScoped
16 -@Path(RestViewController.webContextPath)  
17 -public class RestViewController { 16 +@Path(UserViewController.webContextPath)
  17 +public class UserViewController {
18 18
19 static final String webContextPath = "/users"; 19 static final String webContextPath = "/users";
20 20
@@ -53,12 +53,7 @@ public class RestViewController { @@ -53,12 +53,7 @@ public class RestViewController {
53 @Consumes(MediaType.APPLICATION_JSON) 53 @Consumes(MediaType.APPLICATION_JSON)
54 @Produces({MediaType.TEXT_PLAIN}) 54 @Produces({MediaType.TEXT_PLAIN})
55 public String postUser(UserDto userDto) throws Exception { 55 public String postUser(UserDto userDto) throws Exception {
56 - final User user = new User(userDto.getFirstname(), userDto.getLastname());  
57 - final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword());  
58 -  
59 - // TODO hierfür benötigen wir einen Mapper  
60 - user.setProfile(profile);  
61 - userService.saveUser(user); 56 + userService.saveUser(userDto);
62 57
63 return "Ok"; 58 return "Ok";
64 } 59 }
src/test/java/net/ziemers/swxercise/ui/RestViewControllerTest.java
@@ -10,7 +10,7 @@ import org.mockito.junit.MockitoJUnitRunner; @@ -10,7 +10,7 @@ import org.mockito.junit.MockitoJUnitRunner;
10 public class RestViewControllerTest { 10 public class RestViewControllerTest {
11 11
12 @InjectMocks 12 @InjectMocks
13 - private RestViewController underTest; 13 + private UserViewController underTest;
14 14
15 @Test 15 @Test
16 public void test() { 16 public void test() {