12 changed files with 124 additions and 202 deletions
@ -0,0 +1,74 @@
@@ -0,0 +1,74 @@
|
||||
/* |
||||
* Copyright 2002-2013 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.web.messaging.support; |
||||
|
||||
import org.springframework.beans.factory.InitializingBean; |
||||
import org.springframework.messaging.Message; |
||||
import org.springframework.messaging.MessageHandler; |
||||
import org.springframework.messaging.SubscribableChannel; |
||||
import org.springframework.util.Assert; |
||||
import org.springframework.web.messaging.PubSubChannelRegistry; |
||||
|
||||
|
||||
/** |
||||
* @author Rossen Stoyanchev |
||||
* @since 4.0 |
||||
*/ |
||||
public class AbstractPubSubChannelRegistry implements PubSubChannelRegistry, InitializingBean { |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientInputChannel; |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientOutputChannel; |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> messageBrokerChannel; |
||||
|
||||
|
||||
public void setClientInputChannel(SubscribableChannel<Message<?>, MessageHandler<Message<?>>> channel) { |
||||
this.clientInputChannel = channel; |
||||
} |
||||
|
||||
@Override |
||||
public SubscribableChannel<Message<?>, MessageHandler<Message<?>>> getClientInputChannel() { |
||||
return this.clientInputChannel; |
||||
} |
||||
|
||||
@Override |
||||
public SubscribableChannel<Message<?>, MessageHandler<Message<?>>> getClientOutputChannel() { |
||||
return this.clientOutputChannel; |
||||
} |
||||
|
||||
public void setClientOutputChannel(SubscribableChannel<Message<?>, MessageHandler<Message<?>>> channel) { |
||||
this.clientOutputChannel = channel; |
||||
} |
||||
|
||||
@Override |
||||
public SubscribableChannel<Message<?>, MessageHandler<Message<?>>> getMessageBrokerChannel() { |
||||
return this.messageBrokerChannel; |
||||
} |
||||
|
||||
public void setMessageBrokerChannel(SubscribableChannel<Message<?>, MessageHandler<Message<?>>> channel) { |
||||
this.messageBrokerChannel = channel; |
||||
} |
||||
|
||||
@Override |
||||
public void afterPropertiesSet() throws Exception { |
||||
Assert.notNull(this.clientInputChannel, "clientInputChannel is required"); |
||||
Assert.notNull(this.clientOutputChannel, "clientOutputChannel is required"); |
||||
Assert.notNull(this.messageBrokerChannel, "messageBrokerChannel is required"); |
||||
} |
||||
|
||||
} |
||||
@ -1,124 +0,0 @@
@@ -1,124 +0,0 @@
|
||||
/* |
||||
* Copyright 2002-2013 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.web.messaging.support; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Set; |
||||
|
||||
import org.springframework.messaging.Message; |
||||
import org.springframework.messaging.MessageChannel; |
||||
import org.springframework.messaging.MessageHandler; |
||||
import org.springframework.messaging.SubscribableChannel; |
||||
import org.springframework.util.Assert; |
||||
import org.springframework.web.messaging.PubSubChannelRegistry; |
||||
import org.springframework.web.messaging.PubSubChannelRegistryAware; |
||||
|
||||
|
||||
/** |
||||
* @author Rossen Stoyanchev |
||||
* @since 4.0 |
||||
*/ |
||||
public class PubSubChannelRegistryBuilder { |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientInputChannel; |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientOutputChannel; |
||||
|
||||
private SubscribableChannel<Message<?>, MessageHandler<Message<?>>> messageBrokerChannel; |
||||
|
||||
private Set<MessageHandler<Message<?>>> messageHandlers = new HashSet<MessageHandler<Message<?>>>(); |
||||
|
||||
|
||||
public PubSubChannelRegistryBuilder( |
||||
SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientInputChannel, |
||||
SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientOutputChannel, |
||||
MessageHandler<Message<?>> clientGateway) { |
||||
|
||||
Assert.notNull(clientInputChannel, "clientInputChannel is required"); |
||||
Assert.notNull(clientOutputChannel, "clientOutputChannel is required"); |
||||
Assert.notNull(clientGateway, "clientGateway is required"); |
||||
|
||||
this.clientInputChannel = clientInputChannel; |
||||
this.clientOutputChannel = clientOutputChannel; |
||||
this.clientOutputChannel.subscribe(clientGateway); |
||||
this.messageHandlers.add(clientGateway); |
||||
} |
||||
|
||||
|
||||
public static PubSubChannelRegistryBuilder clientGateway( |
||||
SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientInputChannel, |
||||
SubscribableChannel<Message<?>, MessageHandler<Message<?>>> clientOutputChannel, |
||||
MessageHandler<Message<?>> clientGateway) { |
||||
|
||||
return new PubSubChannelRegistryBuilder(clientInputChannel, clientOutputChannel, clientGateway); |
||||
} |
||||
|
||||
|
||||
public PubSubChannelRegistryBuilder messageHandler(MessageHandler<Message<?>> handler) { |
||||
this.clientInputChannel.subscribe(handler); |
||||
this.messageHandlers.add(handler); |
||||
return this; |
||||
} |
||||
|
||||
public PubSubChannelRegistryBuilder messageBrokerGateway( |
||||
SubscribableChannel<Message<?>, MessageHandler<Message<?>>> messageBrokerChannel, |
||||
MessageHandler<Message<?>> messageBrokerGateway) { |
||||
|
||||
Assert.notNull(messageBrokerChannel, "messageBrokerChannel is required"); |
||||
Assert.notNull(messageBrokerGateway, "messageBrokerGateway is required"); |
||||
|
||||
if (!this.messageHandlers.contains(messageBrokerGateway)) { |
||||
this.clientInputChannel.subscribe(messageBrokerGateway); |
||||
} |
||||
|
||||
this.messageBrokerChannel = messageBrokerChannel; |
||||
this.messageBrokerChannel.subscribe(messageBrokerGateway); |
||||
this.messageHandlers.add(messageBrokerGateway); |
||||
|
||||
return this; |
||||
} |
||||
|
||||
public PubSubChannelRegistry build() { |
||||
|
||||
PubSubChannelRegistry registry = new PubSubChannelRegistry() { |
||||
|
||||
@Override |
||||
public MessageChannel<Message<?>> getClientInputChannel() { |
||||
return clientInputChannel; |
||||
} |
||||
|
||||
@Override |
||||
public MessageChannel<Message<?>> getClientOutputChannel() { |
||||
return clientOutputChannel; |
||||
} |
||||
|
||||
@Override |
||||
public MessageChannel<Message<?>> getMessageBrokerChannel() { |
||||
return messageBrokerChannel; |
||||
} |
||||
}; |
||||
|
||||
for (MessageHandler<Message<?>> handler : this.messageHandlers) { |
||||
if (handler instanceof PubSubChannelRegistryAware) { |
||||
((PubSubChannelRegistryAware) handler).setPubSubChannelRegistry(registry); |
||||
} |
||||
} |
||||
|
||||
return registry; |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue