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
ddeae9b5
Commit
ddeae9b5
authored
Sep 03, 2018
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Fix WSDL locations condition to work with a list"
Closes gh-14285
parent
80358f7f
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
155 additions
and
103 deletions
+155
-103
OnListCondition.java
...amework/boot/autoconfigure/condition/OnListCondition.java
+30
-15
OnBootstrapHostsCondition.java
...ot/autoconfigure/couchbase/OnBootstrapHostsCondition.java
+7
-11
OnWsdlLocationsCondition.java
...t/autoconfigure/webservices/OnWsdlLocationsCondition.java
+8
-11
WebServicesAutoConfiguration.java
...toconfigure/webservices/WebServicesAutoConfiguration.java
+0
-1
OnListConditionTests.java
...rk/boot/autoconfigure/condition/OnListConditionTests.java
+86
-0
OnBootstrapHostsConditionTests.java
...toconfigure/couchbase/OnBootstrapHostsConditionTests.java
+9
-36
OnWsdlLocationsConditionTests.java
...oconfigure/webservices/OnWsdlLocationsConditionTests.java
+14
-28
WebServicesAutoConfigurationTests.java
...figure/webservices/WebServicesAutoConfigurationTests.java
+1
-1
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/
Abstract
ListCondition.java
→
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/
On
ListCondition.java
View file @
ddeae9b5
...
...
@@ -17,41 +17,56 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
condition
;
import
java.util.List
;
import
java.util.function.Supplier
;
import
org.springframework.boot.context.properties.bind.BindResult
;
import
org.springframework.boot.context.properties.bind.Bindable
;
import
org.springframework.boot.context.properties.bind.Binder
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.core.type.AnnotatedTypeMetadata
;
/**
* Abstract base class for list conditions.
* {@link Condition} that checks if a property whose value is a list is defined in the
* environment.
*
* @author Eneias Silva
*
* @author Stephane Nicoll
* @since 2.0.5
*/
public
abstract
class
Abstract
ListCondition
extends
SpringBootCondition
{
public
class
On
ListCondition
extends
SpringBootCondition
{
private
static
final
Bindable
<
List
<
String
>>
S
TRING
_LIST
=
Bindable
private
static
final
Bindable
<
List
<
String
>>
S
IMPLE
_LIST
=
Bindable
.
listOf
(
String
.
class
);
private
final
String
propertyName
;
private
final
Supplier
<
ConditionMessage
.
Builder
>
messageBuilder
;
/**
* Create a new instance with the property to check and the message builder to use.
* @param propertyName the name of the property
* @param messageBuilder a message builder supplier that should provide a fresh
* instance on each call
*/
protected
OnListCondition
(
String
propertyName
,
Supplier
<
ConditionMessage
.
Builder
>
messageBuilder
)
{
this
.
propertyName
=
propertyName
;
this
.
messageBuilder
=
messageBuilder
;
}
@Override
public
ConditionOutcome
getMatchOutcome
(
ConditionContext
context
,
AnnotatedTypeMetadata
metadata
)
{
BindResult
<?>
property
=
Binder
.
get
(
context
.
getEnvironment
())
.
bind
(
getPropertyName
(),
STRING_LIST
);
.
bind
(
this
.
propertyName
,
SIMPLE_LIST
);
ConditionMessage
.
Builder
messageBuilder
=
this
.
messageBuilder
.
get
();
if
(
property
.
isBound
())
{
return
ConditionOutcome
.
match
(
ConditionMessage
.
forCondition
(
getClassName
())
.
found
(
"property"
).
items
(
getPropertyName
()
));
return
ConditionOutcome
.
match
(
messageBuilder
.
found
(
"property"
).
items
(
this
.
propertyName
));
}
return
ConditionOutcome
.
noMatch
(
ConditionMessage
.
forCondition
(
getClassName
())
.
didNotFind
(
"property"
).
items
(
getPropertyName
()
));
return
ConditionOutcome
.
noMatch
(
messageBuilder
.
didNotFind
(
"property"
).
items
(
this
.
propertyName
));
}
protected
abstract
String
getPropertyName
();
protected
abstract
String
getClassName
();
}
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/OnBootstrapHostsCondition.java
View file @
ddeae9b5
/*
* Copyright 2012-201
7
the original author or authors.
* Copyright 2012-201
8
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.
...
...
@@ -16,7 +16,8 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
couchbase
;
import
org.springframework.boot.autoconfigure.condition.AbstractListCondition
;
import
org.springframework.boot.autoconfigure.condition.ConditionMessage
;
import
org.springframework.boot.autoconfigure.condition.OnListCondition
;
/**
* Condition to determine if {@code spring.couchbase.bootstrap-hosts} is specified.
...
...
@@ -25,16 +26,11 @@ import org.springframework.boot.autoconfigure.condition.AbstractListCondition;
* @author Madhura Bhave
* @author Eneias Silva
*/
class
OnBootstrapHostsCondition
extends
Abstract
ListCondition
{
class
OnBootstrapHostsCondition
extends
On
ListCondition
{
@Override
protected
String
getPropertyName
()
{
return
"spring.couchbase.bootstrap-hosts"
;
}
@Override
protected
String
getClassName
()
{
return
OnBootstrapHostsCondition
.
class
.
getName
();
OnBootstrapHostsCondition
()
{
super
(
"spring.couchbase.bootstrap-hosts"
,
()
->
ConditionMessage
.
forCondition
(
"Couchbase Bootstrap Hosts"
));
}
}
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/webservices/OnWsdlLocationsCondition.java
View file @
ddeae9b5
/*
* Copyright 2012-201
7
the original author or authors.
* Copyright 2012-201
8
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.
...
...
@@ -16,23 +16,20 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
webservices
;
import
org.springframework.boot.autoconfigure.condition.AbstractListCondition
;
import
org.springframework.boot.autoconfigure.condition.ConditionMessage
;
import
org.springframework.boot.autoconfigure.condition.OnListCondition
;
/**
* Condition to determine if {@code spring.webservices.wsdl-locations} is specified.
*
* @author Eneias Silva
* @author Stephane Nicoll
*/
class
OnWsdlLocationsCondition
extends
Abstract
ListCondition
{
class
OnWsdlLocationsCondition
extends
On
ListCondition
{
@Override
protected
String
getPropertyName
()
{
return
"spring.webservices.wsdl-locations"
;
}
@Override
protected
String
getClassName
()
{
return
OnWsdlLocationsCondition
.
class
.
getName
();
OnWsdlLocationsCondition
()
{
super
(
"spring.webservices.wsdl-locations"
,
()
->
ConditionMessage
.
forCondition
(
"WSDL locations"
));
}
}
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/webservices/WebServicesAutoConfiguration.java
View file @
ddeae9b5
...
...
@@ -55,7 +55,6 @@ import org.springframework.xml.xsd.SimpleXsdSchema;
*
* @author Vedran Pavic
* @author Stephane Nicoll
* @author Eneias Silva
* @since 1.4.0
*/
@Configuration
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/OnListConditionTests.java
0 → 100644
View file @
ddeae9b5
/*
* 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
.
autoconfigure
.
condition
;
import
org.junit.Test
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link OnListCondition}.
*
* @author Stephane Nicoll
*/
public
class
OnListConditionTests
{
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withUserConfiguration
(
TestConfig
.
class
);
@Test
public
void
propertyNotDefined
()
{
this
.
contextRunner
.
run
((
context
)
->
assertThat
(
context
).
doesNotHaveBean
(
"foo"
));
}
@Test
public
void
propertyDefinedAsCommaSeparated
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.test.my-list=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Test
public
void
propertyDefinedAsList
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.test.my-list[0]=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Test
public
void
propertyDefinedAsCommaSeparatedRelaxed
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.test.my-list=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Test
public
void
propertyDefinedAsListRelaxed
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.test.myList[0]=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Configuration
@Conditional
(
TestListCondition
.
class
)
protected
static
class
TestConfig
{
@Bean
public
String
foo
()
{
return
"foo"
;
}
}
static
class
TestListCondition
extends
OnListCondition
{
TestListCondition
()
{
super
(
"spring.test.my-list"
,
()
->
ConditionMessage
.
forCondition
(
"test"
));
}
}
}
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/couchbase/OnBootstrapHostsConditionTests.java
View file @
ddeae9b5
...
...
@@ -16,11 +16,9 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
couchbase
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.springframework.boot.test.util.TestPropertyValues
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -34,50 +32,25 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public
class
OnBootstrapHostsConditionTests
{
private
AnnotationConfigApplicationContext
context
;
@After
public
void
tearDown
()
{
if
(
this
.
context
!=
null
)
{
this
.
context
.
close
();
}
}
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withUserConfiguration
(
TestConfig
.
class
);
@Test
public
void
bootstrapHostsNotDefined
()
{
load
(
TestConfig
.
class
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isFalse
();
this
.
contextRunner
.
run
((
context
)
->
assertThat
(
context
).
doesNotHaveBean
(
"foo"
));
}
@Test
public
void
bootstrapHostsDefinedAsCommaSeparated
()
{
load
(
TestConfig
.
class
,
"spring.couchbase.bootstrap-hosts=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
(
);
this
.
contextRunner
.
withPropertyValues
(
"spring.couchbase.bootstrap-hosts=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
)
);
}
@Test
public
void
bootstrapHostsDefinedAsList
()
{
load
(
TestConfig
.
class
,
"spring.couchbase.bootstrap-hosts[0]=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
();
}
@Test
public
void
bootstrapHostsDefinedAsCommaSeparatedRelaxed
()
{
load
(
TestConfig
.
class
,
"spring.couchbase.bootstrapHosts=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
();
}
@Test
public
void
bootstrapHostsDefinedAsListRelaxed
()
{
load
(
TestConfig
.
class
,
"spring.couchbase.bootstrapHosts[0]=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
();
}
private
void
load
(
Class
<?>
config
,
String
...
environment
)
{
this
.
context
=
new
AnnotationConfigApplicationContext
();
TestPropertyValues
.
of
(
environment
).
applyTo
(
this
.
context
);
this
.
context
.
register
(
config
);
this
.
context
.
refresh
();
this
.
contextRunner
.
withPropertyValues
(
"spring.couchbase.bootstrap-hosts[0]=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Configuration
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/webservices/OnWsdlLocationsConditionTests.java
View file @
ddeae9b5
/*
* Copyright 2012-201
7
the original author or authors.
* Copyright 2012-201
8
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.
...
...
@@ -16,11 +16,9 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
webservices
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.springframework.boot.test.util.TestPropertyValues
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -31,41 +29,29 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link OnWsdlLocationsCondition}.
*
* @author Eneias Silva
* @author Stephane Nicoll
*/
public
class
OnWsdlLocationsConditionTests
{
private
AnnotationConfigApplicationContext
context
;
@After
public
void
tearDown
()
{
if
(
this
.
context
!=
null
)
{
this
.
context
.
close
();
}
}
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withUserConfiguration
(
TestConfig
.
class
);
@Test
public
void
wsdlLocationsNotDefined
()
{
load
(
TestConfig
.
class
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isFalse
();
public
void
bootstrapHostsNotDefined
()
{
this
.
contextRunner
.
run
((
context
)
->
assertThat
(
context
).
doesNotHaveBean
(
"foo"
));
}
@Test
public
void
wsdlLocation
sDefinedAsCommaSeparated
()
{
load
(
TestConfig
.
class
,
"spring.webservices.wsdl-locations=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
(
);
public
void
bootstrapHost
sDefinedAsCommaSeparated
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.webservices.wsdl-locations=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
)
);
}
@Test
public
void
wsdlLocationsDefinedAsList
()
{
load
(
TestConfig
.
class
,
"spring.webservices.wsdl-locations[0]=value1"
);
assertThat
(
this
.
context
.
containsBean
(
"foo"
)).
isTrue
();
}
private
void
load
(
Class
<?>
config
,
String
...
environment
)
{
this
.
context
=
new
AnnotationConfigApplicationContext
();
TestPropertyValues
.
of
(
environment
).
applyTo
(
this
.
context
);
this
.
context
.
register
(
config
);
this
.
context
.
refresh
();
public
void
bootstrapHostsDefinedAsList
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.webservices.wsdl-locations[0]=value1"
)
.
run
((
context
)
->
assertThat
(
context
).
hasBean
(
"foo"
));
}
@Configuration
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/webservices/WebServicesAutoConfigurationTests.java
View file @
ddeae9b5
/*
* Copyright 2012-201
7
the original author or authors.
* Copyright 2012-201
8
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.
...
...
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