From 7bb3b824c36cb9ca038e81719e60392cf6496a35 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 17 Jun 2013 17:05:39 +0100 Subject: [PATCH] Genericize PubSubChannelRegistry Without generics, extending AbstractPubSubChannelRegistry and using a custom Message type requires some unpleasant casting and suppression of warnings. By genericizing PubSubChannelRegistry and AbstractPubSubChannelRegistry these problems can be avoided. --- .../web/messaging/PubSubChannelRegistry.java | 8 +++--- .../AbstractPubSubChannelRegistry.java | 28 +++++++++---------- .../support/ReactorPubSubChannelRegistry.java | 5 ++-- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubChannelRegistry.java b/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubChannelRegistry.java index 924a754bd0..8c1e09f522 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubChannelRegistry.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubChannelRegistry.java @@ -25,12 +25,12 @@ import org.springframework.messaging.SubscribableChannel; * @author Rossen Stoyanchev * @since 4.0 */ -public interface PubSubChannelRegistry { +public interface PubSubChannelRegistry, H extends MessageHandler> { - SubscribableChannel, MessageHandler>> getClientInputChannel(); + SubscribableChannel getClientInputChannel(); - SubscribableChannel, MessageHandler>> getClientOutputChannel(); + SubscribableChannel getClientOutputChannel(); - SubscribableChannel, MessageHandler>> getMessageBrokerChannel(); + SubscribableChannel getMessageBrokerChannel(); } diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/support/AbstractPubSubChannelRegistry.java b/spring-websocket/src/main/java/org/springframework/web/messaging/support/AbstractPubSubChannelRegistry.java index 5986f64b97..429048dc55 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/support/AbstractPubSubChannelRegistry.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/support/AbstractPubSubChannelRegistry.java @@ -28,39 +28,39 @@ import org.springframework.web.messaging.PubSubChannelRegistry; * @author Rossen Stoyanchev * @since 4.0 */ -public class AbstractPubSubChannelRegistry implements PubSubChannelRegistry, InitializingBean { +public class AbstractPubSubChannelRegistry, H extends MessageHandler> implements PubSubChannelRegistry, InitializingBean { - private SubscribableChannel, MessageHandler>> clientInputChannel; + private SubscribableChannel clientInputChannel; - private SubscribableChannel, MessageHandler>> clientOutputChannel; + private SubscribableChannel clientOutputChannel; - private SubscribableChannel, MessageHandler>> messageBrokerChannel; + private SubscribableChannel messageBrokerChannel; - public void setClientInputChannel(SubscribableChannel, MessageHandler>> channel) { + @Override + public SubscribableChannel getClientInputChannel() { + return this.clientInputChannel; + } + + public void setClientInputChannel(SubscribableChannel channel) { this.clientInputChannel = channel; } @Override - public SubscribableChannel, MessageHandler>> getClientInputChannel() { - return this.clientInputChannel; - } - - @Override - public SubscribableChannel, MessageHandler>> getClientOutputChannel() { + public SubscribableChannel getClientOutputChannel() { return this.clientOutputChannel; } - public void setClientOutputChannel(SubscribableChannel, MessageHandler>> channel) { + public void setClientOutputChannel(SubscribableChannel channel) { this.clientOutputChannel = channel; } @Override - public SubscribableChannel, MessageHandler>> getMessageBrokerChannel() { + public SubscribableChannel getMessageBrokerChannel() { return this.messageBrokerChannel; } - public void setMessageBrokerChannel(SubscribableChannel, MessageHandler>> channel) { + public void setMessageBrokerChannel(SubscribableChannel channel) { this.messageBrokerChannel = channel; } diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/support/ReactorPubSubChannelRegistry.java b/spring-websocket/src/main/java/org/springframework/web/messaging/support/ReactorPubSubChannelRegistry.java index 688d0d44f5..6eefc7a3a0 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/support/ReactorPubSubChannelRegistry.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/support/ReactorPubSubChannelRegistry.java @@ -16,6 +16,8 @@ package org.springframework.web.messaging.support; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHandler; import org.springframework.util.Assert; import reactor.core.Reactor; @@ -25,8 +27,7 @@ import reactor.core.Reactor; * @author Rossen Stoyanchev * @since 4.0 */ -public class ReactorPubSubChannelRegistry extends AbstractPubSubChannelRegistry { - +public class ReactorPubSubChannelRegistry extends AbstractPubSubChannelRegistry, MessageHandler>> { public ReactorPubSubChannelRegistry(Reactor reactor) {