|
30 | 30 | import org.junit.jupiter.api.Test;
|
31 | 31 |
|
32 | 32 | import org.springframework.kafka.KafkaException;
|
| 33 | +import org.springframework.kafka.core.KafkaProducerException; |
33 | 34 |
|
34 | 35 | /**
|
35 | 36 | * Tests for {@link CommonDelegatingErrorHandler}.
|
@@ -90,38 +91,75 @@ void testBatchDelegates() {
|
90 | 91 | }
|
91 | 92 |
|
92 | 93 | @Test
|
93 |
| - void testDelegateForInitialCauseOfThrowableIsAppliedWhenDeepTraversingFlagIsSet() { |
| 94 | + void testDelegateForThrowableIsAppliedWhenCauseTraversingIsEnabled() { |
94 | 95 | var defaultHandler = mock(CommonErrorHandler.class);
|
95 | 96 |
|
96 |
| - var initErrorHandler = mock(CommonErrorHandler.class); |
97 |
| - var initExc = new IllegalStateException(); |
98 | 97 | var directCauseErrorHandler = mock(CommonErrorHandler.class);
|
99 |
| - var directCauseExc = new IllegalArgumentException(initExc); |
| 98 | + var directCauseExc = new IllegalArgumentException(); |
100 | 99 | var errorHandler = mock(CommonErrorHandler.class);
|
101 | 100 | var exc = new UnsupportedOperationException(directCauseExc);
|
102 | 101 |
|
103 | 102 | var delegatingErrorHandler = new CommonDelegatingErrorHandler(defaultHandler);
|
104 |
| - delegatingErrorHandler.setDeepCauseChainTraversing(true); |
| 103 | + delegatingErrorHandler.setCauseChainTraversing(true); |
105 | 104 | delegatingErrorHandler.setErrorHandlers(Map.of(
|
106 |
| - initExc.getClass(), initErrorHandler, |
107 |
| - directCauseExc.getClass(), directCauseErrorHandler, |
108 |
| - exc.getClass(), errorHandler |
| 105 | + exc.getClass(), errorHandler, |
| 106 | + directCauseExc.getClass(), directCauseErrorHandler |
109 | 107 | ));
|
110 | 108 |
|
111 |
| - delegatingErrorHandler.handleRemaining(exc, Collections.emptyList(), mock(Consumer.class), |
| 109 | + delegatingErrorHandler.handleRemaining(directCauseExc, Collections.emptyList(), mock(Consumer.class), |
112 | 110 | mock(MessageListenerContainer.class));
|
113 | 111 |
|
114 |
| - verify(initErrorHandler).handleRemaining(any(), any(), any(), any()); |
115 |
| - verify(directCauseErrorHandler, never()).handleRemaining(any(), any(), any(), any()); |
| 112 | + verify(directCauseErrorHandler).handleRemaining(any(), any(), any(), any()); |
116 | 113 | verify(errorHandler, never()).handleRemaining(any(), any(), any(), any());
|
117 | 114 | }
|
118 | 115 |
|
| 116 | + @Test |
| 117 | + void testDelegateForThrowableCauseIsAppliedWhenCauseTraversingIsEnabled() { |
| 118 | + var defaultHandler = mock(CommonErrorHandler.class); |
| 119 | + |
| 120 | + var directCauseErrorHandler = mock(CommonErrorHandler.class); |
| 121 | + var directCauseExc = new IllegalArgumentException(); |
| 122 | + var exc = new UnsupportedOperationException(directCauseExc); |
| 123 | + |
| 124 | + var delegatingErrorHandler = new CommonDelegatingErrorHandler(defaultHandler); |
| 125 | + delegatingErrorHandler.setCauseChainTraversing(true); |
| 126 | + delegatingErrorHandler.setErrorHandlers(Map.of( |
| 127 | + directCauseExc.getClass(), directCauseErrorHandler |
| 128 | + )); |
| 129 | + |
| 130 | + delegatingErrorHandler.handleRemaining(exc, Collections.emptyList(), mock(Consumer.class), |
| 131 | + mock(MessageListenerContainer.class)); |
| 132 | + |
| 133 | + verify(directCauseErrorHandler).handleRemaining(any(), any(), any(), any()); |
| 134 | + } |
| 135 | + |
| 136 | + @Test |
| 137 | + @SuppressWarnings("ConstantConditions") |
| 138 | + void testDelegateForClassifiableThrowableCauseIsAppliedWhenCauseTraversingIsEnabled() { |
| 139 | + var defaultHandler = mock(CommonErrorHandler.class); |
| 140 | + |
| 141 | + var directCauseErrorHandler = mock(CommonErrorHandler.class); |
| 142 | + var directCauseExc = new KafkaProducerException(null, null, null); |
| 143 | + var exc = new UnsupportedOperationException(directCauseExc); |
| 144 | + |
| 145 | + var delegatingErrorHandler = new CommonDelegatingErrorHandler(defaultHandler); |
| 146 | + delegatingErrorHandler.setCauseChainTraversing(true); |
| 147 | + delegatingErrorHandler.setErrorHandlers(Map.of( |
| 148 | + KafkaException.class, directCauseErrorHandler |
| 149 | + )); |
| 150 | + |
| 151 | + delegatingErrorHandler.handleRemaining(exc, Collections.emptyList(), mock(Consumer.class), |
| 152 | + mock(MessageListenerContainer.class)); |
| 153 | + |
| 154 | + verify(directCauseErrorHandler).handleRemaining(any(), any(), any(), any()); |
| 155 | + } |
| 156 | + |
119 | 157 | @Test
|
120 | 158 | @SuppressWarnings("ConstantConditions")
|
121 |
| - void testDefaultDelegateIsAppliedWhenDeepTraversingFlagIsSetAndNullThrowableHasBeenPassed() { |
| 159 | + void testDefaultDelegateIsApplied() { |
122 | 160 | var defaultHandler = mock(CommonErrorHandler.class);
|
123 | 161 | var delegatingErrorHandler = new CommonDelegatingErrorHandler(defaultHandler);
|
124 |
| - delegatingErrorHandler.setDeepCauseChainTraversing(true); |
| 162 | + delegatingErrorHandler.setCauseChainTraversing(true); |
125 | 163 |
|
126 | 164 | delegatingErrorHandler.handleRemaining(null, Collections.emptyList(), mock(Consumer.class),
|
127 | 165 | mock(MessageListenerContainer.class));
|
|
0 commit comments