Lambdas for Remaining Modules JPA -> ZK
Polishing - PR Comments and Closeable Warnings Eclipse emits bogus warnings with exceptions in lambdas. Even though the lambda might run on another thread, elipse thinks it could cause the context to not be closed. SPR-14854: MessageChannel is now a @FunctionalInterface * Additional Lambda polishing and some code style fixes
This commit is contained in:
committed by
Artem Bilan
parent
16be9fc47d
commit
67d6cd0c89
@@ -261,14 +261,7 @@ public abstract class AbstractStompSessionManager implements StompSessionManager
|
||||
|
||||
if (this.stompClient.getTaskScheduler() != null) {
|
||||
this.reconnectFuture = this.stompClient.getTaskScheduler()
|
||||
.schedule(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
connect();
|
||||
}
|
||||
|
||||
}, new Date(System.currentTimeMillis() + this.recoveryInterval));
|
||||
.schedule((Runnable) () -> connect(), new Date(System.currentTimeMillis() + this.recoveryInterval));
|
||||
}
|
||||
else {
|
||||
this.logger.info("For automatic reconnection the 'stompClient' should be configured with a TaskScheduler.");
|
||||
@@ -376,6 +369,10 @@ public abstract class AbstractStompSessionManager implements StompSessionManager
|
||||
|
||||
private volatile StompSession session;
|
||||
|
||||
CompositeStompSessionHandler() {
|
||||
super();
|
||||
}
|
||||
|
||||
void addHandler(StompSessionHandler delegate) {
|
||||
if (this.session != null) {
|
||||
delegate.afterConnected(this.session, getConnectHeaders());
|
||||
|
||||
@@ -240,32 +240,22 @@ public class StompInboundChannelAdapter extends MessageProducerSupport implement
|
||||
if (this.stompSessionManager.isAutoReceiptEnabled()) {
|
||||
final ApplicationEventPublisher applicationEventPublisher = this.applicationEventPublisher;
|
||||
if (applicationEventPublisher != null) {
|
||||
subscription.addReceiptTask(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompInboundChannelAdapter.this,
|
||||
destination, subscription.getReceiptId(), StompCommand.SUBSCRIBE, false);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
subscription.addReceiptTask(() -> {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompInboundChannelAdapter.this,
|
||||
destination, subscription.getReceiptId(), StompCommand.SUBSCRIBE, false);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
});
|
||||
}
|
||||
subscription.addReceiptLostTask(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (applicationEventPublisher != null) {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompInboundChannelAdapter.this,
|
||||
destination, subscription.getReceiptId(), StompCommand.SUBSCRIBE, true);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
else {
|
||||
logger.error("The receipt [" + subscription.getReceiptId() + "] is lost for [" +
|
||||
subscription.getSubscriptionId() + "] on destination [" + destination + "]");
|
||||
}
|
||||
subscription.addReceiptLostTask(() -> {
|
||||
if (applicationEventPublisher != null) {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompInboundChannelAdapter.this,
|
||||
destination, subscription.getReceiptId(), StompCommand.SUBSCRIBE, true);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
else {
|
||||
logger.error("The receipt [" + subscription.getReceiptId() + "] is lost for [" +
|
||||
subscription.getSubscriptionId() + "] on destination [" + destination + "]");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
this.subscriptions.put(destination, subscription);
|
||||
|
||||
@@ -149,34 +149,24 @@ public class StompMessageHandler extends AbstractMessageHandler implements Appli
|
||||
final String destination = stompHeaders.getDestination();
|
||||
final ApplicationEventPublisher applicationEventPublisher = this.applicationEventPublisher;
|
||||
if (applicationEventPublisher != null) {
|
||||
receiptable.addReceiptTask(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompMessageHandler.this,
|
||||
destination, receiptable.getReceiptId(), StompCommand.SEND, false);
|
||||
event.setMessage(message);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
receiptable.addReceiptTask(() -> {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompMessageHandler.this,
|
||||
destination, receiptable.getReceiptId(), StompCommand.SEND, false);
|
||||
event.setMessage(message);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
});
|
||||
}
|
||||
receiptable.addReceiptLostTask(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (applicationEventPublisher != null) {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompMessageHandler.this,
|
||||
destination, receiptable.getReceiptId(), StompCommand.SEND, true);
|
||||
event.setMessage(message);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
else {
|
||||
logger.error("The receipt [" + receiptable.getReceiptId() + "] is lost for [" +
|
||||
message + "] on destination [" + destination + "]");
|
||||
}
|
||||
receiptable.addReceiptLostTask(() -> {
|
||||
if (applicationEventPublisher != null) {
|
||||
StompReceiptEvent event = new StompReceiptEvent(StompMessageHandler.this,
|
||||
destination, receiptable.getReceiptId(), StompCommand.SEND, true);
|
||||
event.setMessage(message);
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
}
|
||||
else {
|
||||
logger.error("The receipt [" + receiptable.getReceiptId() + "] is lost for [" +
|
||||
message + "] on destination [" + destination + "]");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -224,6 +214,10 @@ public class StompMessageHandler extends AbstractMessageHandler implements Appli
|
||||
|
||||
private class IntegrationOutboundStompSessionHandler extends StompSessionHandlerAdapter {
|
||||
|
||||
IntegrationOutboundStompSessionHandler() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
|
||||
StompMessageHandler.this.transportError = null;
|
||||
|
||||
@@ -303,7 +303,6 @@ public class StompInboundChannelAdapterWebSocketIntegrationTests extends LogAdju
|
||||
}
|
||||
|
||||
@Bean
|
||||
@SuppressWarnings("unchecked")
|
||||
public ApplicationListener<ApplicationEvent> stompEventListener() {
|
||||
ApplicationEventListeningMessageProducer producer = new ApplicationEventListeningMessageProducer();
|
||||
producer.setEventTypes(StompIntegrationEvent.class);
|
||||
@@ -355,23 +354,17 @@ public class StompInboundChannelAdapterWebSocketIntegrationTests extends LogAdju
|
||||
|
||||
//TODO SimpleBrokerMessageHandler doesn't support RECEIPT frame, hence we emulate it this way
|
||||
@Bean
|
||||
@SuppressWarnings("unchecked")
|
||||
public ApplicationListener<SessionSubscribeEvent> webSocketEventListener(
|
||||
final AbstractSubscribableChannel clientOutboundChannel) {
|
||||
return new ApplicationListener<SessionSubscribeEvent>() {
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(SessionSubscribeEvent event) {
|
||||
Message<byte[]> message = event.getMessage();
|
||||
StompHeaderAccessor stompHeaderAccessor = StompHeaderAccessor.wrap(message);
|
||||
if (stompHeaderAccessor.getReceipt() != null) {
|
||||
stompHeaderAccessor.setHeader("stompCommand", StompCommand.RECEIPT);
|
||||
stompHeaderAccessor.setReceiptId(stompHeaderAccessor.getReceipt());
|
||||
clientOutboundChannel.send(
|
||||
MessageBuilder.createMessage(new byte[0], stompHeaderAccessor.getMessageHeaders()));
|
||||
}
|
||||
return event -> {
|
||||
Message<byte[]> message = event.getMessage();
|
||||
StompHeaderAccessor stompHeaderAccessor = StompHeaderAccessor.wrap(message);
|
||||
if (stompHeaderAccessor.getReceipt() != null) {
|
||||
stompHeaderAccessor.setHeader("stompCommand", StompCommand.RECEIPT);
|
||||
stompHeaderAccessor.setReceiptId(stompHeaderAccessor.getReceipt());
|
||||
clientOutboundChannel.send(
|
||||
MessageBuilder.createMessage(new byte[0], stompHeaderAccessor.getMessageHeaders()));
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user