@startuml participant User participant "User:customer" as User_customer participant "User:admin" as User_admin participant UserController participant UserManagement participant UserRepository participant UserDataInitializier participant Spring == Create Admin == UserDataInitializier -> UserManagement : createAdmin() activate UserDataInitializier activate UserManagement UserManagement -> UserRepository : "save(User:admin)" activate User_admin activate UserRepository UserManagement <-- UserRepository : User_admin deactivate UserRepository UserDataInitializier <-- UserManagement : User deactivate UserManagement deactivate UserDataInitializier deactivate User_admin == Create Customer == UserDataInitializier -> UserManagement : createCustomer(String,String,String) activate UserDataInitializier activate UserManagement UserManagement -> UserRepository : "save(User:customer)" activate User_customer activate UserRepository UserManagement <-- UserRepository : User deactivate UserRepository UserDataInitializier <-- UserManagement : User deactivate UserManagement deactivate UserDataInitializier deactivate User_customer == Delete User (Customer) == Spring -> UserController : deleteUser() activate User_customer activate Spring activate UserController UserController -> UserManagement : deleteUser(UserIdentifier) activate UserManagement UserManagement -> UserRepository : deleteById(UserIdentifier) activate UserRepository UserManagement <-- UserRepository deactivate UserRepository UserController <-- UserManagement deactivate UserManagement destroy User_customer UserController <-- Spring: "redirect:/" deactivate UserController deactivate Spring == View Profile == Spring -> UserController : index(Model) activate User activate Spring activate UserController UserController -> Spring : model.addAttribute("user",User) UserController <-- Spring : Model Spring <-- UserController : "profile" deactivate Spring deactivate UserController 'technically spring is sending requests to User 'but i wrote these requests in profile.html 'so i'm not sure if i should add them deactivate User == Edit Profile == Spring -> UserController : editProfile(String:password,String:address,String:username) activate User activate Spring activate UserController UserController -> User : [!String:username.isBlank()] setUsername(String:username) UserController <-- User : boolean UserController -> User : [!String:address.isBlank()] setAddress(String:address) UserController <-- User : boolean UserController -> User : [!String:password.isBlank()] setPassword(String:password) UserController <-- User : boolean UserController -> UserManagement : save(User:LoggedIn) activate UserManagement UserController <-- UserManagement : User Spring <-- UserController : "redirect:/profile" deactivate Spring deactivate UserController deactivate User @enduml