From a02584c92030815f32eddadbd787537cef812453 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 17 May 2021 13:36:13 +0200 Subject: [PATCH] Rename SessionHandlerInterface The 'Interface' part is obvious, but it is not immediately obvious what sort of 'session' and 'handler' we are talking about. Rename it to StreamSessionHandler. Change-Id: I76fe4f0a7fc87134ce15dece17bb5bdd2075b779 Signed-off-by: Robert Varga --- ...terface.java => StreamSessionHandler.java} | 4 +--- .../listeners/AbstractCommonSubscriber.java | 14 ++++++------- .../listeners/BaseListenerInterface.java | 16 +++++++------- .../streams/sse/SSESessionHandler.java | 4 ++-- .../streams/websockets/WebSocketFactory.java | 2 -- .../websockets/WebSocketInitializer.java | 21 +++++++++++-------- .../websockets/WebSocketSessionHandler.java | 7 +++---- 7 files changed, 33 insertions(+), 35 deletions(-) rename restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/{SessionHandlerInterface.java => StreamSessionHandler.java} (94%) diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/SessionHandlerInterface.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/StreamSessionHandler.java similarity index 94% rename from restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/SessionHandlerInterface.java rename to restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/StreamSessionHandler.java index 8ced1d19be..7cd00423a2 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/SessionHandlerInterface.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/StreamSessionHandler.java @@ -10,8 +10,7 @@ package org.opendaylight.restconf.nb.rfc8040.streams; /** * Interface for session handler that is responsible for sending of data over established session. */ -public interface SessionHandlerInterface { - +public interface StreamSessionHandler { /** * Identification of created session. */ @@ -23,5 +22,4 @@ public interface SessionHandlerInterface { * @param data Message data to be send. */ void sendDataMessage(String data); - } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractCommonSubscriber.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractCommonSubscriber.java index 9c456bdfde..751ee83394 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractCommonSubscriber.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractCommonSubscriber.java @@ -11,7 +11,7 @@ import com.google.common.base.Preconditions; import java.util.HashSet; import java.util.Iterator; import java.util.Set; -import org.opendaylight.restconf.nb.rfc8040.streams.SessionHandlerInterface; +import org.opendaylight.restconf.nb.rfc8040.streams.StreamSessionHandler; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +23,7 @@ abstract class AbstractCommonSubscriber extends AbstractQueryParams implements B private static final Logger LOG = LoggerFactory.getLogger(AbstractCommonSubscriber.class); - private final Set subscribers = new HashSet<>(); + private final Set subscribers = new HashSet<>(); private volatile ListenerRegistration registration; @Override @@ -32,7 +32,7 @@ abstract class AbstractCommonSubscriber extends AbstractQueryParams implements B } @Override - public final synchronized Set getSubscribers() { + public final synchronized Set getSubscribers() { return new HashSet<>(this.subscribers); } @@ -47,7 +47,7 @@ abstract class AbstractCommonSubscriber extends AbstractQueryParams implements B } @Override - public synchronized void addSubscriber(final SessionHandlerInterface subscriber) { + public synchronized void addSubscriber(final StreamSessionHandler subscriber) { final boolean isConnected = subscriber.isConnected(); Preconditions.checkState(isConnected); LOG.debug("Subscriber {} is added.", subscriber); @@ -55,7 +55,7 @@ abstract class AbstractCommonSubscriber extends AbstractQueryParams implements B } @Override - public synchronized void removeSubscriber(final SessionHandlerInterface subscriber) { + public synchronized void removeSubscriber(final StreamSessionHandler subscriber) { final boolean isConnected = subscriber.isConnected(); Preconditions.checkState(isConnected); LOG.debug("Subscriber {} is removed", subscriber); @@ -81,9 +81,9 @@ abstract class AbstractCommonSubscriber extends AbstractQueryParams implements B * @param data Data of incoming notifications. */ synchronized void post(final String data) { - final Iterator iterator = subscribers.iterator(); + final Iterator iterator = subscribers.iterator(); while (iterator.hasNext()) { - final SessionHandlerInterface subscriber = iterator.next(); + final StreamSessionHandler subscriber = iterator.next(); final boolean isConnected = subscriber.isConnected(); if (isConnected) { subscriber.sendDataMessage(data); diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/BaseListenerInterface.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/BaseListenerInterface.java index ba40d1589d..851b48f303 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/BaseListenerInterface.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/BaseListenerInterface.java @@ -8,7 +8,7 @@ package org.opendaylight.restconf.nb.rfc8040.streams.listeners; import java.util.Set; -import org.opendaylight.restconf.nb.rfc8040.streams.SessionHandlerInterface; +import org.opendaylight.restconf.nb.rfc8040.streams.StreamSessionHandler; import org.opendaylight.yangtools.concepts.ListenerRegistration; /** @@ -21,12 +21,12 @@ public interface BaseListenerInterface extends AutoCloseable { * * @return Set of all subscribers. */ - Set getSubscribers(); + Set getSubscribers(); /** - * Checks if exists at least one {@link SessionHandlerInterface} subscriber. + * Checks if exists at least one {@link StreamSessionHandler} subscriber. * - * @return {@code true} if exist at least one {@link SessionHandlerInterface} subscriber, {@code false} otherwise. + * @return {@code true} if exist at least one {@link StreamSessionHandler} subscriber, {@code false} otherwise. */ boolean hasSubscribers(); @@ -45,18 +45,18 @@ public interface BaseListenerInterface extends AutoCloseable { String getOutputType(); /** - * Registers {@link SessionHandlerInterface} subscriber. + * Registers {@link StreamSessionHandler} subscriber. * * @param subscriber SSE or WS session handler. */ - void addSubscriber(SessionHandlerInterface subscriber); + void addSubscriber(StreamSessionHandler subscriber); /** - * Removes {@link SessionHandlerInterface} subscriber. + * Removes {@link StreamSessionHandler} subscriber. * * @param subscriber SSE or WS session handler. */ - void removeSubscriber(SessionHandlerInterface subscriber); + void removeSubscriber(StreamSessionHandler subscriber); /** * Sets {@link ListenerRegistration} registration. diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java index fa68b7e0ec..e6494924d9 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java @@ -15,7 +15,7 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import org.glassfish.jersey.media.sse.EventOutput; import org.glassfish.jersey.media.sse.OutboundEvent; -import org.opendaylight.restconf.nb.rfc8040.streams.SessionHandlerInterface; +import org.opendaylight.restconf.nb.rfc8040.streams.StreamSessionHandler; import org.opendaylight.restconf.nb.rfc8040.streams.listeners.BaseListenerInterface; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory; * SSE session handler that is responsible for controlling of session, managing subscription to data-change-event or * notification listener, and sending of data over established SSE session. */ -public class SSESessionHandler implements SessionHandlerInterface { +public class SSESessionHandler implements StreamSessionHandler { private static final Logger LOG = LoggerFactory.getLogger(SSESessionHandler.class); private static final String PING_PAYLOAD = "ping"; diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketFactory.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketFactory.java index 8ebace438b..994780f8f9 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketFactory.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketFactory.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.restconf.nb.rfc8040.streams.websockets; import java.util.Optional; @@ -23,7 +22,6 @@ import org.slf4j.LoggerFactory; * Factory that is used for creation of new web-sockets based on HTTP/HTTPS upgrade request. */ class WebSocketFactory implements WebSocketCreator { - private static final Logger LOG = LoggerFactory.getLogger(WebSocketFactory.class); private final ScheduledExecutorService executorService; diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketInitializer.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketInitializer.java index 69f821ce00..66face7a36 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketInitializer.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketInitializer.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.restconf.nb.rfc8040.streams.websockets; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -21,11 +20,15 @@ import org.opendaylight.restconf.nb.rfc8040.streams.Configuration; * Web-socket servlet listening on ws or wss schemas for created data-change-event or notification streams. */ @Singleton -@SuppressFBWarnings({"SE_NO_SERIALVERSIONID", "SE_BAD_FIELD"}) public class WebSocketInitializer extends WebSocketServlet { + private static final long serialVersionUID = 1L; + @SuppressFBWarnings(value = "SE_BAD_FIELD", + justification = "Servlet/WebSocket bridge, we need this service for heartbeats") private final ScheduledExecutorService executorService; - private final Configuration configuration; + private final int maximumFragmentLength; + private final int heartbeatInterval; + private final int idleTimeoutMillis; /** * Creation of the web-socket initializer. @@ -34,10 +37,11 @@ public class WebSocketInitializer extends WebSocketServlet { * @param configuration Web-socket configuration holder. */ @Inject - public WebSocketInitializer(final ScheduledThreadPool scheduledThreadPool, - final Configuration configuration) { + public WebSocketInitializer(final ScheduledThreadPool scheduledThreadPool, final Configuration configuration) { this.executorService = scheduledThreadPool.getExecutor(); - this.configuration = configuration; + this.maximumFragmentLength = configuration.getMaximumFragmentLength(); + this.heartbeatInterval = configuration.getHeartbeatInterval(); + this.idleTimeoutMillis = configuration.getIdleTimeout(); } /** @@ -47,8 +51,7 @@ public class WebSocketInitializer extends WebSocketServlet { */ @Override public void configure(final WebSocketServletFactory factory) { - factory.getPolicy().setIdleTimeout(configuration.getIdleTimeout()); - factory.setCreator(new WebSocketFactory(executorService, configuration.getMaximumFragmentLength(), - configuration.getHeartbeatInterval())); + factory.getPolicy().setIdleTimeout(idleTimeoutMillis); + factory.setCreator(new WebSocketFactory(executorService, maximumFragmentLength, heartbeatInterval)); } } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketSessionHandler.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketSessionHandler.java index 4ab507c561..75b744f6e9 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketSessionHandler.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/websockets/WebSocketSessionHandler.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.restconf.nb.rfc8040.streams.websockets; import com.google.common.base.Strings; @@ -26,7 +25,7 @@ import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; import org.eclipse.jetty.websocket.api.annotations.WebSocket; -import org.opendaylight.restconf.nb.rfc8040.streams.SessionHandlerInterface; +import org.opendaylight.restconf.nb.rfc8040.streams.StreamSessionHandler; import org.opendaylight.restconf.nb.rfc8040.streams.listeners.BaseListenerInterface; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,8 +35,7 @@ import org.slf4j.LoggerFactory; * to data-change-event or notification listener, and sending of data over established web-socket session. */ @WebSocket -public class WebSocketSessionHandler implements SessionHandlerInterface { - +public class WebSocketSessionHandler implements StreamSessionHandler { private static final Logger LOG = LoggerFactory.getLogger(WebSocketSessionHandler.class); private static final byte[] PING_PAYLOAD = "ping".getBytes(Charset.defaultCharset()); @@ -149,6 +147,7 @@ public class WebSocketSessionHandler implements SessionHandlerInterface { * * @param message Message data to be send over web-socket session. */ + @Override public synchronized void sendDataMessage(final String message) { if (Strings.isNullOrEmpty(message)) { // FIXME: should this be tolerated? -- 2.36.6