1
1
/*
2
- * Copyright 2002-2024 the original author or authors.
2
+ * Copyright 2002-2025 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
31
31
import org .springframework .expression .spel .standard .SpelExpression ;
32
32
import org .springframework .http .HttpMethod ;
33
33
import org .springframework .http .client .ClientHttpRequestFactory ;
34
- import org .springframework .http .client .ClientHttpResponse ;
35
34
import org .springframework .http .client .SimpleClientHttpRequestFactory ;
36
35
import org .springframework .integration .endpoint .AbstractEndpoint ;
36
+ import org .springframework .integration .endpoint .EventDrivenConsumer ;
37
37
import org .springframework .integration .endpoint .PollingConsumer ;
38
38
import org .springframework .integration .handler .advice .AbstractRequestHandlerAdvice ;
39
39
import org .springframework .integration .http .outbound .HttpRequestExecutingMessageHandler ;
40
40
import org .springframework .integration .test .util .TestUtils ;
41
41
import org .springframework .messaging .Message ;
42
42
import org .springframework .messaging .MessageChannel ;
43
+ import org .springframework .messaging .MessageHandler ;
43
44
import org .springframework .messaging .support .GenericMessage ;
44
45
import org .springframework .test .annotation .DirtiesContext ;
45
46
import org .springframework .test .context .junit .jupiter .SpringJUnitConfig ;
48
49
49
50
import static org .assertj .core .api .Assertions .assertThat ;
50
51
import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
52
+ import static org .mockito .Mockito .mock ;
51
53
52
54
/**
53
55
* @author Mark Fisher
59
61
@ DirtiesContext
60
62
public class HttpOutboundGatewayParserTests {
61
63
64
+ public static final ResponseErrorHandler mockResponseErrorHandler = mock ();
65
+
62
66
@ Autowired
63
67
@ Qualifier ("minimalConfig" )
64
- private AbstractEndpoint minimalConfigEndpoint ;
68
+ private EventDrivenConsumer minimalConfigEndpoint ;
65
69
66
70
@ Autowired
67
71
@ Qualifier ("fullConfig" )
68
- private AbstractEndpoint fullConfigEndpoint ;
72
+ private EventDrivenConsumer fullConfigEndpoint ;
69
73
70
74
@ Autowired
71
75
@ Qualifier ("withUrlExpression" )
72
- private AbstractEndpoint withUrlExpressionEndpoint ;
76
+ private EventDrivenConsumer withUrlExpressionEndpoint ;
73
77
74
78
@ Autowired
75
79
@ Qualifier ("withAdvice" )
76
- private AbstractEndpoint withAdvice ;
80
+ private EventDrivenConsumer withAdvice ;
77
81
78
82
@ Autowired
79
83
@ Qualifier ("withPoller1" )
@@ -86,48 +90,41 @@ public class HttpOutboundGatewayParserTests {
86
90
87
91
@ Test
88
92
public void minimalConfig () {
89
- HttpRequestExecutingMessageHandler handler = (HttpRequestExecutingMessageHandler ) new DirectFieldAccessor (
90
- this .minimalConfigEndpoint ).getPropertyValue ("handler" );
91
- MessageChannel requestChannel = (MessageChannel ) new DirectFieldAccessor (
92
- this .minimalConfigEndpoint ).getPropertyValue ("inputChannel" );
93
+ HttpRequestExecutingMessageHandler handler =
94
+ (HttpRequestExecutingMessageHandler ) this .minimalConfigEndpoint .getHandler ();
95
+ MessageChannel requestChannel = this .minimalConfigEndpoint .getInputChannel ();
93
96
assertThat (requestChannel ).isEqualTo (this .applicationContext .getBean ("requests" ));
94
- DirectFieldAccessor handlerAccessor = new DirectFieldAccessor (handler );
95
- Object replyChannel = handlerAccessor .getPropertyValue ("outputChannel" );
97
+ Object replyChannel = handler .getOutputChannel ();
96
98
assertThat (replyChannel ).isNull ();
97
- DirectFieldAccessor templateAccessor = new DirectFieldAccessor (handlerAccessor .getPropertyValue ("restTemplate" ));
98
- ClientHttpRequestFactory requestFactory = (ClientHttpRequestFactory )
99
- templateAccessor .getPropertyValue ("requestFactory" );
100
- assertThat (requestFactory instanceof SimpleClientHttpRequestFactory ).isTrue ();
101
- Expression uriExpression = (Expression ) handlerAccessor .getPropertyValue ("uriExpression" );
99
+ Object requestFactory = TestUtils .getPropertyValue (handler , "restTemplate.requestFactory" );
100
+ assertThat (requestFactory ).isInstanceOf (SimpleClientHttpRequestFactory .class );
101
+ Expression uriExpression = TestUtils .getPropertyValue (handler , "uriExpression" , Expression .class );
102
102
assertThat (uriExpression .getValue ()).isEqualTo ("http://localhost/test1" );
103
103
assertThat (TestUtils .getPropertyValue (handler , "httpMethodExpression" , Expression .class ).getExpressionString ())
104
104
.isEqualTo (HttpMethod .POST .name ());
105
- assertThat (handlerAccessor .getPropertyValue ("charset" )).isEqualTo (StandardCharsets .UTF_8 );
106
- assertThat (handlerAccessor .getPropertyValue ("extractPayload" )).isEqualTo (true );
107
- assertThat (handlerAccessor .getPropertyValue ("transferCookies" )).isEqualTo (false );
105
+ assertThat (TestUtils .getPropertyValue (handler , "charset" )).isEqualTo (StandardCharsets .UTF_8 );
106
+ assertThat (TestUtils .getPropertyValue (handler , "extractPayload" )).isEqualTo (true );
107
+ assertThat (TestUtils .getPropertyValue (handler , "transferCookies" )).isEqualTo (false );
108
108
}
109
109
110
110
@ Test
111
111
@ SuppressWarnings ("unchecked" )
112
112
public void fullConfig () {
113
113
DirectFieldAccessor endpointAccessor = new DirectFieldAccessor (this .fullConfigEndpoint );
114
114
HttpRequestExecutingMessageHandler handler =
115
- (HttpRequestExecutingMessageHandler ) endpointAccessor .getPropertyValue ("handler" );
116
- MessageChannel requestChannel = (MessageChannel ) new DirectFieldAccessor (
117
- this .fullConfigEndpoint ).getPropertyValue ("inputChannel" );
115
+ (HttpRequestExecutingMessageHandler ) this .fullConfigEndpoint .getHandler ();
116
+ MessageChannel requestChannel = this .fullConfigEndpoint .getInputChannel ();
118
117
assertThat (requestChannel ).isEqualTo (this .applicationContext .getBean ("requests" ));
119
118
DirectFieldAccessor handlerAccessor = new DirectFieldAccessor (handler );
120
119
assertThat (handlerAccessor .getPropertyValue ("order" )).isEqualTo (77 );
121
120
assertThat (endpointAccessor .getPropertyValue ("autoStartup" )).isEqualTo (Boolean .FALSE );
122
121
Object replyChannel = handlerAccessor .getPropertyValue ("outputChannel" );
123
122
assertThat (replyChannel ).isNotNull ();
124
123
assertThat (replyChannel ).isEqualTo (this .applicationContext .getBean ("replies" ));
125
- DirectFieldAccessor templateAccessor = new DirectFieldAccessor (handlerAccessor .getPropertyValue ("restTemplate" ));
126
- ClientHttpRequestFactory requestFactory = (ClientHttpRequestFactory )
127
- templateAccessor .getPropertyValue ("requestFactory" );
128
- assertThat (requestFactory instanceof SimpleClientHttpRequestFactory ).isTrue ();
124
+ Object requestFactory = TestUtils .getPropertyValue (handler , "restTemplate.requestFactory" );
125
+ assertThat (requestFactory ).isInstanceOf (SimpleClientHttpRequestFactory .class );
129
126
Object converterListBean = this .applicationContext .getBean ("converterList" );
130
- assertThat (templateAccessor .getPropertyValue (" messageConverters" )).isEqualTo (converterListBean );
127
+ assertThat (TestUtils .getPropertyValue (handler , "restTemplate. messageConverters" )).isEqualTo (converterListBean );
131
128
132
129
assertThat (TestUtils .getPropertyValue (handler , "expectedResponseTypeExpression" , Expression .class ).getValue ())
133
130
.isEqualTo (String .class .getName ());
@@ -140,7 +137,7 @@ public void fullConfig() {
140
137
Object requestFactoryBean = this .applicationContext .getBean ("testRequestFactory" );
141
138
assertThat (requestFactory ).isEqualTo (requestFactoryBean );
142
139
Object errorHandlerBean = this .applicationContext .getBean ("testErrorHandler" );
143
- assertThat (templateAccessor .getPropertyValue (" errorHandler" )).isEqualTo (errorHandlerBean );
140
+ assertThat (TestUtils .getPropertyValue (handler , "restTemplate. errorHandler" )).isEqualTo (errorHandlerBean );
144
141
Object sendTimeout = new DirectFieldAccessor (
145
142
handlerAccessor .getPropertyValue ("messagingTemplate" )).getPropertyValue ("sendTimeout" );
146
143
assertThat (sendTimeout ).isEqualTo (1234L );
@@ -162,10 +159,9 @@ public void fullConfig() {
162
159
163
160
@ Test
164
161
public void withUrlExpression () {
165
- HttpRequestExecutingMessageHandler handler = (HttpRequestExecutingMessageHandler ) new DirectFieldAccessor (
166
- this .withUrlExpressionEndpoint ).getPropertyValue ("handler" );
167
- MessageChannel requestChannel = (MessageChannel ) new DirectFieldAccessor (
168
- this .withUrlExpressionEndpoint ).getPropertyValue ("inputChannel" );
162
+ HttpRequestExecutingMessageHandler handler =
163
+ (HttpRequestExecutingMessageHandler ) this .withUrlExpressionEndpoint .getHandler ();
164
+ MessageChannel requestChannel = this .withUrlExpressionEndpoint .getInputChannel ();
169
165
assertThat (requestChannel ).isEqualTo (this .applicationContext .getBean ("requests" ));
170
166
DirectFieldAccessor handlerAccessor = new DirectFieldAccessor (handler );
171
167
Object replyChannel = handlerAccessor .getPropertyValue ("outputChannel" );
@@ -194,8 +190,7 @@ public void withUrlExpression() {
194
190
195
191
@ Test
196
192
public void withAdvice () {
197
- HttpRequestExecutingMessageHandler handler = (HttpRequestExecutingMessageHandler ) new DirectFieldAccessor (
198
- this .withAdvice ).getPropertyValue ("handler" );
193
+ MessageHandler handler = this .withAdvice .getHandler ();
199
194
handler .handleMessage (new GenericMessage <>("foo" ));
200
195
assertThat (adviceCalled ).isEqualTo (1 );
201
196
}
@@ -214,19 +209,6 @@ public void withPoller() {
214
209
assertThat (this .withPoller1 ).isInstanceOf (PollingConsumer .class );
215
210
}
216
211
217
- public static class StubErrorHandler implements ResponseErrorHandler {
218
-
219
- @ Override
220
- public boolean hasError (ClientHttpResponse response ) {
221
- return false ;
222
- }
223
-
224
- @ Override
225
- public void handleError (ClientHttpResponse response ) {
226
- }
227
-
228
- }
229
-
230
212
public static class FooAdvice extends AbstractRequestHandlerAdvice {
231
213
232
214
@ Override
0 commit comments