@startuml
skinparam shadowing false
skinparam classBorderThickness .5
skinparam monochrome true
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 14

autonumber

participant IntegrationTest #White
participant "Spring Application"
participant "De/Serializer"
participant "ctrl:AddGroupRestController"
participant "info:AddGroupRequestInfoDTO"
participant "AddGroupRequestAssembler"
participant "GroupResponseAssembler"
participant "requestDTO:\nAddGroupRequestDTO"
participant "groupResponseDTO:\nGroupResponseDTO"
participant "srv:addGroupService"

note over "srv:addGroupService" #white
   Continues through
    next Diagram
end note

activate IntegrationTest #white
IntegrationTest->"Spring Application": "POST /groups\n("email":"ana@gmail.pt",\n"groupDescription":"Family")

autonumber 1.1
activate "Spring Application" #white
"Spring Application"->"De/Serializer":deserialize(""email":\n"ana@gmail.pt",\n"groupDescription":"Family"")

activate "De/Serializer" #white
create "info:AddGroupRequestInfoDTO"
autonumber 1.1.1
"De/Serializer"->"info:AddGroupRequestInfoDTO":create\n(email,\ngroupDescription)
deactivate "De/Serializer"
autonumber 2
IntegrationTest->"ctrl:AddGroupRestController":addGroup(info)

activate "ctrl:AddGroupRestController" #White
autonumber 2.1
"ctrl:AddGroupRestController" -> "AddGroupRequestAssembler":mapToDTO\n(info.getGroupDescription, info.getResponsibleEmail)
activate "AddGroupRequestAssembler" #white
autonumber 2.1.1
create "requestDTO:\nAddGroupRequestDTO"
"AddGroupRequestAssembler"->"requestDTO:\nAddGroupRequestDTO":create(groupDescription,\n responsibleEmail )
deactivate "AddGroupRequestAssembler"
autonumber 2.2
"ctrl:AddGroupRestController" -> "srv:addGroupService": addGroup\n(requestDTO:\nAddGroupRequestDTO)

activate "srv:addGroupService" #white

"srv:addGroupService"-->"ctrl:AddGroupRestController":groupDTO

deactivate "srv:addGroupService"
"ctrl:AddGroupRestController"-> "GroupResponseAssembler":mapToDTO\n(groupDTO.getGroupDescription)
create "groupResponseDTO:\nGroupResponseDTO"
activate GroupResponseAssembler #white
autonumber 2.4.1
"GroupResponseAssembler" -> "groupResponseDTO:\nGroupResponseDTO" : create
"GroupResponseAssembler" --> "ctrl:AddGroupRestController" : groupResponseDTO
deactivate "GroupResponseAssembler" #white
autonumber 2.5
"ctrl:AddGroupRestController"-->"Spring Application" : ResponseEntity\n(groupResponseDTO, HttpStatus.OK)
autonumber 1.2
"Spring Application"-> "De/Serializer" : serialize(ResponseEntity\n(groupResponseDTO, HttpStatus.OK)
activate "De/Serializer"
"De/Serializer" --> "Spring Application" : HttpResponse
deactivate "De/Serializer"
"Spring Application"--> "IntegrationTest" : HttpResponse
deactivate "ctrl:AddGroupRestController" #white
deactivate "Spring Application"
deactivate "IntegrationTest"

@enduml
