mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Merge branch '1.4.x' into 1.5.x
This commit is contained in:
commit
f2b0fa284e
@ -183,14 +183,15 @@ public class EndpointWebMvcManagementContextConfiguration {
|
||||
AnnotatedTypeMetadata metadata) {
|
||||
Environment environment = context.getEnvironment();
|
||||
String config = environment.resolvePlaceholders("${logging.file:}");
|
||||
ConditionMessage.Builder message = ConditionMessage
|
||||
.forCondition("Log File");
|
||||
ConditionMessage.Builder message = ConditionMessage.forCondition("Log File");
|
||||
if (StringUtils.hasText(config)) {
|
||||
return ConditionOutcome.match(message.found("logging.file").items(config));
|
||||
return ConditionOutcome
|
||||
.match(message.found("logging.file").items(config));
|
||||
}
|
||||
config = environment.resolvePlaceholders("${logging.path:}");
|
||||
if (StringUtils.hasText(config)) {
|
||||
return ConditionOutcome.match(message.found("logging.path").items(config));
|
||||
return ConditionOutcome
|
||||
.match(message.found("logging.path").items(config));
|
||||
}
|
||||
config = new RelaxedPropertyResolver(environment, "endpoints.logfile.")
|
||||
.getProperty("external-file");
|
||||
|
@ -98,7 +98,8 @@ import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||
MongoDataAutoConfiguration.class, RabbitAutoConfiguration.class,
|
||||
RedisAutoConfiguration.class, SolrAutoConfiguration.class })
|
||||
@EnableConfigurationProperties({ HealthIndicatorProperties.class })
|
||||
@Import({ ElasticsearchHealthIndicatorConfiguration.ElasticsearchClientHealthIndicatorConfiguration.class,
|
||||
@Import({
|
||||
ElasticsearchHealthIndicatorConfiguration.ElasticsearchClientHealthIndicatorConfiguration.class,
|
||||
ElasticsearchHealthIndicatorConfiguration.ElasticsearchJestHealthIndicatorConfiguration.class })
|
||||
public class HealthIndicatorAutoConfiguration {
|
||||
|
||||
|
@ -34,7 +34,6 @@ public class InfoContributorProperties {
|
||||
return this.git;
|
||||
}
|
||||
|
||||
|
||||
public static class Git {
|
||||
|
||||
/**
|
||||
|
@ -98,8 +98,7 @@ public class JolokiaAutoConfiguration {
|
||||
public ConditionOutcome getMatchOutcome(ConditionContext context,
|
||||
AnnotatedTypeMetadata metadata) {
|
||||
boolean endpointsEnabled = isEnabled(context, "endpoints.", true);
|
||||
ConditionMessage.Builder message = ConditionMessage
|
||||
.forCondition("Jolokia");
|
||||
ConditionMessage.Builder message = ConditionMessage.forCondition("Jolokia");
|
||||
if (isEnabled(context, "endpoints.jolokia.", endpointsEnabled)) {
|
||||
return ConditionOutcome.match(message.because("enabled"));
|
||||
}
|
||||
|
@ -17,8 +17,7 @@
|
||||
package org.springframework.boot.actuate.autoconfigure;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
@ -179,7 +178,7 @@ public class ManagementServerProperties implements SecurityPrerequisite {
|
||||
/**
|
||||
* Comma-separated list of roles that can access the management endpoint.
|
||||
*/
|
||||
private List<String> roles = new ArrayList<String>(Collections.singletonList("ADMIN"));
|
||||
private List<String> roles = Arrays.asList("ADMIN");
|
||||
|
||||
/**
|
||||
* Session creating policy to use (always, never, if_required, stateless).
|
||||
|
@ -398,9 +398,9 @@ public class HealthIndicatorAutoConfigurationTests {
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"spring.data.elasticsearch.properties.path.home:target",
|
||||
"management.health.diskspace.enabled:false");
|
||||
this.context.register(JestClientConfiguration.class,
|
||||
JestAutoConfiguration.class, ElasticsearchAutoConfiguration.class,
|
||||
ManagementServerProperties.class, HealthIndicatorAutoConfiguration.class);
|
||||
this.context.register(JestClientConfiguration.class, JestAutoConfiguration.class,
|
||||
ElasticsearchAutoConfiguration.class, ManagementServerProperties.class,
|
||||
HealthIndicatorAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
|
||||
Map<String, HealthIndicator> beans = this.context
|
||||
@ -414,9 +414,8 @@ public class HealthIndicatorAutoConfigurationTests {
|
||||
public void elasticsearchJestHealthIndicator() {
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"management.health.diskspace.enabled:false");
|
||||
this.context.register(JestClientConfiguration.class,
|
||||
JestAutoConfiguration.class, ManagementServerProperties.class,
|
||||
HealthIndicatorAutoConfiguration.class);
|
||||
this.context.register(JestClientConfiguration.class, JestAutoConfiguration.class,
|
||||
ManagementServerProperties.class, HealthIndicatorAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
|
||||
Map<String, HealthIndicator> beans = this.context
|
||||
@ -432,9 +431,9 @@ public class HealthIndicatorAutoConfigurationTests {
|
||||
"management.health.elasticsearch.enabled:false",
|
||||
"spring.data.elasticsearch.properties.path.home:target",
|
||||
"management.health.diskspace.enabled:false");
|
||||
this.context.register(JestClientConfiguration.class,
|
||||
JestAutoConfiguration.class, ElasticsearchAutoConfiguration.class,
|
||||
ManagementServerProperties.class, HealthIndicatorAutoConfiguration.class);
|
||||
this.context.register(JestClientConfiguration.class, JestAutoConfiguration.class,
|
||||
ElasticsearchAutoConfiguration.class, ManagementServerProperties.class,
|
||||
HealthIndicatorAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
|
||||
Map<String, HealthIndicator> beans = this.context
|
||||
|
@ -82,8 +82,7 @@ public class ManagementServerPropertiesAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
public void managementRolesAllowsIndexedAccess() {
|
||||
ManagementServerProperties properties = load(
|
||||
"management.security.roles[0]=FOO");
|
||||
ManagementServerProperties properties = load("management.security.roles[0]=FOO");
|
||||
assertThat(properties.getSecurity().getRoles()).containsOnly("FOO");
|
||||
}
|
||||
|
||||
|
@ -73,8 +73,8 @@ public class AuthorizationAuditListenerTests {
|
||||
@Test
|
||||
public void testDetailsAreIncludedInAuditEvent() throws Exception {
|
||||
Object details = new Object();
|
||||
UsernamePasswordAuthenticationToken authentication =
|
||||
new UsernamePasswordAuthenticationToken("user", "password");
|
||||
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
|
||||
"user", "password");
|
||||
authentication.setDetails(details);
|
||||
this.listener.onApplicationEvent(new AuthorizationFailureEvent(this,
|
||||
Arrays.<ConfigAttribute>asList(new SecurityConfig("USER")),
|
||||
|
@ -178,8 +178,7 @@ class JCacheCacheConfiguration {
|
||||
@Override
|
||||
public ConditionOutcome getMatchOutcome(ConditionContext context,
|
||||
AnnotatedTypeMetadata metadata) {
|
||||
ConditionMessage.Builder message = ConditionMessage
|
||||
.forCondition("JCache");
|
||||
ConditionMessage.Builder message = ConditionMessage.forCondition("JCache");
|
||||
RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
|
||||
context.getEnvironment(), "spring.cache.jcache.");
|
||||
if (resolver.containsProperty("provider")) {
|
||||
|
@ -375,8 +375,8 @@ public final class ConditionMessage {
|
||||
|
||||
/**
|
||||
* Indicate the items with a {@link Style}. For example
|
||||
* {@code didNotFind("bean", "beans").items(Style.QUOTE, Collections.singleton("x")} results in
|
||||
* the message "did not find bean 'x'".
|
||||
* {@code didNotFind("bean", "beans").items(Style.QUOTE, Collections.singleton("x")}
|
||||
* results in the message "did not find bean 'x'".
|
||||
* @param style the render style
|
||||
* @param items the source of the items (may be {@code null})
|
||||
* @return a built {@link ConditionMessage}
|
||||
|
@ -24,8 +24,8 @@ import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapt
|
||||
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
||||
|
||||
/**
|
||||
* A {@code RepositoryRestConfigurer} that applies configuration items from
|
||||
* the {@code spring.data.rest} namespace to Spring Data REST. Also, if a
|
||||
* A {@code RepositoryRestConfigurer} that applies configuration items from the
|
||||
* {@code spring.data.rest} namespace to Spring Data REST. Also, if a
|
||||
* {@link Jackson2ObjectMapperBuilder} is available, it is used to configure Spring Data
|
||||
* REST's {@link ObjectMapper ObjectMappers}.
|
||||
*
|
||||
|
@ -16,8 +16,7 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.elasticsearch.jest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
@ -34,8 +33,7 @@ public class JestProperties {
|
||||
/**
|
||||
* Comma-separated list of the Elasticsearch instances to use.
|
||||
*/
|
||||
private List<String> uris = new ArrayList<String>(Collections.singletonList(
|
||||
"http://localhost:9200"));
|
||||
private List<String> uris = Arrays.asList("http://localhost:9200");
|
||||
|
||||
/**
|
||||
* Login user.
|
||||
|
@ -108,7 +108,8 @@ public class ProjectInfoAutoConfiguration {
|
||||
ConditionMessage.Builder message = ConditionMessage
|
||||
.forCondition("GitResource");
|
||||
if (loader.getResource(location).exists()) {
|
||||
return ConditionOutcome.match(message.found("git info at").items(location));
|
||||
return ConditionOutcome
|
||||
.match(message.found("git info at").items(location));
|
||||
}
|
||||
return ConditionOutcome
|
||||
.noMatch(message.didNotFind("git info at").items(location));
|
||||
|
@ -232,8 +232,8 @@ public class DataSourceAutoConfiguration {
|
||||
}
|
||||
if (anyMatches(context, metadata, this.pooledCondition,
|
||||
this.embeddedCondition)) {
|
||||
return ConditionOutcome
|
||||
.match(message.foundExactly("existing auto-configured data source bean"));
|
||||
return ConditionOutcome.match(message
|
||||
.foundExactly("existing auto-configured data source bean"));
|
||||
}
|
||||
return ConditionOutcome
|
||||
.noMatch(message.didNotFind("any existing data source bean").atAll());
|
||||
|
@ -132,8 +132,8 @@ public class OAuth2ResourceServerConfiguration {
|
||||
if (ClassUtils.isPresent(AUTHORIZATION_ANNOTATION, null)) {
|
||||
if (AuthorizationServerEndpointsConfigurationBeanCondition
|
||||
.matches(context)) {
|
||||
return ConditionOutcome
|
||||
.match(message.found("class").items(AUTHORIZATION_ANNOTATION));
|
||||
return ConditionOutcome.match(
|
||||
message.found("class").items(AUTHORIZATION_ANNOTATION));
|
||||
}
|
||||
}
|
||||
return ConditionOutcome.noMatch(
|
||||
|
@ -58,8 +58,8 @@ class SessionCondition extends SpringBootCondition {
|
||||
return ConditionOutcome.match(message
|
||||
.found("spring.session.store-type property").items(sessionStoreType));
|
||||
}
|
||||
return ConditionOutcome
|
||||
.noMatch(message.found("spring.session.store-type property").items(value));
|
||||
return ConditionOutcome.noMatch(
|
||||
message.found("spring.session.store-type property").items(value));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -50,8 +50,7 @@ class OnEnabledResourceChainCondition extends SpringBootCondition {
|
||||
ConditionMessage.Builder message = ConditionMessage
|
||||
.forCondition(ConditionalOnEnabledResourceChain.class);
|
||||
if (match == null) {
|
||||
if (ClassUtils.isPresent(WEBJAR_ASSET_LOCATOR,
|
||||
getClass().getClassLoader())) {
|
||||
if (ClassUtils.isPresent(WEBJAR_ASSET_LOCATOR, getClass().getClassLoader())) {
|
||||
return ConditionOutcome
|
||||
.match(message.found("class").items(WEBJAR_ASSET_LOCATOR));
|
||||
}
|
||||
|
@ -92,8 +92,9 @@ public class BatchAutoConfigurationTests {
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
||||
assertThat(this.context.getBean(JobExplorer.class)).isNotNull();
|
||||
assertThat(this.context.getBean(BatchProperties.class)
|
||||
.getInitializer().isEnabled()).isTrue();
|
||||
assertThat(
|
||||
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
||||
.isTrue();
|
||||
assertThat(new JdbcTemplate(this.context.getBean(DataSource.class))
|
||||
.queryForList("select * from BATCH_JOB_EXECUTION")).isEmpty();
|
||||
}
|
||||
@ -193,8 +194,9 @@ public class BatchAutoConfigurationTests {
|
||||
PropertyPlaceholderAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
||||
assertThat(this.context.getBean(BatchProperties.class)
|
||||
.getInitializer().isEnabled()).isFalse();
|
||||
assertThat(
|
||||
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
||||
.isFalse();
|
||||
this.expected.expect(BadSqlGrammarException.class);
|
||||
new JdbcTemplate(this.context.getBean(DataSource.class))
|
||||
.queryForList("select * from BATCH_JOB_EXECUTION");
|
||||
@ -233,8 +235,9 @@ public class BatchAutoConfigurationTests {
|
||||
PropertyPlaceholderAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
||||
assertThat(this.context.getBean(BatchProperties.class)
|
||||
.getInitializer().isEnabled()).isTrue();
|
||||
assertThat(
|
||||
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
||||
.isTrue();
|
||||
assertThat(new JdbcTemplate(this.context.getBean(DataSource.class))
|
||||
.queryForList("select * from PREFIX_JOB_EXECUTION")).isEmpty();
|
||||
JobExplorer jobExplorer = this.context.getBean(JobExplorer.class);
|
||||
@ -245,19 +248,20 @@ public class BatchAutoConfigurationTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCustomTablePrefixWithDefaultSchemaDisablesInitializer() throws Exception {
|
||||
public void testCustomTablePrefixWithDefaultSchemaDisablesInitializer()
|
||||
throws Exception {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"spring.datasource.name:batchtest",
|
||||
"spring.batch.tablePrefix:PREFIX_");
|
||||
"spring.datasource.name:batchtest", "spring.batch.tablePrefix:PREFIX_");
|
||||
this.context.register(TestConfiguration.class,
|
||||
EmbeddedDataSourceConfiguration.class,
|
||||
HibernateJpaAutoConfiguration.class, BatchAutoConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
||||
assertThat(this.context.getBean(BatchProperties.class)
|
||||
.getInitializer().isEnabled()).isFalse();
|
||||
assertThat(
|
||||
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
||||
.isFalse();
|
||||
this.expected.expect(BadSqlGrammarException.class);
|
||||
new JdbcTemplate(this.context.getBean(DataSource.class))
|
||||
.queryForList("select * from BATCH_JOB_EXECUTION");
|
||||
|
@ -107,8 +107,8 @@ public class IntegrationAutoConfigurationTests {
|
||||
public void primaryExporterIsAllowed() {
|
||||
load(CustomMBeanExporter.class);
|
||||
assertThat(this.context.getBeansOfType(MBeanExporter.class)).hasSize(2);
|
||||
assertThat(this.context.getBean(MBeanExporter.class)).isSameAs(
|
||||
this.context.getBean("myMBeanExporter"));
|
||||
assertThat(this.context.getBean(MBeanExporter.class))
|
||||
.isSameAs(this.context.getBean("myMBeanExporter"));
|
||||
}
|
||||
|
||||
private static void assertDomains(MBeanServer mBeanServer, boolean expected,
|
||||
|
@ -54,8 +54,8 @@ public class SessionAutoConfigurationJdbcTests
|
||||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("SPRING_SESSION");
|
||||
assertThat(this.context.getBean(SessionProperties.class)
|
||||
.getJdbc().getInitializer().isEnabled()).isTrue();
|
||||
assertThat(this.context.getBean(SessionProperties.class).getJdbc()
|
||||
.getInitializer().isEnabled()).isTrue();
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
}
|
||||
@ -70,8 +70,8 @@ public class SessionAutoConfigurationJdbcTests
|
||||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("SPRING_SESSION");
|
||||
assertThat(this.context.getBean(SessionProperties.class)
|
||||
.getJdbc().getInitializer().isEnabled()).isFalse();
|
||||
assertThat(this.context.getBean(SessionProperties.class).getJdbc()
|
||||
.getInitializer().isEnabled()).isFalse();
|
||||
this.thrown.expect(BadSqlGrammarException.class);
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
@ -88,8 +88,8 @@ public class SessionAutoConfigurationJdbcTests
|
||||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("FOO_BAR");
|
||||
assertThat(this.context.getBean(SessionProperties.class)
|
||||
.getJdbc().getInitializer().isEnabled()).isTrue();
|
||||
assertThat(this.context.getBean(SessionProperties.class).getJdbc()
|
||||
.getInitializer().isEnabled()).isTrue();
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from FOO_BAR")).isEmpty();
|
||||
}
|
||||
@ -104,8 +104,8 @@ public class SessionAutoConfigurationJdbcTests
|
||||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("FOO_BAR");
|
||||
assertThat(this.context.getBean(SessionProperties.class)
|
||||
.getJdbc().getInitializer().isEnabled()).isFalse();
|
||||
assertThat(this.context.getBean(SessionProperties.class).getJdbc()
|
||||
.getInitializer().isEnabled()).isFalse();
|
||||
this.thrown.expect(BadSqlGrammarException.class);
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
|
@ -50,7 +50,8 @@ public class SessionAutoConfigurationRedisTests
|
||||
public void redisSessionStoreIsTheDefault() {
|
||||
load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class));
|
||||
validateSpringSessionUsesRedis();
|
||||
this.output.expect(containsString("Spring Session store type is mandatory: set 'spring.session.store-type=redis' in your configuration"));
|
||||
this.output.expect(containsString(
|
||||
"Spring Session store type is mandatory: set 'spring.session.store-type=redis' in your configuration"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -58,7 +59,8 @@ public class SessionAutoConfigurationRedisTests
|
||||
load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class),
|
||||
"spring.session.store-type=redis");
|
||||
validateSpringSessionUsesRedis();
|
||||
this.output.expect(not(containsString("Spring Session store type is mandatory: set 'spring.session.store-type=redis' in your configuration")));
|
||||
this.output.expect(not(containsString(
|
||||
"Spring Session store type is mandatory: set 'spring.session.store-type=redis' in your configuration")));
|
||||
}
|
||||
|
||||
private void validateSpringSessionUsesRedis() {
|
||||
|
@ -81,6 +81,7 @@
|
||||
<module>spring-boot-sample-session-redis</module>
|
||||
<module>spring-boot-sample-simple</module>
|
||||
<module>spring-boot-sample-test</module>
|
||||
<module>spring-boot-sample-test-nomockito</module>
|
||||
<module>spring-boot-sample-testng</module>
|
||||
<module>spring-boot-sample-tomcat</module>
|
||||
<module>spring-boot-sample-tomcat-jsp</module>
|
||||
@ -182,6 +183,25 @@
|
||||
<configuration>
|
||||
<lifecycleMappingMetadata>
|
||||
<pluginExecutions>
|
||||
<pluginExecution>
|
||||
<pluginExecutionFilter>
|
||||
<groupId>
|
||||
org.apache.maven.plugins
|
||||
</groupId>
|
||||
<artifactId>
|
||||
maven-enforcer-plugin
|
||||
</artifactId>
|
||||
<versionRange>
|
||||
[1.3.1,)
|
||||
</versionRange>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
</pluginExecutionFilter>
|
||||
<action>
|
||||
<ignore />
|
||||
</action>
|
||||
</pluginExecution>
|
||||
<pluginExecution>
|
||||
<pluginExecutionFilter>
|
||||
<groupId>
|
||||
|
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<!-- Your own application should inherit from spring-boot-starter-parent -->
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-samples</artifactId>
|
||||
<version>1.4.2.BUILD-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>spring-boot-sample-test-nomockito</artifactId>
|
||||
<name>Spring Boot Test Sample No Mockito</name>
|
||||
<description>Spring Boot Test Sample No Mockito</description>
|
||||
<url>http://projects.spring.io/spring-boot/</url>
|
||||
<organization>
|
||||
<name>Pivotal Software, Inc.</name>
|
||||
<url>http://www.spring.io</url>
|
||||
</organization>
|
||||
<properties>
|
||||
<main.basedir>${basedir}/../..</main.basedir>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -0,0 +1,13 @@
|
||||
package sample.testnomockito;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SampleTestNoMockitoApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SampleTestNoMockitoApplication.class);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package sample.testnomockito;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests that {code ResetMocksTestExecutionListener} and
|
||||
* {@code MockitoTestExecutionListener} gracefully degrade when Mockito is not on the
|
||||
* classpath.
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
public class SampleTestNoMockitoApplicationTest {
|
||||
|
||||
// gh-7065
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext context;
|
||||
|
||||
@Test
|
||||
public void contextLoads() throws Exception {
|
||||
assertThat(this.context).isNotNull();
|
||||
}
|
||||
|
||||
}
|
@ -26,6 +26,7 @@ import org.mockito.listeners.MethodInvocationReport;
|
||||
import org.mockito.mock.MockCreationSettings;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Reset strategy used on a mock bean. Usually applied to a mock via the
|
||||
@ -53,8 +54,6 @@ public enum MockReset {
|
||||
*/
|
||||
NONE;
|
||||
|
||||
private static final MockUtil util = new MockUtil();
|
||||
|
||||
/**
|
||||
* Create {@link MockSettings settings} to be used with mocks where reset should occur
|
||||
* before each test method runs.
|
||||
@ -105,12 +104,15 @@ public enum MockReset {
|
||||
@SuppressWarnings("rawtypes")
|
||||
static MockReset get(Object mock) {
|
||||
MockReset reset = MockReset.NONE;
|
||||
if (util.isMock(mock)) {
|
||||
MockCreationSettings settings = util.getMockSettings(mock);
|
||||
List listeners = settings.getInvocationListeners();
|
||||
for (Object listener : listeners) {
|
||||
if (listener instanceof ResetInvocationListener) {
|
||||
reset = ((ResetInvocationListener) listener).getReset();
|
||||
if (ClassUtils.isPresent("org.mockito.internal.util.MockUtil", null)) {
|
||||
MockUtil mockUtil = new MockUtil();
|
||||
if (mockUtil.isMock(mock)) {
|
||||
MockCreationSettings settings = mockUtil.getMockSettings(mock);
|
||||
List listeners = settings.getInvocationListeners();
|
||||
for (Object listener : listeners) {
|
||||
if (listener instanceof ResetInvocationListener) {
|
||||
reset = ((ResetInvocationListener) listener).getReset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,8 @@ package org.springframework.boot.test.context.bootstrap;
|
||||
import org.springframework.boot.SpringBootConfiguration;
|
||||
|
||||
/**
|
||||
* Example configuration used in {@link SpringBootTestContextBootstrapperIntegrationTests}.
|
||||
* Example configuration used in
|
||||
* {@link SpringBootTestContextBootstrapperIntegrationTests}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
@ -28,9 +28,9 @@ import org.springframework.core.env.ConfigurableEnvironment;
|
||||
|
||||
/**
|
||||
* {@link SpringApplicationRunListener} to publish {@link SpringApplicationEvent}s.
|
||||
*
|
||||
* <p>Uses an internal {@link ApplicationEventMulticaster} for the events that are
|
||||
* fired before the context is actually refreshed.
|
||||
* <p>
|
||||
* Uses an internal {@link ApplicationEventMulticaster} for the events that are fired
|
||||
* before the context is actually refreshed.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Stephane Nicoll
|
||||
@ -59,8 +59,8 @@ public class EventPublishingRunListener implements SpringApplicationRunListener,
|
||||
|
||||
@Override
|
||||
public void started() {
|
||||
this.initialMulticaster.multicastEvent(new ApplicationStartedEvent(
|
||||
this.application, this.args));
|
||||
this.initialMulticaster
|
||||
.multicastEvent(new ApplicationStartedEvent(this.application, this.args));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -82,8 +82,8 @@ public class EventPublishingRunListener implements SpringApplicationRunListener,
|
||||
}
|
||||
context.addApplicationListener(listener);
|
||||
}
|
||||
this.initialMulticaster.multicastEvent(new ApplicationPreparedEvent(
|
||||
this.application, this.args, context));
|
||||
this.initialMulticaster.multicastEvent(
|
||||
new ApplicationPreparedEvent(this.application, this.args, context));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -23,15 +23,15 @@ import org.springframework.core.env.Environment;
|
||||
/**
|
||||
* Allows for customization of the application's {@link Environment} prior to the
|
||||
* application context being refreshed.
|
||||
*
|
||||
* <p>EnvironmentPostProcessor implementations have to be registered in
|
||||
* {@code META-INF/spring.factories}, using the fully qualified name of this
|
||||
* class as the key.
|
||||
*
|
||||
* <p>{@code EnvironmentPostProcessor} processors are encouraged to detect
|
||||
* whether Spring's {@link org.springframework.core.Ordered Ordered} interface has been
|
||||
* implemented or if the @{@link org.springframework.core.annotation.Order Order}
|
||||
* annotation is present and to sort instances accordingly if so prior to invocation.
|
||||
* <p>
|
||||
* EnvironmentPostProcessor implementations have to be registered in
|
||||
* {@code META-INF/spring.factories}, using the fully qualified name of this class as the
|
||||
* key.
|
||||
* <p>
|
||||
* {@code EnvironmentPostProcessor} processors are encouraged to detect whether Spring's
|
||||
* {@link org.springframework.core.Ordered Ordered} interface has been implemented or if
|
||||
* the @{@link org.springframework.core.annotation.Order Order} annotation is present and
|
||||
* to sort instances accordingly if so prior to invocation.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Stephane Nicoll
|
||||
|
@ -67,7 +67,8 @@ public class SpringPhysicalNamingStrategy implements PhysicalNamingStrategy {
|
||||
}
|
||||
StringBuilder text = new StringBuilder(name.getText().replace('.', '_'));
|
||||
for (int i = 1; i < text.length() - 1; i++) {
|
||||
if (isUnderscoreRequired(text.charAt(i - 1), text.charAt(i), text.charAt(i + 1))) {
|
||||
if (isUnderscoreRequired(text.charAt(i - 1), text.charAt(i),
|
||||
text.charAt(i + 1))) {
|
||||
text.insert(i++, '_');
|
||||
}
|
||||
}
|
||||
|
@ -826,8 +826,7 @@ public class ConfigFileApplicationListenerTests {
|
||||
assertThat(environment.containsProperty("customprofile")).isTrue();
|
||||
assertThat(environment.containsProperty("customprofile-specific")).isTrue();
|
||||
assertThat(environment.containsProperty("customprofile-customdefault")).isTrue();
|
||||
assertThat(environment.acceptsProfiles("customdefault"))
|
||||
.isTrue();
|
||||
assertThat(environment.acceptsProfiles("customdefault")).isTrue();
|
||||
}
|
||||
|
||||
private Condition<ConfigurableEnvironment> matchingPropertySource(
|
||||
|
Loading…
Reference in New Issue
Block a user