Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
EmployeeServiceFacade
Project
Project
Details
Activity
Releases
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
Ansal M A
EmployeeServiceFacade
Commits
f63dcecb
Commit
f63dcecb
authored
May 16, 2022
by
Ansal M A
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changes
parent
9a5d6a13
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
58 additions
and
9 deletions
+58
-9
DepartmentClient.java
...va/com/nisum/poc/facade/client/impl/DepartmentClient.java
+11
-0
ProjectClient.java
.../java/com/nisum/poc/facade/client/impl/ProjectClient.java
+8
-0
DepartmentDetails.java
...java/com/nisum/poc/facade/response/DepartmentDetails.java
+11
-1
EmployeeDetails.java
...n/java/com/nisum/poc/facade/response/EmployeeDetails.java
+3
-1
EmployeeFacadeResponse.java
...com/nisum/poc/facade/response/EmployeeFacadeResponse.java
+3
-1
ProjectDetails.java
...in/java/com/nisum/poc/facade/response/ProjectDetails.java
+11
-1
EmployeeService.java
...va/com/nisum/poc/facade/service/impl/EmployeeService.java
+11
-5
No files found.
src/main/java/com/nisum/poc/facade/client/impl/DepartmentClient.java
View file @
f63dcecb
...
...
@@ -8,6 +8,9 @@ import org.springframework.stereotype.Repository;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
java.time.temporal.ChronoUnit
;
import
java.util.concurrent.TimeUnit
;
@Repository
public
class
DepartmentClient
implements
IDepartmentClient
{
...
...
@@ -21,8 +24,16 @@ public class DepartmentClient implements IDepartmentClient {
@Override
public
Mono
<
DepartmentDetails
>
fetchDepartmentById
(
Long
departmentId
)
{
try
{
TimeUnit
.
SECONDS
.
sleep
(
30
l
);
}
catch
(
Exception
e
){
}
return
departmentWebClient
.
build
().
get
()
.
uri
(
uriBuilder
->
uriBuilder
.
path
(
"/v1/find/{departmentId}"
).
build
(
departmentId
))
.
retrieve
().
bodyToMono
(
DepartmentDetails
.
class
);
}
}
src/main/java/com/nisum/poc/facade/client/impl/ProjectClient.java
View file @
f63dcecb
...
...
@@ -9,6 +9,9 @@ import org.springframework.stereotype.Repository;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
java.time.temporal.ChronoUnit
;
import
java.util.concurrent.TimeUnit
;
@Repository
public
class
ProjectClient
implements
IProjectClient
{
...
...
@@ -21,6 +24,11 @@ public class ProjectClient implements IProjectClient {
@Override
public
Mono
<
ProjectDetails
>
findProjectDetails
(
Long
projectId
)
{
try
{
TimeUnit
.
SECONDS
.
sleep
(
10
l
);
}
catch
(
Exception
e
){
}
return
projectWebClient
.
build
().
get
()
.
uri
(
uriBuilder
->
uriBuilder
.
path
(
"/v1/find/{projectId}"
).
build
(
projectId
))
.
retrieve
().
bodyToMono
(
ProjectDetails
.
class
);
...
...
src/main/java/com/nisum/poc/facade/response/DepartmentDetails.java
View file @
f63dcecb
package
com
.
nisum
.
poc
.
facade
.
response
;
public
class
DepartmentDetails
{
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
DepartmentDetails
implements
Serializable
{
private
Long
departmentId
;
private
String
departmentName
;
...
...
src/main/java/com/nisum/poc/facade/response/EmployeeDetails.java
View file @
f63dcecb
...
...
@@ -5,11 +5,13 @@ import lombok.Builder;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
EmployeeDetails
{
public
class
EmployeeDetails
implements
Serializable
{
private
Long
employeeId
;
private
String
firstName
;
...
...
src/main/java/com/nisum/poc/facade/response/EmployeeFacadeResponse.java
View file @
f63dcecb
...
...
@@ -5,11 +5,13 @@ import lombok.Builder;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
EmployeeFacadeResponse
{
public
class
EmployeeFacadeResponse
implements
Serializable
{
private
Long
employeeId
;
private
String
firstName
;
...
...
src/main/java/com/nisum/poc/facade/response/ProjectDetails.java
View file @
f63dcecb
package
com
.
nisum
.
poc
.
facade
.
response
;
public
class
ProjectDetails
{
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
ProjectDetails
implements
Serializable
{
private
Long
projectId
;
private
String
projectName
;
...
...
src/main/java/com/nisum/poc/facade/service/impl/EmployeeService.java
View file @
f63dcecb
...
...
@@ -41,21 +41,27 @@ public class EmployeeService implements IEmployeeService {
Mono
<
EmployeeDetails
>
monoEmployeeDetails
=
employeeClient
.
findEmployeeDetails
(
empId
);
return
monoEmployeeDetails
.
map
(
this
::
findProjectAndDeptDetails
);
return
monoEmployeeDetails
.
zipWhen
(
employeeDetails
->
findProjectAndDeptDetails
(
employeeDetails
),
(
employeeDetails
,
facadeResponse
)
->
facadeResponse
);
}
private
EmployeeFacadeResponse
findProjectAndDeptDetails
(
EmployeeDetails
employeeDetails
){
private
Mono
<
EmployeeFacadeResponse
>
findProjectAndDeptDetails
(
EmployeeDetails
employeeDetails
){
EmployeeFacadeResponse
response
=
constructEmployeeFacadeResponse
(
employeeDetails
);
Long
deptId
=
employeeDetails
.
getDeptId
();
Long
projectId
=
employeeDetails
.
getProjectId
();
departmentClient
.
fetchDepartmentById
(
deptId
).
map
(
dept
->
getFacadeResponse
(
dept
,
response
));
Mono
<
DepartmentDetails
>
departmentDetailsMono
=
departmentClient
.
fetchDepartmentById
(
deptId
);
Mono
<
ProjectDetails
>
projectDetailsMono
=
projectClient
.
findProjectDetails
(
projectId
);
projectClient
.
findProjectDetails
(
projectId
).
map
(
proj
->
getFacadeResponse
(
proj
,
response
));
return
Mono
.
zip
(
departmentDetailsMono
,
projectDetailsMono
).
map
(
objects
->
{
response
.
setDepartmentDetails
(
objects
.
getT1
());
response
.
setProjectDetails
(
objects
.
getT2
());
return
response
;
});
}
private
Object
getFacadeResponse
(
ProjectDetails
project
,
EmployeeFacadeResponse
response
)
{
...
...
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