Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. package com.primeholding.codish.websocket.eventhandler.impl;
  2.  
  3. import com.primeholding.codish.service.cache.PlaygroundCacheService;
  4. import com.primeholding.codish.websocket.eventhandler.ParticipantEventHandler;
  5. import com.primeholding.codish.websocket.exception.StompUnauthorizedException;
  6. import com.primeholding.codish.websocket.model.Participant;
  7. import com.primeholding.codish.websocket.model.ParticipantType;
  8. import com.primeholding.codish.websocket.service.ParticipantEventHandlerLocator;
  9. import lombok.RequiredArgsConstructor;
  10. import org.modelmapper.ModelMapper;
  11. import org.springframework.context.event.EventListener;
  12. import org.springframework.security.authentication.AbstractAuthenticationToken;
  13. import org.springframework.stereotype.Component;
  14. import org.springframework.web.socket.messaging.SessionDisconnectEvent;
  15.  
  16. import java.security.Principal;
  17.  
  18. @Component
  19. @RequiredArgsConstructor
  20. public class WebSocketEventHandler {
  21.  
  22. private final PlaygroundCacheService playgroundCacheService;
  23. private final ParticipantEventHandlerLocator participantEventHandlerLocator;
  24. private final ModelMapper modelMapper;
  25.  
  26. @EventListener
  27. private void onDisconnect(SessionDisconnectEvent disconnectEvent) {
  28. String sessionId = disconnectEvent.getSessionId();
  29. String playgroundHashcode = playgroundCacheService.getHashCode(sessionId);
  30. if (playgroundHashcode.isEmpty()) {
  31. return;
  32. }
  33.  
  34. Principal token = disconnectEvent.getUser();
  35. if (!(token instanceof AbstractAuthenticationToken)) {
  36. throw new StompUnauthorizedException();
  37. }
  38.  
  39. Object principal = ((AbstractAuthenticationToken) token).getPrincipal();
  40. Participant participant = modelMapper.map(principal, Participant.class);
  41.  
  42. ParticipantType participantType = participant.getParticipantType();
  43. ParticipantEventHandler participantEventHandler = participantEventHandlerLocator.getHandler(participantType);
  44. participantEventHandler.leave(participant, sessionId, playgroundHashcode);
  45. }
  46.  
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement