Skip to content

Commit c63594a

Browse files
committed
Adapting to DDD
1 parent 4519bf4 commit c63594a

23 files changed

Lines changed: 230 additions & 109 deletions

src/main/java/com/example/code/apirest/controller/UserController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
public interface UserController {
88

9-
public ResponseEntity<UserResponse> createUser(final UserRequest user);
9+
ResponseEntity<UserResponse> createUser(final UserRequest user);
1010

11-
public ResponseEntity<UserResponse> getUserById(final Integer id);
11+
ResponseEntity<UserResponse> getUserById(final Integer id);
1212

13-
public ResponseEntity<Void> modifyUser(final Integer id, final UserRequest user);
13+
ResponseEntity<Void> modifyUser(final Integer id, final UserRequest user);
1414
}

src/main/java/com/example/code/apirest/controller/impl/UserControllerImpl.java

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
import com.example.code.apirest.dto.UserRequest;
55
import com.example.code.apirest.dto.UserResponse;
66
import com.example.code.apirest.mapper.UserMapper;
7+
import com.example.code.application.dto.UserDto;
78
import com.example.code.application.usecase.UserCreationUseCase;
89
import com.example.code.application.usecase.UserModificationUseCase;
910
import com.example.code.application.usecase.UserRetrieveUseCase;
10-
import com.example.code.domain.model.User;
1111
import jakarta.validation.Valid;
12+
import lombok.AllArgsConstructor;
1213
import lombok.extern.slf4j.Slf4j;
1314
import org.springframework.http.HttpStatus;
1415
import org.springframework.http.ResponseEntity;
@@ -20,33 +21,23 @@
2021
import org.springframework.web.bind.annotation.RequestMapping;
2122
import org.springframework.web.bind.annotation.RestController;
2223

24+
@Slf4j
2325
@RestController
2426
@RequestMapping("/user")
25-
@Slf4j
27+
@AllArgsConstructor
2628
public class UserControllerImpl implements UserController {
2729

28-
private UserCreationUseCase userCreationUseCase;
29-
private UserModificationUseCase userModificationUseCase;
30-
private UserRetrieveUseCase userRetrieveUseCase;
31-
private UserMapper userMapper;
32-
33-
public UserControllerImpl(
34-
final UserCreationUseCase userCreationUseCase,
35-
final UserModificationUseCase userModificationUseCase,
36-
final UserRetrieveUseCase userRetrieveUseCase,
37-
final UserMapper userMapper) {
38-
this.userCreationUseCase = userCreationUseCase;
39-
this.userModificationUseCase = userModificationUseCase;
40-
this.userRetrieveUseCase = userRetrieveUseCase;
41-
this.userMapper = userMapper;
42-
}
30+
private final UserCreationUseCase userCreationUseCase;
31+
private final UserModificationUseCase userModificationUseCase;
32+
private final UserRetrieveUseCase userRetrieveUseCase;
33+
private final UserMapper userMapper;
4334

4435
@Override
4536
@PostMapping
4637
public ResponseEntity<UserResponse> createUser(@Valid @RequestBody final UserRequest user) {
4738
log.info("Processing POST request with body {} ", user);
4839

49-
final User newUser = userCreationUseCase.createUser(userMapper.toUser(user));
40+
final UserDto newUser = userCreationUseCase.createUser(userMapper.toUserCreationDto(user));
5041

5142
return ResponseEntity.status(HttpStatus.CREATED).body(userMapper.toResponse(newUser));
5243
}
@@ -56,9 +47,9 @@ public ResponseEntity<UserResponse> createUser(@Valid @RequestBody final UserReq
5647
public ResponseEntity<UserResponse> getUserById(@PathVariable final Integer id) {
5748
log.info("Processing GET request by id {} ", id);
5849

59-
final User user = userRetrieveUseCase.getUserById(id);
50+
final UserDto userDto = userRetrieveUseCase.getUserById(id);
6051

61-
return ResponseEntity.status(HttpStatus.OK).body(userMapper.toResponse(user));
52+
return ResponseEntity.status(HttpStatus.OK).body(userMapper.toResponse(userDto));
6253
}
6354

6455
@Override
@@ -67,7 +58,7 @@ public ResponseEntity<Void> modifyUser(
6758
@PathVariable final Integer id, @Valid @RequestBody final UserRequest user) {
6859
log.info("Processing PUT request with body {} ", user);
6960

70-
userModificationUseCase.modifyUser(id, userMapper.toUser(user));
61+
userModificationUseCase.modifyUser(id, userMapper.toUserModificationDto(user));
7162

7263
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
7364
}

src/main/java/com/example/code/apirest/mapper/UserMapper.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
import com.example.code.apirest.dto.UserRequest;
44
import com.example.code.apirest.dto.UserResponse;
5-
import com.example.code.domain.model.User;
5+
import com.example.code.application.dto.UserCreationDto;
6+
import com.example.code.application.dto.UserDto;
7+
import com.example.code.application.dto.UserModificationDto;
68
import org.mapstruct.Mapper;
79

810
@Mapper
911
public interface UserMapper {
1012

11-
User toUser(UserRequest request);
13+
UserCreationDto toUserCreationDto(UserRequest request);
1214

13-
UserResponse toResponse(User user);
15+
UserModificationDto toUserModificationDto(UserRequest request);
16+
17+
UserResponse toResponse(UserDto userDto);
1418
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.example.code.application.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class UserCreationDto {
7+
8+
private String name;
9+
10+
private String surname;
11+
12+
private String address;
13+
14+
private String city;
15+
16+
private String email;
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.example.code.application.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class UserDto {
7+
8+
private Integer id;
9+
10+
private String name;
11+
12+
private String surname;
13+
14+
private String address;
15+
16+
private String city;
17+
18+
private String email;
19+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.example.code.application.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class UserModificationDto {
7+
8+
private String name;
9+
10+
private String surname;
11+
12+
private String address;
13+
14+
private String city;
15+
16+
private String email;
17+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.example.code.application.mapper;
2+
3+
import com.example.code.application.dto.UserDto;
4+
import com.example.code.domain.model.User;
5+
import org.mapstruct.Mapper;
6+
7+
@Mapper
8+
public interface UserDtoMapper {
9+
UserDto toUserDto(User user);
10+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.example.code.application.usecase;
22

3-
import com.example.code.domain.model.User;
3+
import com.example.code.application.dto.UserCreationDto;
4+
import com.example.code.application.dto.UserDto;
45

56
public interface UserCreationUseCase {
67

7-
User createUser(final User newUser);
8+
UserDto createUser(final UserCreationDto userCreationDto);
89
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.example.code.application.usecase;
22

3-
import com.example.code.domain.model.User;
3+
import com.example.code.application.dto.UserModificationDto;
44

55
public interface UserModificationUseCase {
66

7-
void modifyUser(final int userId, final User user);
7+
void modifyUser(final int userId, final UserModificationDto userModificationDto);
88
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.example.code.application.usecase;
22

3-
import com.example.code.domain.model.User;
3+
import com.example.code.application.dto.UserDto;
44

55
public interface UserRetrieveUseCase {
66

7-
User getUserById(final Integer id);
7+
UserDto getUserById(final Integer id);
88
}

0 commit comments

Comments
 (0)