GH-1067: Fix deprecated setters

Fixes https://github.com/spring-projects/spring-amqp/issues/1067

* * reset `confirmType` in setter, if appropriate

* * Fix reset propagation to publisher CF
This commit is contained in:
Gary Russell
2019-08-20 10:02:15 -04:00
committed by Artem Bilan
parent acb56833d1
commit 3d5fe16be8
2 changed files with 44 additions and 4 deletions

View File

@@ -406,9 +406,14 @@ public class CachingConnectionFactory extends AbstractConnectionFactory
*/
@Deprecated
public void setPublisherConfirms(boolean publisherConfirms) {
Assert.isTrue(!ConfirmType.SIMPLE.equals(this.confirmType),
Assert.isTrue(!publisherConfirms || !ConfirmType.SIMPLE.equals(this.confirmType),
"Cannot set both publisherConfirms and simplePublisherConfirms");
setPublisherConfirmType(ConfirmType.CORRELATED);
if (publisherConfirms) {
setPublisherConfirmType(ConfirmType.CORRELATED);
}
else if (this.confirmType.equals(ConfirmType.CORRELATED)) {
setPublisherConfirmType(ConfirmType.NONE);
}
}
/**
@@ -420,9 +425,14 @@ public class CachingConnectionFactory extends AbstractConnectionFactory
*/
@Deprecated
public void setSimplePublisherConfirms(boolean simplePublisherConfirms) {
Assert.isTrue(!ConfirmType.CORRELATED.equals(this.confirmType),
Assert.isTrue(!simplePublisherConfirms || !ConfirmType.CORRELATED.equals(this.confirmType),
"Cannot set both publisherConfirms and simplePublisherConfirms");
setPublisherConfirmType(ConfirmType.SIMPLE);
if (simplePublisherConfirms) {
setPublisherConfirmType(ConfirmType.SIMPLE);
}
else if (this.confirmType.equals(ConfirmType.SIMPLE)) {
setPublisherConfirmType(ConfirmType.NONE);
}
}
@Override

View File

@@ -1846,4 +1846,34 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest
assertThat(firstAddress).containsExactly("host1", "host2", "host3");
}
@SuppressWarnings("deprecation")
@Test
public void confirmsSimple() {
CachingConnectionFactory cf = new CachingConnectionFactory(mock(ConnectionFactory.class));
cf.setSimplePublisherConfirms(false);
assertThat(cf.isSimplePublisherConfirms()).isFalse();
assertThat(cf.getPublisherConnectionFactory().isSimplePublisherConfirms()).isFalse();
cf.setSimplePublisherConfirms(true);
assertThat(cf.isSimplePublisherConfirms()).isTrue();
assertThat(cf.getPublisherConnectionFactory().isSimplePublisherConfirms()).isTrue();
cf.setSimplePublisherConfirms(false);
assertThat(cf.isSimplePublisherConfirms()).isFalse();
assertThat(cf.getPublisherConnectionFactory().isSimplePublisherConfirms()).isFalse();
}
@SuppressWarnings("deprecation")
@Test
public void confirmsCorrelated() {
CachingConnectionFactory cf = new CachingConnectionFactory(mock(ConnectionFactory.class));
cf.setPublisherConfirms(false);
assertThat(cf.getPublisherConnectionFactory().isPublisherConfirms()).isFalse();
assertThat(cf.isPublisherConfirms()).isFalse();
cf.setPublisherConfirms(true);
assertThat(cf.getPublisherConnectionFactory().isPublisherConfirms()).isTrue();
assertThat(cf.isPublisherConfirms()).isTrue();
cf.setPublisherConfirms(false);
assertThat(cf.isPublisherConfirms()).isFalse();
assertThat(cf.getPublisherConnectionFactory().isPublisherConfirms()).isFalse();
}
}