Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
8bcea0d8
Commit
8bcea0d8
authored
May 31, 2018
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Add auto-configuration for WebServiceTemplate"
Closes gh-1270
parent
ef9c1a8e
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
930 additions
and
1420 deletions
+930
-1420
WebServiceTemplateAutoConfiguration.java
...bservices/client/WebServiceTemplateAutoConfiguration.java
+3
-3
WebServiceTemplateAutoConfigurationTests.java
...ices/client/WebServiceTemplateAutoConfigurationTests.java
+61
-45
spring-boot-features.adoc
...ing-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+46
-29
pom.xml
spring-boot-project/spring-boot/pom.xml
+5
-5
HttpWebServiceMessageSenderBuilder.java
...ebservices/client/HttpWebServiceMessageSenderBuilder.java
+124
-0
WebServiceTemplateBuilder.java
...rk/boot/webservices/client/WebServiceTemplateBuilder.java
+283
-724
WebServiceTemplateCustomizer.java
...boot/webservices/client/WebServiceTemplateCustomizer.java
+1
-0
package-info.java
...springframework/boot/webservices/client/package-info.java
+0
-1
HttpWebServiceMessageSenderBuilderOkHttp3IntegrationTests.java
...ebServiceMessageSenderBuilderOkHttp3IntegrationTests.java
+23
-32
HttpWebServiceMessageSenderBuilderSimpleIntegrationTests.java
...WebServiceMessageSenderBuilderSimpleIntegrationTests.java
+71
-0
HttpWebServiceMessageSenderBuilderTests.java
...vices/client/HttpWebServiceMessageSenderBuilderTests.java
+84
-0
WebServiceTemplateBuilderCustomsMessageSenderTests.java
...t/WebServiceTemplateBuilderCustomsMessageSenderTests.java
+0
-93
WebServiceTemplateBuilderHttpComponentsMessageSenderTests.java
...rviceTemplateBuilderHttpComponentsMessageSenderTests.java
+0
-67
WebServiceTemplateBuilderSimpleClientHttpRequestFactoryTests.java
...ceTemplateBuilderSimpleClientHttpRequestFactoryTests.java
+0
-52
WebServiceTemplateBuilderTests.java
...ot/webservices/client/WebServiceTemplateBuilderTests.java
+229
-369
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/webservices/client/WebServiceTemplateAutoConfiguration.java
View file @
8bcea0d8
...
@@ -37,10 +37,10 @@ import org.springframework.ws.client.core.WebServiceTemplate;
...
@@ -37,10 +37,10 @@ import org.springframework.ws.client.core.WebServiceTemplate;
* {@link EnableAutoConfiguration Auto-configuration} for {@link WebServiceTemplate}.
* {@link EnableAutoConfiguration Auto-configuration} for {@link WebServiceTemplate}.
*
*
* @author Dmytro Nosan
* @author Dmytro Nosan
* @since 2.1.0
*/
*/
@Configuration
@Configuration
@ConditionalOnClass
({
WebServiceTemplateBuilder
.
class
,
WebServiceTemplate
.
class
,
@ConditionalOnClass
({
WebServiceTemplate
.
class
,
Unmarshaller
.
class
,
Marshaller
.
class
})
Unmarshaller
.
class
,
Marshaller
.
class
})
public
class
WebServiceTemplateAutoConfiguration
{
public
class
WebServiceTemplateAutoConfiguration
{
private
final
ObjectProvider
<
List
<
WebServiceTemplateCustomizer
>>
webServiceTemplateCustomizers
;
private
final
ObjectProvider
<
List
<
WebServiceTemplateCustomizer
>>
webServiceTemplateCustomizers
;
...
@@ -59,7 +59,7 @@ public class WebServiceTemplateAutoConfiguration {
...
@@ -59,7 +59,7 @@ public class WebServiceTemplateAutoConfiguration {
if
(!
CollectionUtils
.
isEmpty
(
customizers
))
{
if
(!
CollectionUtils
.
isEmpty
(
customizers
))
{
customizers
=
new
ArrayList
<>(
customizers
);
customizers
=
new
ArrayList
<>(
customizers
);
AnnotationAwareOrderComparator
.
sort
(
customizers
);
AnnotationAwareOrderComparator
.
sort
(
customizers
);
builder
=
builder
.
setC
ustomizers
(
customizers
);
builder
=
builder
.
c
ustomizers
(
customizers
);
}
}
return
builder
;
return
builder
;
}
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/webservices/client/WebServiceTemplateAutoConfigurationTests.java
View file @
8bcea0d8
...
@@ -16,82 +16,94 @@
...
@@ -16,82 +16,94 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
webservices
.
client
;
package
org
.
springframework
.
boot
.
autoconfigure
.
webservices
.
client
;
import
org.junit.After
;
import
java.util.function.Consumer
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.test.context.assertj.AssertableApplicationContext
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.boot.test.context.runner.ContextConsumer
;
import
org.springframework.boot.webservices.client.WebServiceTemplateBuilder
;
import
org.springframework.boot.webservices.client.WebServiceTemplateBuilder
;
import
org.springframework.boot.webservices.client.WebServiceTemplateCustomizer
;
import
org.springframework.boot.webservices.client.WebServiceTemplateCustomizer
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.oxm.Marshaller
;
import
org.springframework.oxm.Unmarshaller
;
import
org.springframework.oxm.jaxb.Jaxb2Marshaller
;
import
org.springframework.oxm.jaxb.Jaxb2Marshaller
;
import
org.springframework.ws.client.core.WebServiceTemplate
;
import
org.springframework.ws.client.core.WebServiceTemplate
;
import
org.springframework.ws.transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
/**
* Tests for {@link WebServiceTemplateAutoConfiguration
* Tests for {@link WebServiceTemplateAutoConfiguration}.
* WebServiceTemplateAutoConfiguration}.
*
*
* @author Stephane Nicoll
* @author Dmytro Nosan
* @author Dmytro Nosan
*/
*/
public
class
WebServiceTemplateAutoConfigurationTests
{
public
class
WebServiceTemplateAutoConfigurationTests
{
private
AnnotationConfigApplicationContext
context
;
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
WebServiceTemplateAutoConfiguration
.
class
));
@After
@Test
public
void
close
()
{
public
void
autoConfiguredBuilderShouldNotHaveMarshallerAndUnmarshaller
()
{
if
(
this
.
context
!=
null
)
{
this
.
contextRunner
.
run
(
assertWebServiceTemplateBuilder
((
builder
)
->
{
this
.
context
.
close
();
WebServiceTemplate
webServiceTemplate
=
builder
.
build
();
}
assertThat
(
webServiceTemplate
.
getUnmarshaller
()).
isNull
();
assertThat
(
webServiceTemplate
.
getMarshaller
()).
isNull
();
}));
}
}
@Test
@Test
public
void
webServiceTemplateShouldNotHaveMarshallerAndUnmarshaller
()
{
public
void
autoConfiguredBuilderShouldHaveHttpMessageSenderByDefault
()
{
load
(
WebServiceTemplateConfig
.
class
);
this
.
contextRunner
.
run
(
assertWebServiceTemplateBuilder
((
builder
)
->
{
WebServiceTemplate
webServiceTemplate
=
this
.
context
WebServiceTemplate
webServiceTemplate
=
builder
.
build
();
.
getBean
(
WebServiceTemplate
.
class
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()).
hasSize
(
1
);
assertThat
(
webServiceTemplate
.
getUnmarshaller
()).
isNull
();
WebServiceMessageSender
messageSender
=
webServiceTemplate
assertThat
(
webServiceTemplate
.
getMarshaller
()).
isNull
();
.
getMessageSenders
()[
0
];
assertThat
(
messageSender
).
isInstanceOf
(
ClientHttpRequestMessageSender
.
class
);
}));
}
}
@Test
@Test
public
void
webServiceTemplateShouldUserCustomBuilder
()
{
public
void
webServiceTemplateWhenHasCustomBuilderShouldUseCustomBuilder
()
{
load
(
CustomWebServiceTemplateBuilderConfig
.
class
,
WebServiceTemplateConfig
.
class
);
this
.
contextRunner
WebServiceTemplate
webServiceTemplate
=
this
.
context
.
withUserConfiguration
(
CustomWebServiceTemplateBuilderConfig
.
class
)
.
getBean
(
WebServiceTemplate
.
class
);
.
run
(
assertWebServiceTemplateBuilder
((
builder
)
->
{
assertThat
(
webServiceTemplate
.
getMarshaller
()).
isNotNull
();
WebServiceTemplate
webServiceTemplate
=
builder
.
build
();
assertThat
(
webServiceTemplate
.
getMarshaller
())
.
isSameAs
(
CustomWebServiceTemplateBuilderConfig
.
marshaller
);
}));
}
}
@Test
@Test
public
void
webServiceTemplateShouldApplyCustomizer
()
{
public
void
webServiceTemplateShouldApplyCustomizer
()
{
load
(
WebServiceTemplateCustomizerConfig
.
class
,
WebServiceTemplateConfig
.
class
);
this
.
contextRunner
.
withUserConfiguration
(
WebServiceTemplateCustomizerConfig
.
class
)
WebServiceTemplate
webServiceTemplate
=
this
.
context
.
run
(
assertWebServiceTemplateBuilder
((
builder
)
->
{
.
getBean
(
WebServiceTemplate
.
class
);
WebServiceTemplate
webServiceTemplate
=
builder
.
build
();
assertThat
(
webServiceTemplate
.
getUnmarshaller
()).
isNotNull
();
assertThat
(
webServiceTemplate
.
getUnmarshaller
())
.
isSameAs
(
WebServiceTemplateCustomizerConfig
.
unmarshaller
);
}));
}
}
@Test
@Test
public
void
builderShouldBeFreshForEachUse
()
{
public
void
builderShouldBeFreshForEachUse
()
{
load
(
DirtyWebServiceTemplateConfig
.
class
);
this
.
contextRunner
.
withUserConfiguration
(
DirtyWebServiceTemplateConfig
.
class
)
.
run
((
context
)
->
{
assertThat
(
context
).
hasNotFailed
();
});
}
}
private
void
load
(
Class
<?>...
config
)
{
private
ContextConsumer
<
AssertableApplicationContext
>
assertWebServiceTemplateBuilder
(
AnnotationConfigApplicationContext
ctx
=
new
AnnotationConfigApplicationContext
();
Consumer
<
WebServiceTemplateBuilder
>
builder
)
{
ctx
.
register
(
config
);
return
(
context
)
->
{
ctx
.
register
(
WebServiceTemplateAutoConfiguration
.
class
);
assertThat
(
context
).
hasSingleBean
(
WebServiceTemplateBuilder
.
class
);
ctx
.
refresh
();
builder
.
accept
(
context
.
getBean
(
WebServiceTemplateBuilder
.
class
));
this
.
context
=
ctx
;
};
}
@Configuration
static
class
WebServiceTemplateConfig
{
@Bean
public
WebServiceTemplate
webServiceTemplate
(
WebServiceTemplateBuilder
builder
)
{
return
builder
.
build
();
}
}
}
@Configuration
@Configuration
...
@@ -120,7 +132,7 @@ public class WebServiceTemplateAutoConfigurationTests {
...
@@ -120,7 +132,7 @@ public class WebServiceTemplateAutoConfigurationTests {
}
}
private
void
breakBuilderOnNextCall
(
WebServiceTemplateBuilder
builder
)
{
private
void
breakBuilderOnNextCall
(
WebServiceTemplateBuilder
builder
)
{
builder
.
addCustomizers
((
webServiceTemplate
)
->
{
builder
.
add
itional
Customizers
((
webServiceTemplate
)
->
{
throw
new
IllegalStateException
();
throw
new
IllegalStateException
();
});
});
}
}
...
@@ -130,9 +142,11 @@ public class WebServiceTemplateAutoConfigurationTests {
...
@@ -130,9 +142,11 @@ public class WebServiceTemplateAutoConfigurationTests {
@Configuration
@Configuration
static
class
CustomWebServiceTemplateBuilderConfig
{
static
class
CustomWebServiceTemplateBuilderConfig
{
private
static
final
Marshaller
marshaller
=
new
Jaxb2Marshaller
();
@Bean
@Bean
public
WebServiceTemplateBuilder
webServiceTemplateBuilder
()
{
public
WebServiceTemplateBuilder
webServiceTemplateBuilder
()
{
return
new
WebServiceTemplateBuilder
().
setMarshaller
(
new
Jaxb2Marshaller
()
);
return
new
WebServiceTemplateBuilder
().
setMarshaller
(
marshaller
);
}
}
}
}
...
@@ -140,9 +154,11 @@ public class WebServiceTemplateAutoConfigurationTests {
...
@@ -140,9 +154,11 @@ public class WebServiceTemplateAutoConfigurationTests {
@Configuration
@Configuration
static
class
WebServiceTemplateCustomizerConfig
{
static
class
WebServiceTemplateCustomizerConfig
{
private
static
final
Unmarshaller
unmarshaller
=
new
Jaxb2Marshaller
();
@Bean
@Bean
public
WebServiceTemplateCustomizer
webServiceTemplateCustomizer
()
{
public
WebServiceTemplateCustomizer
webServiceTemplateCustomizer
()
{
return
(
ws
)
->
ws
.
setUnmarshaller
(
new
Jaxb2Marshaller
()
);
return
(
ws
)
->
ws
.
setUnmarshaller
(
unmarshaller
);
}
}
}
}
...
...
spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
8bcea0d8
...
@@ -5634,6 +5634,7 @@ The following code shows a typical example:
...
@@ -5634,6 +5634,7 @@ The following code shows a typical example:
----
----
[[boot-features-webclient-customization]]
[[boot-features-webclient-customization]]
=== WebClient Customization
=== WebClient Customization
There are three main approaches to `WebClient` customization, depending on how broadly you
There are three main approaches to `WebClient` customization, depending on how broadly you
...
@@ -5652,35 +5653,6 @@ the point of injection.
...
@@ -5652,35 +5653,6 @@ the point of injection.
Finally, you can fall back to the original API and use `WebClient.create()`. In that case,
Finally, you can fall back to the original API and use `WebClient.create()`. In that case,
no auto-configuration or `WebClientCustomizer` is applied.
no auto-configuration or `WebClientCustomizer` is applied.
[[boot-features-webservicetemplate]]
== Calling Web Services with `WebServiceTemplate`
If you need to call remote WEB services from your application, you can use the Spring
Framework's {spring-webservices-reference}#client-web-service-template[`WebServiceTemplate`] class. Since
`WebServiceTemplate` instances often need to be customized before being used, Spring Boot does
not provide any single auto-configured `WebServiceTemplate` bean. It does, however,
auto-configure a `WebServiceTemplateBuilder`, which can be used to create `WebServiceTemplate`
instances when needed.
The following code shows a typical example:
[source,java,indent=0]
----
@Service
public class MyService {
private final WebServiceTemplate webServiceTemplate;
public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
this.webServiceTemplate = webServiceTemplateBuilder.build();
}
public DetailsResp someCall(DetailsReq detailsReq) {
return (DetailsResp) this.webServiceTemplate.marshalSendAndReceive(detailsReq, new SoapActionCallback(ACTION));
}
}
----
[[boot-features-validation]]
[[boot-features-validation]]
...
@@ -7416,6 +7388,51 @@ following example:
...
@@ -7416,6 +7388,51 @@ following example:
[[boot-features-webservices-template]]
== Calling Web Services with `WebServiceTemplate`
If you need to call remote Web services from your application, you can use the
{spring-webservices-reference}#client-web-service-template[`WebServiceTemplate`] class.
Since `WebServiceTemplate` instances often need to be customized before being used, Spring
Boot does not provide any single auto-configured `WebServiceTemplate` bean. It does,
however, auto-configure a `WebServiceTemplateBuilder`, which can be used to create
`WebServiceTemplate` instances when needed.
The following code shows a typical example:
[source,java,indent=0]
----
@Service
public class MyService {
private final WebServiceTemplate webServiceTemplate;
public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
this.webServiceTemplate = webServiceTemplateBuilder.build();
}
public DetailsResp someWsCall(DetailsReq detailsReq) {
return (DetailsResp) this.webServiceTemplate.marshalSendAndReceive(detailsReq, new SoapActionCallback(ACTION));
}
}
----
By default, `WebServiceTemplateBuilder` detects a suitable HTTP-based
`WebServiceMessageSender` using the available HTTP client libraries on the classpath. You
can also customize read and connection timeouts as follows:
[source,java,indent=0]
----
@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()
.setReadTimeout(5000).setConnectionTimeout(2000).build()).build();
}
----
[[boot-features-developing-auto-configuration]]
[[boot-features-developing-auto-configuration]]
== Creating Your Own Auto-configuration
== Creating Your Own Auto-configuration
If you work in a company that develops shared libraries, or if you work on an open-source
If you work in a company that develops shared libraries, or if you work on an open-source
...
...
spring-boot-project/spring-boot/pom.xml
View file @
8bcea0d8
...
@@ -245,11 +245,6 @@
...
@@ -245,11 +245,6 @@
<artifactId>
spring-orm
</artifactId>
<artifactId>
spring-orm
</artifactId>
<optional>
true
</optional>
<optional>
true
</optional>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.ws
</groupId>
<artifactId>
spring-ws-core
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-oxm
</artifactId>
<artifactId>
spring-oxm
</artifactId>
...
@@ -280,6 +275,11 @@
...
@@ -280,6 +275,11 @@
<artifactId>
spring-security-web
</artifactId>
<artifactId>
spring-security-web
</artifactId>
<optional>
true
</optional>
<optional>
true
</optional>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.ws
</groupId>
<artifactId>
spring-ws-core
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
<artifactId>
snakeyaml
</artifactId>
...
...
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java
0 → 100644
View file @
8bcea0d8
/*
* Copyright 2012-2018 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
webservices
.
client
;
import
java.lang.reflect.Method
;
import
java.util.function.Supplier
;
import
org.springframework.boot.web.client.ClientHttpRequestFactorySupplier
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.util.Assert
;
import
org.springframework.util.ReflectionUtils
;
import
org.springframework.ws.transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
/**
* {@link WebServiceMessageSender} builder that can detect a suitable HTTP library based
* on the classpath.
*
* @author Stephane Nicoll
* @since 2.1.0
*/
public
class
HttpWebServiceMessageSenderBuilder
{
private
Integer
connectionTimeout
;
private
Integer
readTimeout
;
private
Supplier
<
ClientHttpRequestFactory
>
requestFactorySupplier
;
/**
* Set the connection timeout in milliseconds.
* @param connectionTimeout the connection timeout in milliseconds
* @return a new builder instance
*/
public
HttpWebServiceMessageSenderBuilder
setConnectionTimeout
(
int
connectionTimeout
)
{
this
.
connectionTimeout
=
connectionTimeout
;
return
this
;
}
/**
* Set the read timeout in milliseconds.
* @param readTimeout the read timeout in milliseconds
* @return a new builder instance
*/
public
HttpWebServiceMessageSenderBuilder
setReadTimeout
(
int
readTimeout
)
{
this
.
readTimeout
=
readTimeout
;
return
this
;
}
/**
* Set the {@code Supplier} of {@link ClientHttpRequestFactory} that should be called
* to create the HTTP-based {@link WebServiceMessageSender}.
* @param requestFactorySupplier the supplier for the request factory
* @return a new builder instance
*/
public
HttpWebServiceMessageSenderBuilder
requestFactory
(
Supplier
<
ClientHttpRequestFactory
>
requestFactorySupplier
)
{
Assert
.
notNull
(
requestFactorySupplier
,
"RequestFactory Supplier must not be null"
);
this
.
requestFactorySupplier
=
requestFactorySupplier
;
return
this
;
}
public
WebServiceMessageSender
build
()
{
ClientHttpRequestFactory
requestFactory
=
(
this
.
requestFactorySupplier
!=
null
?
this
.
requestFactorySupplier
.
get
()
:
new
ClientHttpRequestFactorySupplier
().
get
());
if
(
this
.
connectionTimeout
!=
null
)
{
new
TimeoutRequestFactoryCustomizer
(
this
.
connectionTimeout
,
"setConnectTimeout"
).
customize
(
requestFactory
);
}
if
(
this
.
readTimeout
!=
null
)
{
new
TimeoutRequestFactoryCustomizer
(
this
.
readTimeout
,
"setReadTimeout"
)
.
customize
(
requestFactory
);
}
return
new
ClientHttpRequestMessageSender
(
requestFactory
);
}
/**
* {@link ClientHttpRequestFactory} customizer to call a "set timeout" method.
*/
private
static
class
TimeoutRequestFactoryCustomizer
{
private
final
int
timeout
;
private
final
String
methodName
;
TimeoutRequestFactoryCustomizer
(
int
timeout
,
String
methodName
)
{
this
.
timeout
=
timeout
;
this
.
methodName
=
methodName
;
}
public
void
customize
(
ClientHttpRequestFactory
factory
)
{
ReflectionUtils
.
invokeMethod
(
findMethod
(
factory
),
factory
,
this
.
timeout
);
}
private
Method
findMethod
(
ClientHttpRequestFactory
factory
)
{
Method
method
=
ReflectionUtils
.
findMethod
(
factory
.
getClass
(),
this
.
methodName
,
int
.
class
);
if
(
method
!=
null
)
{
return
method
;
}
throw
new
IllegalStateException
(
"Request factory "
+
factory
.
getClass
()
+
" does not have a "
+
this
.
methodName
+
"(int) method"
);
}
}
}
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilder.java
View file @
8bcea0d8
This diff is collapsed.
Click to expand it.
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateCustomizer.java
View file @
8bcea0d8
...
@@ -22,6 +22,7 @@ import org.springframework.ws.client.core.WebServiceTemplate;
...
@@ -22,6 +22,7 @@ import org.springframework.ws.client.core.WebServiceTemplate;
* Callback interface that can be used to customize a {@link WebServiceTemplate}.
* Callback interface that can be used to customize a {@link WebServiceTemplate}.
*
*
* @author Dmytro Nosan
* @author Dmytro Nosan
* @since 2.1.0
*/
*/
public
interface
WebServiceTemplateCustomizer
{
public
interface
WebServiceTemplateCustomizer
{
...
...
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/package-info.java
View file @
8bcea0d8
...
@@ -17,5 +17,4 @@
...
@@ -17,5 +17,4 @@
/**
/**
* Web Services client utilities.
* Web Services client utilities.
*/
*/
package
org
.
springframework
.
boot
.
webservices
.
client
;
package
org
.
springframework
.
boot
.
webservices
.
client
;
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
WebServiceTemplateBuilderOkHttp3ClientHttpRequestFactory
Tests.java
→
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
HttpWebServiceMessageSenderBuilderOkHttp3Integration
Tests.java
View file @
8bcea0d8
...
@@ -22,61 +22,52 @@ import org.junit.runner.RunWith;
...
@@ -22,61 +22,52 @@ import org.junit.runner.RunWith;
import
org.springframework.boot.testsupport.runner.classpath.ClassPathExclusions
;
import
org.springframework.boot.testsupport.runner.classpath.ClassPathExclusions
;
import
org.springframework.boot.testsupport.runner.classpath.ModifiedClassPathRunner
;
import
org.springframework.boot.testsupport.runner.classpath.ModifiedClassPathRunner
;
import
org.springframework.http.client.
Buffering
ClientHttpRequestFactory
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.OkHttp3ClientHttpRequestFactory
;
import
org.springframework.http.client.OkHttp3ClientHttpRequestFactory
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.ws.
client.core.WebServiceTemplate
;
import
org.springframework.ws.
transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
/**
* Tests for {@link WebServiceTemplateBuilder}. This test class check that builder will
* Tests for {@link HttpWebServiceMessageSenderBuilder} when Http Components is not
* create ClientHttpRequestMessageSender (OkHttp3ClientHttpRequestFactory) if apache
* available.
* client is not present in the classpath
*
*
* @author
Dmytro Nosan
* @author
Stephane Nicoll
*/
*/
@RunWith
(
ModifiedClassPathRunner
.
class
)
@RunWith
(
ModifiedClassPathRunner
.
class
)
@ClassPathExclusions
(
"httpclient-*.jar"
)
@ClassPathExclusions
(
"httpclient-*.jar"
)
public
class
WebServiceTemplateBuilderOkHttp3ClientHttpRequestFactory
Tests
{
public
class
HttpWebServiceMessageSenderBuilderOkHttp3Integration
Tests
{
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplate
Builder
();
private
final
HttpWebServiceMessageSenderBuilder
builder
=
new
HttpWebServiceMessageSender
Builder
();
@Test
@Test
public
void
build
()
{
public
void
buildUseOkHttp3ByDefault
()
{
WebServiceMessageSender
messageSender
=
this
.
builder
.
build
();
WebServiceTemplate
webServiceTemplate
=
this
.
builder
.
build
();
assertOkHttp3RequestFactory
(
messageSender
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()).
hasSize
(
1
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()[
0
])
.
isInstanceOf
(
ClientHttpRequestMessageSender
.
class
);
ClientHttpRequestMessageSender
sender
=
(
ClientHttpRequestMessageSender
)
webServiceTemplate
.
getMessageSenders
()[
0
];
assertThat
(
sender
.
getRequestFactory
())
.
isInstanceOf
(
OkHttp3ClientHttpRequestFactory
.
class
);
}
}
@Test
@Test
public
void
setTimeout
()
{
public
void
buildWithCustomTimeouts
()
{
OkHttp3ClientHttpRequestFactory
factory
=
new
OkHttp3ClientHttpRequestFactory
();
WebServiceMessageSender
messageSender
=
this
.
builder
.
setConnectionTimeout
(
5000
)
ClientHttpRequestMessageSender
sender
=
new
ClientHttpRequestMessageSender
(
.
setReadTimeout
(
2000
).
build
();
new
BufferingClientHttpRequestFactory
(
factory
));
OkHttp3ClientHttpRequestFactory
factory
=
assertOkHttp3RequestFactory
(
messageSender
);
this
.
builder
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
)
.
setWebServiceMessageSender
(()
->
sender
).
build
();
OkHttpClient
client
=
(
OkHttpClient
)
ReflectionTestUtils
.
getField
(
factory
,
OkHttpClient
client
=
(
OkHttpClient
)
ReflectionTestUtils
.
getField
(
factory
,
"client"
);
"client"
);
assertThat
(
client
).
isNotNull
();
assertThat
(
client
).
isNotNull
();
assertThat
(
client
.
connectTimeoutMillis
()).
isEqualTo
(
5000
);
assertThat
(
client
.
connectTimeoutMillis
()).
isEqualTo
(
5000
);
assertThat
(
client
.
readTimeoutMillis
()).
isEqualTo
(
2000
);
assertThat
(
client
.
readTimeoutMillis
()).
isEqualTo
(
2000
);
}
private
OkHttp3ClientHttpRequestFactory
assertOkHttp3RequestFactory
(
WebServiceMessageSender
messageSender
)
{
assertThat
(
messageSender
).
isInstanceOf
(
ClientHttpRequestMessageSender
.
class
);
ClientHttpRequestMessageSender
sender
=
(
ClientHttpRequestMessageSender
)
messageSender
;
ClientHttpRequestFactory
requestFactory
=
sender
.
getRequestFactory
();
assertThat
(
requestFactory
).
isInstanceOf
(
OkHttp3ClientHttpRequestFactory
.
class
);
return
(
OkHttp3ClientHttpRequestFactory
)
requestFactory
;
}
}
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
WebServiceTemplateBuilderHttpUrlConnectionMessageSender
Tests.java
→
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
HttpWebServiceMessageSenderBuilderSimpleIntegration
Tests.java
View file @
8bcea0d8
...
@@ -16,55 +16,56 @@
...
@@ -16,55 +16,56 @@
package
org
.
springframework
.
boot
.
webservices
.
client
;
package
org
.
springframework
.
boot
.
webservices
.
client
;
import
java.time.Duration
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.testsupport.runner.classpath.ClassPathExclusions
;
import
org.springframework.boot.testsupport.runner.classpath.ClassPathExclusions
;
import
org.springframework.boot.testsupport.runner.classpath.ModifiedClassPathRunner
;
import
org.springframework.boot.testsupport.runner.classpath.ModifiedClassPathRunner
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.SimpleClientHttpRequestFactory
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.ws.
client.core.WebServiceTemplate
;
import
org.springframework.ws.
transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.
HttpUrlConnection
MessageSender
;
import
org.springframework.ws.transport.http.
ClientHttpRequest
MessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
/**
* Tests for {@link WebServiceTemplateBuilder}. This test class check that builder will
* Tests for {@link HttpWebServiceMessageSenderBuilder} when no preferred HTTP clients are
* create HttpUrlConnectionMessageSender If Ok-http and Apache client are not present in
* available
* the classpath.
*
*
* @author
Dmytro Nosan
* @author
Stephane Nicoll
*/
*/
@RunWith
(
ModifiedClassPathRunner
.
class
)
@RunWith
(
ModifiedClassPathRunner
.
class
)
@ClassPathExclusions
({
"httpclient-*.jar"
,
"okhttp
-
*.jar"
})
@ClassPathExclusions
({
"httpclient-*.jar"
,
"okhttp*.jar"
})
public
class
WebServiceTemplateBuilderHttpUrlConnectionMessageSender
Tests
{
public
class
HttpWebServiceMessageSenderBuilderSimpleIntegration
Tests
{
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplate
Builder
();
private
final
HttpWebServiceMessageSenderBuilder
builder
=
new
HttpWebServiceMessageSender
Builder
();
@Test
@Test
public
void
build
()
{
public
void
buildUseUseSimpleClientByDefault
()
{
WebServiceTemplate
webServiceTemplate
=
this
.
builder
.
build
();
WebServiceMessageSender
messageSender
=
this
.
builder
.
build
();
assertSimpleClientRequestFactory
(
messageSender
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()).
hasSize
(
1
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()[
0
])
.
isInstanceOf
(
HttpUrlConnectionMessageSender
.
class
);
}
}
@Test
@Test
public
void
setTimeout
()
{
public
void
buildWithCustomTimeouts
()
{
HttpUrlConnectionMessageSender
sender
=
new
HttpUrlConnectionMessageSender
();
WebServiceMessageSender
messageSender
=
this
.
builder
.
setConnectionTimeout
(
5000
)
.
setReadTimeout
(
2000
).
build
();
this
.
builder
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
)
SimpleClientHttpRequestFactory
requestFactory
=
assertSimpleClientRequestFactory
(
.
setWebServiceMessageSender
(()
->
sender
).
build
(
);
messageSender
);
assertThat
(
ReflectionTestUtils
.
getField
(
requestFactory
,
"connectTimeout"
))
assertThat
(
ReflectionTestUtils
.
getField
(
sender
,
"connectionTimeout"
))
.
isEqualTo
(
5000
);
.
isEqualTo
(
Duration
.
ofMillis
(
5000
));
assertThat
(
ReflectionTestUtils
.
getField
(
requestFactory
,
"readTimeout"
))
assertThat
(
ReflectionTestUtils
.
getField
(
sender
,
"readTimeout"
))
.
isEqualTo
(
2000
);
.
isEqualTo
(
Duration
.
ofMillis
(
2000
));
}
private
SimpleClientHttpRequestFactory
assertSimpleClientRequestFactory
(
WebServiceMessageSender
messageSender
)
{
assertThat
(
messageSender
).
isInstanceOf
(
ClientHttpRequestMessageSender
.
class
);
ClientHttpRequestMessageSender
sender
=
(
ClientHttpRequestMessageSender
)
messageSender
;
ClientHttpRequestFactory
requestFactory
=
sender
.
getRequestFactory
();
assertThat
(
requestFactory
).
isInstanceOf
(
SimpleClientHttpRequestFactory
.
class
);
return
(
SimpleClientHttpRequestFactory
)
requestFactory
;
}
}
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
WebServiceTemplateBuilderHttpComponentsClientHttpRequestFactory
Tests.java
→
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/
HttpWebServiceMessageSenderBuilder
Tests.java
View file @
8bcea0d8
...
@@ -19,37 +19,66 @@ package org.springframework.boot.webservices.client;
...
@@ -19,37 +19,66 @@ package org.springframework.boot.webservices.client;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.config.RequestConfig
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.http.client.
Buffering
ClientHttpRequestFactory
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.http.client.SimpleClientHttpRequestFactory
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.ws.transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
mockito
.
Mockito
.
mock
;
/**
/**
* Tests for {@link
WebServiceTemplate
Builder}.
* Tests for {@link
HttpWebServiceMessageSender
Builder}.
*
*
* @author
Dmytro Nosan
* @author
Stephane Nicoll
*/
*/
public
class
WebServiceTemplateBuilderHttpComponentsClientHttpRequestFactoryTests
{
public
class
HttpWebServiceMessageSenderBuilderTests
{
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplateBuilder
();
@Test
@Test
public
void
setTimeout
()
{
public
void
buildWithRequestFactorySupplier
()
{
HttpComponentsClientHttpRequestFactory
factory
=
new
HttpComponentsClientHttpRequestFactory
();
ClientHttpRequestFactory
requestFactory
=
mock
(
ClientHttpRequestFactory
.
class
);
ClientHttpRequestMessageSender
sender
=
new
ClientHttpRequestMessageSender
(
ClientHttpRequestMessageSender
messageSender
=
build
(
new
BufferingClientHttpRequestFactory
(
factory
));
new
HttpWebServiceMessageSenderBuilder
()
.
requestFactory
(()
->
requestFactory
));
assertThat
(
messageSender
.
getRequestFactory
()).
isSameAs
(
requestFactory
);
}
this
.
builder
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
)
@Test
.
setWebServiceMessageSender
(()
->
sender
).
build
();
public
void
buildWithReadAndConnectTimeout
()
{
ClientHttpRequestMessageSender
messageSender
=
build
(
new
HttpWebServiceMessageSenderBuilder
()
.
requestFactory
(
SimpleClientHttpRequestFactory:
:
new
)
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
));
SimpleClientHttpRequestFactory
requestFactory
=
(
SimpleClientHttpRequestFactory
)
messageSender
.
getRequestFactory
();
assertThat
(
ReflectionTestUtils
.
getField
(
requestFactory
,
"connectTimeout"
))
.
isEqualTo
(
5000
);
assertThat
(
ReflectionTestUtils
.
getField
(
requestFactory
,
"readTimeout"
))
.
isEqualTo
(
2000
);
}
@Test
public
void
buildUsesHttpComponentsBydefault
()
{
ClientHttpRequestMessageSender
messageSender
=
build
(
new
HttpWebServiceMessageSenderBuilder
().
setConnectionTimeout
(
5000
)
.
setReadTimeout
(
2000
));
ClientHttpRequestFactory
requestFactory
=
messageSender
.
getRequestFactory
();
assertThat
(
requestFactory
)
.
isInstanceOf
(
HttpComponentsClientHttpRequestFactory
.
class
);
RequestConfig
requestConfig
=
(
RequestConfig
)
ReflectionTestUtils
RequestConfig
requestConfig
=
(
RequestConfig
)
ReflectionTestUtils
.
getField
(
f
actory
,
"requestConfig"
);
.
getField
(
requestF
actory
,
"requestConfig"
);
assertThat
(
requestConfig
).
isNotNull
();
assertThat
(
requestConfig
).
isNotNull
();
assertThat
(
requestConfig
.
getConnectTimeout
()).
isEqualTo
(
5000
);
assertThat
(
requestConfig
.
getConnectTimeout
()).
isEqualTo
(
5000
);
assertThat
(
requestConfig
.
getSocketTimeout
()).
isEqualTo
(
2000
);
assertThat
(
requestConfig
.
getSocketTimeout
()).
isEqualTo
(
2000
);
}
private
ClientHttpRequestMessageSender
build
(
HttpWebServiceMessageSenderBuilder
builder
)
{
WebServiceMessageSender
messageSender
=
builder
.
build
();
assertThat
(
messageSender
).
isInstanceOf
(
ClientHttpRequestMessageSender
.
class
);
return
((
ClientHttpRequestMessageSender
)
messageSender
);
}
}
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderCustomsMessageSenderTests.java
deleted
100644 → 0
View file @
ef9c1a8e
/*
* Copyright 2012-2018 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
webservices
.
client
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.rules.ExpectedException
;
import
org.mockito.Mockito
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.ws.transport.WebServiceMessageSender
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
/**
* Tests for
* {@link org.springframework.boot.webservices.client.WebServiceTemplateBuilder}.
*
* @author Dmytro Nosan
*/
public
class
WebServiceTemplateBuilderCustomsMessageSenderTests
{
@Rule
public
ExpectedException
thrown
=
ExpectedException
.
none
();
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplateBuilder
();
@Test
public
void
unknownSenderReadTimeout
()
{
this
.
thrown
.
expect
(
IllegalStateException
.
class
);
this
.
thrown
.
expectMessage
(
"with 'readTimeout'. Please use a custom customizer."
);
this
.
thrown
.
expectMessage
(
"There is no way to customize"
);
this
.
builder
.
setReadTimeout
(
3000
).
setWebServiceMessageSender
(
()
->
Mockito
.
mock
(
WebServiceMessageSender
.
class
)).
build
();
}
@Test
public
void
unknownSenderConnectionTimeout
()
{
this
.
thrown
.
expect
(
IllegalStateException
.
class
);
this
.
thrown
.
expectMessage
(
"with 'connectionTimeout'. Please use a custom customizer."
);
this
.
thrown
.
expectMessage
(
"There is no way to customize"
);
this
.
builder
.
setConnectionTimeout
(
3000
).
setWebServiceMessageSender
(
()
->
Mockito
.
mock
(
WebServiceMessageSender
.
class
)).
build
();
}
@Test
public
void
unknownRequestFactoryReadTimeout
()
{
this
.
thrown
.
expect
(
IllegalStateException
.
class
);
this
.
thrown
.
expectMessage
(
"with 'readTimeout'. Please use a custom customizer."
);
this
.
thrown
.
expectMessage
(
"There is no way to customize"
);
this
.
builder
.
setReadTimeout
(
3000
)
.
setWebServiceMessageSender
(()
->
new
ClientHttpRequestMessageSender
(
Mockito
.
mock
(
ClientHttpRequestFactory
.
class
)))
.
build
();
}
@Test
public
void
unknownRequestFactoryConnectionTimeout
()
{
this
.
thrown
.
expect
(
IllegalStateException
.
class
);
this
.
thrown
.
expectMessage
(
"with 'connectionTimeout'. Please use a custom customizer."
);
this
.
thrown
.
expectMessage
(
"There is no way to customize"
);
this
.
builder
.
setConnectionTimeout
(
3000
)
.
setWebServiceMessageSender
(()
->
new
ClientHttpRequestMessageSender
(
Mockito
.
mock
(
ClientHttpRequestFactory
.
class
)))
.
build
();
}
@Test
public
void
shouldBuildWithoutTimeouts
()
{
this
.
builder
.
setWebServiceMessageSender
(
()
->
Mockito
.
mock
(
WebServiceMessageSender
.
class
)).
build
();
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderHttpComponentsMessageSenderTests.java
deleted
100644 → 0
View file @
ef9c1a8e
/*
* Copyright 2012-2018 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
webservices
.
client
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.params.HttpConnectionParams
;
import
org.junit.Test
;
import
org.springframework.ws.client.core.WebServiceTemplate
;
import
org.springframework.ws.transport.http.HttpComponentsMessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for
* {@link org.springframework.boot.webservices.client.WebServiceTemplateBuilder}. This
* test class check that builder will create HttpComponents by default if apache client is
* present in the classpath.
*
* @author Dmytro Nosan
*/
@SuppressWarnings
(
"deprecation"
)
public
class
WebServiceTemplateBuilderHttpComponentsMessageSenderTests
{
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplateBuilder
();
@Test
public
void
build
()
{
WebServiceTemplate
webServiceTemplate
=
new
WebServiceTemplateBuilder
().
build
();
assertThat
(
webServiceTemplate
.
getMessageSenders
()).
hasSize
(
1
);
assertThat
(
webServiceTemplate
.
getMessageSenders
()[
0
])
.
isInstanceOf
(
HttpComponentsMessageSender
.
class
);
}
@Test
public
void
setTimeout
()
{
HttpComponentsMessageSender
sender
=
new
HttpComponentsMessageSender
();
HttpClient
httpClient
=
sender
.
getHttpClient
();
this
.
builder
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
)
.
setWebServiceMessageSender
(()
->
sender
).
build
();
assertThat
(
HttpConnectionParams
.
getConnectionTimeout
(
httpClient
.
getParams
()))
.
isEqualTo
(
5000
);
assertThat
(
HttpConnectionParams
.
getSoTimeout
(
httpClient
.
getParams
()))
.
isEqualTo
(
2000
);
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderSimpleClientHttpRequestFactoryTests.java
deleted
100644 → 0
View file @
ef9c1a8e
/*
* Copyright 2012-2018 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
webservices
.
client
;
import
org.junit.Test
;
import
org.springframework.http.client.BufferingClientHttpRequestFactory
;
import
org.springframework.http.client.SimpleClientHttpRequestFactory
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.ws.transport.http.ClientHttpRequestMessageSender
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link WebServiceTemplateBuilder}.
*
* @author Dmytro Nosan
*/
public
class
WebServiceTemplateBuilderSimpleClientHttpRequestFactoryTests
{
private
WebServiceTemplateBuilder
builder
=
new
WebServiceTemplateBuilder
();
@Test
public
void
setTimeout
()
{
SimpleClientHttpRequestFactory
factory
=
new
SimpleClientHttpRequestFactory
();
ClientHttpRequestMessageSender
sender
=
new
ClientHttpRequestMessageSender
(
new
BufferingClientHttpRequestFactory
(
factory
));
this
.
builder
.
setConnectionTimeout
(
5000
).
setReadTimeout
(
2000
)
.
setWebServiceMessageSender
(()
->
sender
).
build
();
assertThat
(
ReflectionTestUtils
.
getField
(
factory
,
"connectTimeout"
))
.
isEqualTo
(
5000
);
assertThat
(
ReflectionTestUtils
.
getField
(
factory
,
"readTimeout"
)).
isEqualTo
(
2000
);
}
}
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderTests.java
View file @
8bcea0d8
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment