GH-1485: Remove Deprecations

Resolves https://github.com/spring-projects/spring-amqp/issues/1485
This commit is contained in:
Gary Russell
2022-09-06 15:55:47 -04:00
parent ba4b62e255
commit d4e0f5c366
14 changed files with 14 additions and 368 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2015-2020 the original author or authors.
* Copyright 2015-2022 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.
@@ -32,13 +32,6 @@ public class AmqpMessageReturnedException extends AmqpException {
private final ReturnedMessage returned;
@Deprecated
public AmqpMessageReturnedException(String message, Message returnedMessage, int replyCode, String replyText,
String exchange, String routingKey) {
this(message, new ReturnedMessage(returnedMessage, replyCode, replyText, exchange, routingKey));
}
public AmqpMessageReturnedException(String message, ReturnedMessage returned) {
super(message);
this.returned = returned;

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2021 the original author or authors.
* Copyright 2002-2022 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.
@@ -74,16 +74,6 @@ public class Message implements Serializable {
this.messageProperties = messageProperties;
}
/**
* No longer used.
* @param patterns the patterns.
* @since 1.5.7
* @deprecated toString() no longer deserializes the body.
*/
@Deprecated
public static void addAllowedListPatterns(String... patterns) {
}
/**
* Set the encoding to use in {@link #toString()} when converting the body if
* there is no {@link MessageProperties#getContentEncoding() contentEncoding} message property present.

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2021 the original author or authors.
* Copyright 2002-2022 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.
@@ -32,14 +32,6 @@ import org.springframework.util.StringUtils;
*/
public class Queue extends AbstractDeclarable implements Cloneable {
/**
* Argument key for the master locator.
* @since 2.1
* @deprecated in favor of {@link #X_QUEUE_LEADER_LOCATOR}.
*/
@Deprecated
public static final String X_QUEUE_MASTER_LOCATOR = "x-queue-master-locator";
/**
* Argument key for the queue leader locator.
* @since 2.1
@@ -165,22 +157,6 @@ public class Queue extends AbstractDeclarable implements Cloneable {
return this.actualName;
}
/**
* Set the master locator strategy argument for this queue.
* @param locator the locator; null to clear the argument.
* @since 2.1
* @deprecated in favor of {@link #setLeaderLocator(String)}.
*/
@Deprecated
public final void setMasterLocator(@Nullable String locator) {
if (locator == null) {
removeArgument(X_QUEUE_LEADER_LOCATOR);
}
else {
addArgument(X_QUEUE_LEADER_LOCATOR, locator);
}
}
/**
* Set the leader locator strategy argument for this queue.
* @param locator the locator; null to clear the argument.

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2016-2021 the original author or authors.
* Copyright 2016-2022 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.
@@ -223,20 +223,6 @@ public final class QueueBuilder extends AbstractBuilder {
return withArgument("x-queue-mode", "lazy");
}
/**
* Set the master locator mode which determines which node a queue master will be
* located on a cluster of nodes.
* @param locator {@link MasterLocator#minMasters}, {@link MasterLocator#clientLocal}
* or {@link MasterLocator#random}.
* @return the builder.
* @since 2.2
* @deprecated in favor of {@link #leaderLocator(LeaderLocator)}.
*/
@Deprecated
public QueueBuilder masterLocator(MasterLocator locator) {
return withArgument("x-queue-master-locator", locator.getValue());
}
/**
* Set the master locator mode which determines which node a queue master will be
* located on a cluster of nodes.
@@ -326,43 +312,6 @@ public final class QueueBuilder extends AbstractBuilder {
}
/**
* @deprecated in favor of {@link LeaderLocator}.
*/
@Deprecated
public enum MasterLocator {
/**
* Deploy on the node with the fewest masters.
*/
minMasters("min-masters"),
/**
* Deploy on the node we are connected to.
*/
clientLocal("client-local"),
/**
* Deploy on a random node.
*/
random("random");
private final String value;
MasterLocator(String value) {
this.value = value;
}
/**
* Return the value.
* @return the value.
*/
public String getValue() {
return this.value;
}
}
/**
* Locate the queue leader.
*

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2016-2020 the original author or authors.
* Copyright 2016-2022 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.
@@ -47,17 +47,6 @@ public class LambdaAnswer<T> extends ForwardsInvocations {
private final boolean hasDelegate;
/**
* Deprecated.
* @param callRealMethod true to call the real method.
* @param callback the callback.
* @deprecated in favor of {@link #LambdaAnswer(boolean, ValueToReturn, Object)}.
*/
@Deprecated
public LambdaAnswer(boolean callRealMethod, ValueToReturn<T> callback) {
this(callRealMethod, callback, null);
}
/**
* Construct an instance with the provided properties. Use the test harness to get an
* instance with the proper delegate.

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2016-2021 the original author or authors.
* Copyright 2016-2022 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.
@@ -46,17 +46,6 @@ public class LatchCountDownAndCallRealMethodAnswer extends ForwardsInvocations {
private final boolean hasDelegate;
/**
* Get an instance with no delegate.
* @param count to set in a {@link CountDownLatch}.
* @deprecated in favor of
* {@link #LatchCountDownAndCallRealMethodAnswer(int, Object)}.
*/
@Deprecated
public LatchCountDownAndCallRealMethodAnswer(int count) {
this(count, null);
}
/**
* Get an instance with the provided properties. Use the test harness to get an
* instance with the proper delegate.

View File

@@ -397,45 +397,6 @@ public class CachingConnectionFactory extends AbstractConnectionFactory
}
}
/**
* Use full (correlated) publisher confirms, with correlation data and a callback for
* each message.
* @param publisherConfirms true for full publisher returns,
* @since 1.1
* @deprecated in favor of {@link #setPublisherConfirmType(ConfirmType)}.
* @see #setSimplePublisherConfirms(boolean)
*/
@Deprecated
public void setPublisherConfirms(boolean publisherConfirms) {
Assert.isTrue(!publisherConfirms || !ConfirmType.SIMPLE.equals(this.confirmType),
"Cannot set both publisherConfirms and simplePublisherConfirms");
if (publisherConfirms) {
setPublisherConfirmType(ConfirmType.CORRELATED);
}
else if (this.confirmType.equals(ConfirmType.CORRELATED)) {
setPublisherConfirmType(ConfirmType.NONE);
}
}
/**
* Use simple publisher confirms where the template simply waits for completion.
* @param simplePublisherConfirms true for confirms.
* @since 2.1
* @deprecated in favor of {@link #setPublisherConfirmType(ConfirmType)}.
* @see #setPublisherConfirms(boolean)
*/
@Deprecated
public void setSimplePublisherConfirms(boolean simplePublisherConfirms) {
Assert.isTrue(!simplePublisherConfirms || !ConfirmType.CORRELATED.equals(this.confirmType),
"Cannot set both publisherConfirms and simplePublisherConfirms");
if (simplePublisherConfirms) {
setPublisherConfirmType(ConfirmType.SIMPLE);
}
else if (this.confirmType.equals(ConfirmType.SIMPLE)) {
setPublisherConfirmType(ConfirmType.NONE);
}
}
@Override
public boolean isSimplePublisherConfirms() {
return this.confirmType.equals(ConfirmType.SIMPLE);

View File

@@ -20,7 +20,6 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.springframework.amqp.core.Correlation;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.ReturnedMessage;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
@@ -99,44 +98,13 @@ public class CorrelationData implements Correlation {
* Return a future to check the success/failure of the publish operation.
* @return the future.
* @since 2.4.7
* @deprecated in favor of {@link #getFuture()}.
* @deprecated as of 3.0, in favor of {@link #getFuture()}.
*/
@Deprecated
public CompletableFuture<Confirm> getCompletableFuture() {
return this.future;
}
/**
* Return a returned message, if any; requires a unique
* {@link #CorrelationData(String) id}. Guaranteed to be populated before the future
* is set.
* @return the message or null.
* @since 2.1
* @deprecated in favor of {@link #getReturned()}.
*/
@Deprecated
@Nullable
public Message getReturnedMessage() {
if (this.returnedMessage == null) {
return null;
}
else {
return this.returnedMessage.getMessage();
}
}
/**
* Set a returned message for this correlation data.
* @param returnedMessage the returned message.
* @since 1.7.13
* @deprecated in favor of {@link #setReturned(ReturnedMessage)}.
*/
@Deprecated
public void setReturnedMessage(Message returnedMessage) {
this.returnedMessage = new ReturnedMessage(returnedMessage, 0, "not available", "not available",
"not available");
}
/**
* Get the returned message and metadata, if any. Guaranteed to be populated before
* the future is set.

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2022 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.
@@ -19,7 +19,6 @@ package org.springframework.amqp.rabbit.connection;
import java.util.Collection;
import java.util.function.Consumer;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Return;
@@ -115,37 +114,11 @@ public interface PublisherCallbackChannel extends Channel {
*/
void handleConfirm(PendingConfirm pendingConfirm, boolean ack);
/**
* Handle a returned message.
* @param replyCode the reply code.
* @param replyText the reply text.
* @param exchange the exchange.
* @param routingKey the routing key.
* @param properties the message properties.
* @param body the message body.
* @deprecated in favor of {@link #handleReturn(Return)}.
*/
@Deprecated
default void handleReturn(int replyCode,
String replyText,
String exchange,
String routingKey,
AMQP.BasicProperties properties,
byte[] body) {
throw new UnsupportedOperationException(
"This should never be called; please open a GitHub issue with a stack trace");
}
/**
* Handle a returned message.
* @param returned the message and metadata.
*/
@SuppressWarnings("deprecation")
default void handleReturn(Return returned) {
handleReturn(returned.getReplyCode(), returned.getReplyText(), returned.getExchange(),
returned.getRoutingKey(), returned.getProperties(), returned.getBody());
}
void handleReturn(Return returned);
/**
* When called, this listener should remove all references to the

View File

@@ -471,29 +471,7 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count
/**
* Set a callback to receive returned messages.
* @param returnCallback the callback.
* @deprecated in favor of {@link #setReturnsCallback(ReturnsCallback)}.
*/
@Deprecated
public void setReturnCallback(ReturnCallback returnCallback) {
ReturnCallback delegate = this.returnsCallback == null ? null : this.returnsCallback.delegate();
Assert.state(this.returnsCallback == null || delegate == null || delegate.equals(returnCallback),
"Only one ReturnCallback is supported by each RabbitTemplate");
this.returnsCallback = new ReturnsCallback() {
@Override
public void returnedMessage(ReturnedMessage returned) {
returnCallback.returnedMessage(returned.getMessage(), returned.getReplyCode(), returned.getReplyText(),
returned.getExchange(), returned.getRoutingKey());
}
@Override
public ReturnCallback delegate() {
return returnCallback;
}
};
}
public void setReturnsCallback(ReturnsCallback returnCallback) {
Assert.state(this.returnsCallback == null || this.returnsCallback.equals(returnCallback),
"Only one ReturnCallback is supported by each RabbitTemplate");
@@ -2584,18 +2562,6 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count
}
}
@Override
@SuppressWarnings("deprecation")
public void handleReturn(int replyCode,
String replyText,
String exchange,
String routingKey,
BasicProperties properties,
byte[] body) {
handleReturn(new Return(replyCode, replyText, exchange, routingKey, properties, body));
}
@Override
public void handleReturn(Return returned) {
ReturnsCallback callback = this.returnsCallback;
@@ -2683,17 +2649,6 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count
}
}
/**
* {@inheritDoc}
*
* @deprecated - use {@link #onMessage(Message, Channel)}.
*/
@Deprecated
@Override
public void onMessage(Message message) {
onMessage(message, null);
}
private void restoreProperties(Message message, PendingReply pendingReply) {
if (!this.userCorrelationId) {
// Restore the inbound correlation data
@@ -2854,82 +2809,20 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count
}
/**
* A callback for returned messages.
*
* @deprecated in favor of {@link #returnedMessage(ReturnedMessage)} which is
* easier to use with lambdas.
*/
@Deprecated
@FunctionalInterface
public interface ReturnCallback {
/**
* Returned message callback.
* @param message the returned message.
* @param replyCode the reply code.
* @param replyText the reply text.
* @param exchange the exchange.
* @param routingKey the routing key.
*/
void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey);
/**
* Returned message callback.
* @param returned the returned message and metadata.
*/
@SuppressWarnings("deprecation")
default void returnedMessage(ReturnedMessage returned) {
returnedMessage(returned.getMessage(), returned.getReplyCode(), returned.getReplyText(),
returned.getExchange(), returned.getRoutingKey());
}
}
/**
* A callback for returned messages.
*
* @since 2.3
*/
@FunctionalInterface
public interface ReturnsCallback extends ReturnCallback {
/**
* Returned message callback.
* @param message the returned message.
* @param replyCode the reply code.
* @param replyText the reply text.
* @param exchange the exchange.
* @param routingKey the routing key.
* @deprecated in favor of {@link #returnedMessage(ReturnedMessage)} which is
* easier to use with lambdas.
*/
@Override
@Deprecated
default void returnedMessage(Message message, int replyCode, String replyText, String exchange,
String routingKey) {
throw new UnsupportedOperationException(
"This should never be called, please open a GitHub issue with a stack trace");
};
public interface ReturnsCallback {
/**
* Returned message callback.
* @param returned the returned message and metadata.
*/
@Override
void returnedMessage(ReturnedMessage returned);
/**
* Internal use only; transitional during deprecation.
* @return the legacy delegate.
* @deprecated - will be removed with {@link ReturnCallback}.
*/
@Deprecated
@Nullable
default ReturnCallback delegate() {
return null;
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2015-2021 the original author or authors.
* Copyright 2015-2022 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.
@@ -40,17 +40,6 @@ public class MultiMethodRabbitListenerEndpoint extends MethodRabbitListenerEndpo
private Validator validator;
/**
* Construct an instance for the provided methods and bean.
* @param methods the methods.
* @param bean the bean.
* @deprecated - no longer used.
*/
@Deprecated
public MultiMethodRabbitListenerEndpoint(List<Method> methods, Object bean) {
this(methods, null, bean);
}
/**
* Construct an instance for the provided methods, default method and bean.
* @param methods the methods.

View File

@@ -108,7 +108,6 @@ public class RepublishMessageRecovererWithConfirms extends RepublishMessageRecov
}
}
@SuppressWarnings("deprecation")
private void doSendCorrelated(String exchange, String routingKey, Message message) {
CorrelationData cd = new CorrelationData();
if (exchange != null) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2019-2021 the original author or authors.
* Copyright 2019-2022 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.
@@ -64,11 +64,10 @@ import com.rabbitmq.client.ShutdownSignalException;
@RabbitAvailable
public class PublisherCallbackChannelTests {
@SuppressWarnings("deprecation")
@Test
void correlationData() {
CorrelationData cd = new CorrelationData();
assertThat(cd.getReturnedMessage()).isNull();
assertThat(cd.getReturned()).isNull();
}
@Test

View File

@@ -61,7 +61,6 @@ import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.ReceiveAndReplyCallback;
import org.springframework.amqp.core.ReturnedMessage;
import org.springframework.amqp.rabbit.connection.AbstractRoutingConnectionFactory;
import org.springframework.amqp.rabbit.connection.AfterCompletionFailedException;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
@@ -71,7 +70,6 @@ import org.springframework.amqp.rabbit.connection.PublisherCallbackChannel;
import org.springframework.amqp.rabbit.connection.RabbitUtils;
import org.springframework.amqp.rabbit.connection.SimpleRoutingConnectionFactory;
import org.springframework.amqp.rabbit.connection.SingleConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnsCallback;
import org.springframework.amqp.rabbit.transaction.RabbitTransactionManager;
import org.springframework.amqp.support.converter.SimpleMessageConverter;
import org.springframework.amqp.utils.SerializationUtils;
@@ -580,26 +578,6 @@ public class RabbitTemplateTests {
verify(conn).createChannel(true);
}
@SuppressWarnings("deprecation")
@Test
public void testReturnsFallback() {
RabbitTemplate template = new RabbitTemplate();
AtomicBoolean called = new AtomicBoolean();
template.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> {
called.set(true);
});
ReturnsCallback cb = TestUtils.getPropertyValue(template, "returnsCallback", ReturnsCallback.class);
cb.returnedMessage(new ReturnedMessage(null, 0, null, null, null));
assertThat(called.get()).isTrue();
assertThatIllegalStateException().isThrownBy(() ->
template.setReturnCallback(mock(RabbitTemplate.ReturnCallback.class)));
RabbitTemplate template2 = new RabbitTemplate();
org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback callback =
mock(org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback.class);
template2.setReturnCallback(callback);
template2.setReturnCallback(callback);
}
@Test
void resourcesClearedAfterTxFails() throws IOException, TimeoutException {
ConnectionFactory mockConnectionFactory = mock(ConnectionFactory.class);