@Override public Channel findChannelByClientId(String clientId) { return getGravity().findChannelByClientId(clientId); } @Override
@Override public List<Channel> findConnectedChannelsByUser(String name) { return getGravity().findConnectedChannelsByUser(name); }
@Override public Channel findCurrentChannel(String destination) { return getGravity().findCurrentChannel(destination); }
@Override public void publishUpdate(Map<String, Object> params, Object body) { AsyncMessage message = new AsyncMessage(); message.setDestination(topicName); for (Entry<String, Object> hh : params.entrySet()) message.setHeader(hh.getKey(), hh.getValue()); message.setBody(body); Message resultMessage = null; if (clientId != null) { Channel channel = gravity.findChannelByClientId(clientId); message.setClientId(clientId); resultMessage = gravity.publishMessage(channel, message); } else resultMessage = gravity.publishMessage(message); if (resultMessage instanceof ErrorMessage) log.error("Could not dispatch data update on topic %s, message %s", topicName, resultMessage.toString()); else log.debug("Data message dispatched on topic %s", topicName); } }
public GravityConfig getGravityConfig() { return getGravity().getGravityConfig(); } public ServicesConfig getServicesConfig() {
public GraniteConfig getGraniteConfig() { return getGravity().getGraniteConfig(); }
@Override public List<Channel> getConnectedChannelsByDestination(String destination) { return getGravity().getConnectedChannelsByDestination(destination); } @Override
@Override public List<Channel> getConnectedChannels() { return getGravity().getConnectedChannels(); } @Override
public ServicesConfig getServicesConfig() { return getGravity().getServicesConfig(); } public GraniteConfig getGraniteConfig() {
@Override public Set<Principal> getConnectedUsers() { return getGravity().getConnectedUsers(); } @Override
@Override public Set<Principal> getConnectedUsersByDestination(String destination) { return getGravity().getConnectedUsersByDestination(destination); } @Override
public GravityConfig getGravityConfig() { return getGravity().getGravityConfig(); } public ServicesConfig getServicesConfig() {
public GraniteConfig getGraniteConfig() { return getGravity().getGraniteConfig(); }
@Override public List<Channel> getConnectedChannelsByDestination(String destination) { return getGravity().getConnectedChannelsByDestination(destination); } @Override
@Override public List<Channel> getConnectedChannels() { return getGravity().getConnectedChannels(); } @Override
public ServicesConfig getServicesConfig() { return getGravity().getServicesConfig(); } public GraniteConfig getGraniteConfig() {
@Override public Set<Principal> getConnectedUsers() { return getGravity().getConnectedUsers(); } @Override
@Override public Set<Principal> getConnectedUsersByDestination(String destination) { return getGravity().getConnectedUsersByDestination(destination); } @Override
public static long getLongPollingTimeout(ServletContext context) { return GravityManager.getGravity(context).getGravityConfig().getLongPollingTimeoutMillis(); }
@Override public void modifyHandshake(ServerEndpointConfig config, HandshakeRequest request, HandshakeResponse response) { // Tomcat websocket impl returns request headers in lowercase ???? String connectMessageId = getHeaderOrParameter(request, "connectId", true); String clientId = getHeaderOrParameter(request, "GDSClientId", true); String clientType = getHeaderOrParameter(request, "GDSClientType", true); HttpSession session = (HttpSession)request.getHttpSession(); log.debug( "WebSocket configurator handshake ackId %s clientId %s sessionId %s", connectMessageId, clientId, session != null ? session.getId() : "(none)" ); Gravity gravity = (Gravity)config.getUserProperties().get("gravity"); if (gravity.getGraniteConfig().getSecurityService() != null) gravity.getGraniteConfig().getSecurityService().prelogin(session, request, null); String ctype = getHeader(request, "Content-Type", true); String protocol = getHeader(request, "Sec-WebSocket-Protocol", true); ContentType contentType = WebSocketUtil.getContentType(ctype, protocol); // Hack using a thread local to be sure that the endpoint gets the correct values // Jetty and GlassFish GravityWebSocketConfig.set(connectMessageId, clientId, clientType, contentType, session); }