Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
java-jwt
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Phùng Quốc Toàn
java-jwt
Commits
e8b97f37
Commit
e8b97f37
authored
Mar 09, 2024
by
devteria
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add lombok and mapstruct
parent
64452901
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
158 additions
and
141 deletions
+158
-141
pom.xml
pom.xml
+54
-1
UserController.java
...m/devteria/identityservice/controller/UserController.java
+12
-9
ApiResponse.java
...com/devteria/identityservice/dto/request/ApiResponse.java
+8
-25
UserCreationRequest.java
...eria/identityservice/dto/request/UserCreationRequest.java
+12
-46
UserUpdateRequest.java
...vteria/identityservice/dto/request/UserUpdateRequest.java
+12
-36
UserResponse.java
...m/devteria/identityservice/dto/response/UserResponse.java
+20
-0
UserMapper.java
.../java/com/devteria/identityservice/mapper/UserMapper.java
+17
-0
UserService.java
...ava/com/devteria/identityservice/service/UserService.java
+23
-24
No files found.
pom.xml
View file @
e8b97f37
...
...
@@ -10,11 +10,14 @@
</parent>
<groupId>
com.devteria
</groupId>
<artifactId>
identity-service
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
identity-service
</name>
<version>
0.0.1-SNAPSHOT
</version>
<description>
Identity service
</description>
<properties>
<java.version>
21
</java.version>
<projectlombok-lombok.version>
1.18.30
</projectlombok-lombok.version>
<mapstruct.version>
1.5.5.Final
</mapstruct.version>
<lombok-mapstruct-binding.version>
0.2.0
</lombok-mapstruct-binding.version>
</properties>
<dependencies>
<dependency>
...
...
@@ -34,6 +37,17 @@
<artifactId>
mysql-connector-j
</artifactId>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
${projectlombok-lombok.version}
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<version>
${mapstruct.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
...
...
@@ -46,6 +60,45 @@
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
${maven-compiler-plugin.version}
</version>
<configuration>
<source>
${java.version}
</source>
<target>
${java.version}
</target>
<annotationProcessorPaths>
<path>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
${projectlombok-lombok.version}
</version>
</path>
<path>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok-mapstruct-binding
</artifactId>
<version>
${lombok-mapstruct-binding.version}
</version>
</path>
<path>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-processor
</artifactId>
<version>
${mapstruct.version}
</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>
-Amapstruct.suppressGeneratorTimestamp=true
</arg>
<arg>
-Amapstruct.defaultComponentModel=spring
</arg>
<arg>
-Amapstruct.verbose=true
</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
...
...
src/main/java/com/devteria/identityservice/controller/UserController.java
View file @
e8b97f37
...
...
@@ -3,23 +3,26 @@ package com.devteria.identityservice.controller;
import
com.devteria.identityservice.dto.request.ApiResponse
;
import
com.devteria.identityservice.dto.request.UserCreationRequest
;
import
com.devteria.identityservice.dto.request.UserUpdateRequest
;
import
com.devteria.identityservice.
entity.User
;
import
com.devteria.identityservice.
dto.response.UserResponse
;
import
com.devteria.identityservice.service.UserService
;
import
jakarta.validation.Valid
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
lombok.AccessLevel
;
import
lombok.RequiredArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/users"
)
@RequiredArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
true
)
public
class
UserController
{
@Autowired
private
UserService
userService
;
UserService
userService
;
@PostMapping
ApiResponse
<
User
>
createUser
(
@RequestBody
@Valid
UserCreationRequest
request
){
ApiResponse
<
User
>
apiResponse
=
new
ApiResponse
<>();
ApiResponse
<
User
Response
>
createUser
(
@RequestBody
@Valid
UserCreationRequest
request
){
ApiResponse
<
User
Response
>
apiResponse
=
new
ApiResponse
<>();
apiResponse
.
setResult
(
userService
.
createUser
(
request
));
...
...
@@ -27,17 +30,17 @@ public class UserController {
}
@GetMapping
List
<
User
>
getUsers
(){
List
<
User
Response
>
getUsers
(){
return
userService
.
getUsers
();
}
@GetMapping
(
"/{userId}"
)
User
getUser
(
@PathVariable
(
"userId"
)
String
userId
){
User
Response
getUser
(
@PathVariable
(
"userId"
)
String
userId
){
return
userService
.
getUser
(
userId
);
}
@PutMapping
(
"/{userId}"
)
User
updateUser
(
@PathVariable
String
userId
,
@RequestBody
UserUpdateRequest
request
){
User
Response
updateUser
(
@PathVariable
String
userId
,
@RequestBody
UserUpdateRequest
request
){
return
userService
.
updateUser
(
userId
,
request
);
}
...
...
src/main/java/com/devteria/identityservice/dto/request/ApiResponse.java
View file @
e8b97f37
package
com
.
devteria
.
identityservice
.
dto
.
request
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
ApiResponse
<
T
>
{
private
int
code
=
1000
;
private
String
message
;
private
T
result
;
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
T
getResult
()
{
return
result
;
}
public
void
setResult
(
T
result
)
{
this
.
result
=
result
;
}
}
src/main/java/com/devteria/identityservice/dto/request/UserCreationRequest.java
View file @
e8b97f37
package
com
.
devteria
.
identityservice
.
dto
.
request
;
import
jakarta.validation.constraints.Size
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
java.time.LocalDate
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserCreationRequest
{
@Size
(
min
=
3
,
message
=
"USERNAME_INVALID"
)
private
String
username
;
String
username
;
@Size
(
min
=
8
,
message
=
"INVALID_PASSWORD"
)
private
String
password
;
private
String
firstName
;
private
String
lastName
;
private
LocalDate
dob
;
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
LocalDate
getDob
()
{
return
dob
;
}
public
void
setDob
(
LocalDate
dob
)
{
this
.
dob
=
dob
;
}
String
password
;
String
firstName
;
String
lastName
;
LocalDate
dob
;
}
src/main/java/com/devteria/identityservice/dto/request/UserUpdateRequest.java
View file @
e8b97f37
package
com
.
devteria
.
identityservice
.
dto
.
request
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
java.time.LocalDate
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserUpdateRequest
{
private
String
password
;
private
String
firstName
;
private
String
lastName
;
private
LocalDate
dob
;
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
LocalDate
getDob
()
{
return
dob
;
}
public
void
setDob
(
LocalDate
dob
)
{
this
.
dob
=
dob
;
}
String
password
;
String
firstName
;
String
lastName
;
LocalDate
dob
;
}
src/main/java/com/devteria/identityservice/dto/response/UserResponse.java
0 → 100644
View file @
e8b97f37
package
com
.
devteria
.
identityservice
.
dto
.
response
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
java.time.LocalDate
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserResponse
{
String
id
;
String
username
;
String
password
;
String
firstName
;
String
lastName
;
LocalDate
dob
;
}
src/main/java/com/devteria/identityservice/mapper/UserMapper.java
0 → 100644
View file @
e8b97f37
package
com
.
devteria
.
identityservice
.
mapper
;
import
com.devteria.identityservice.dto.request.UserCreationRequest
;
import
com.devteria.identityservice.dto.request.UserUpdateRequest
;
import
com.devteria.identityservice.dto.response.UserResponse
;
import
com.devteria.identityservice.entity.User
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.MappingTarget
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
UserMapper
{
User
toUser
(
UserCreationRequest
request
);
UserResponse
toUserResponse
(
User
user
);
void
updateUser
(
@MappingTarget
User
user
,
UserUpdateRequest
request
);
}
src/main/java/com/devteria/identityservice/service/UserService.java
View file @
e8b97f37
...
...
@@ -2,56 +2,55 @@ package com.devteria.identityservice.service;
import
com.devteria.identityservice.dto.request.UserCreationRequest
;
import
com.devteria.identityservice.dto.request.UserUpdateRequest
;
import
com.devteria.identityservice.dto.response.UserResponse
;
import
com.devteria.identityservice.entity.User
;
import
com.devteria.identityservice.exception.AppException
;
import
com.devteria.identityservice.exception.ErrorCode
;
import
com.devteria.identityservice.mapper.UserMapper
;
import
com.devteria.identityservice.repository.UserRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
lombok.AccessLevel
;
import
lombok.RequiredArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
@RequiredArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
true
)
public
class
UserService
{
@Autowired
private
UserRepository
userRepository
;
public
User
createUser
(
UserCreationRequest
request
){
User
user
=
new
User
();
UserRepository
userRepository
;
UserMapper
userMapper
;
public
UserResponse
createUser
(
UserCreationRequest
request
){
if
(
userRepository
.
existsByUsername
(
request
.
getUsername
()))
throw
new
AppException
(
ErrorCode
.
USER_EXISTED
);
user
.
setUsername
(
request
.
getUsername
());
user
.
setPassword
(
request
.
getPassword
());
user
.
setFirstName
(
request
.
getFirstName
());
user
.
setLastName
(
request
.
getLastName
());
user
.
setDob
(
request
.
getDob
());
User
user
=
userMapper
.
toUser
(
request
);
return
user
Repository
.
save
(
user
);
return
user
Mapper
.
toUserResponse
(
userRepository
.
save
(
user
)
);
}
public
User
updateUser
(
String
userId
,
UserUpdateRequest
request
)
{
User
user
=
getUser
(
userId
);
public
UserResponse
updateUser
(
String
userId
,
UserUpdateRequest
request
)
{
User
user
=
userRepository
.
findById
(
userId
)
.
orElseThrow
(()
->
new
RuntimeException
(
"User not found"
));
user
.
setPassword
(
request
.
getPassword
());
user
.
setFirstName
(
request
.
getFirstName
());
user
.
setLastName
(
request
.
getLastName
());
user
.
setDob
(
request
.
getDob
());
userMapper
.
updateUser
(
user
,
request
);
return
user
Repository
.
save
(
user
);
return
user
Mapper
.
toUserResponse
(
userRepository
.
save
(
user
)
);
}
public
void
deleteUser
(
String
userId
){
userRepository
.
deleteById
(
userId
);
}
public
List
<
User
>
getUsers
(){
return
userRepository
.
findAll
();
public
List
<
UserResponse
>
getUsers
(){
return
userRepository
.
findAll
().
stream
()
.
map
(
userMapper:
:
toUserResponse
).
toList
();
}
public
User
getUser
(
String
id
){
return
userRepository
.
findById
(
id
)
.
orElseThrow
(()
->
new
RuntimeException
(
"User not found"
));
public
User
Response
getUser
(
String
id
){
return
user
Mapper
.
toUserResponse
(
user
Repository
.
findById
(
id
)
.
orElseThrow
(()
->
new
RuntimeException
(
"User not found"
))
)
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment