001package cz.tdp.kshield.notification;
002
003import javax.websocket.EndpointConfig;
004import javax.websocket.OnClose;
005import javax.websocket.OnError;
006import javax.websocket.OnMessage;
007import javax.websocket.OnOpen;
008import javax.websocket.RemoteEndpoint;
009import javax.websocket.Session;
010
011/**
012 * Implementation of WebSocket Endpoint. You must provide access to KShieldAuthManager instance
013 */
014public abstract class AbstractKShieldEndpoint extends AbstractWebSocketEndpoint
015{
016  private RemoteEndpoint.Async remote;
017  
018  @OnOpen
019  public void onOpen(Session session, EndpointConfig config) {
020    onOpenImpl();
021    
022    remote = session.getAsyncRemote();
023  }
024
025  @OnClose
026  public void onClose(Session session, EndpointConfig config) {
027    onCloseImpl();
028  }
029  
030  @OnError
031  public void onError(Session session, Throwable e) {
032    onErrorImpl(e);
033  }
034
035  @OnMessage
036  public String onMessage(String message, Session session) {
037    return onMessageImpl(message);
038  }
039  
040  @Override
041  protected void send(String message) {
042    if (remote != null) {
043      remote.sendText(message);
044    }
045  }
046  
047  @Override
048  protected void reset() {
049    remote = null;
050    
051    super.reset();
052  }
053}