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