Commit 6381fdcb authored by Phillip Webb's avatar Phillip Webb

Polish

parent 96adb87b
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Qualifier; ...@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
* data source, the other (main) one would normally be marked as <code>@Primary</code>. * data source, the other (main) one would normally be marked as <code>@Primary</code>.
* *
* @author Dave Syer * @author Dave Syer
* @since 1.1.0
*/ */
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, @Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE,
ElementType.ANNOTATION_TYPE }) ElementType.ANNOTATION_TYPE })
......
...@@ -30,7 +30,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; ...@@ -30,7 +30,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* properties into the {@link Flyway} instance. * properties into the {@link Flyway} instance.
* *
* @author Dave Syer * @author Dave Syer
*
* @since 1.1.0 * @since 1.1.0
*/ */
@ConfigurationProperties(prefix = "flyway", ignoreUnknownFields = true) @ConfigurationProperties(prefix = "flyway", ignoreUnknownFields = true)
...@@ -83,7 +82,7 @@ public class FlywayProperties { ...@@ -83,7 +82,7 @@ public class FlywayProperties {
} }
public String getPassword() { public String getPassword() {
return this.password == null ? "" : this.password; return (this.password == null ? "" : this.password);
} }
public void setPassword(String password) { public void setPassword(String password) {
......
...@@ -42,7 +42,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter ...@@ -42,7 +42,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
*/ */
@Configuration @Configuration
@ConditionalOnClass({ DeviceResolverHandlerInterceptor.class, @ConditionalOnClass({ DeviceResolverHandlerInterceptor.class,
DeviceHandlerMethodArgumentResolver.class }) DeviceHandlerMethodArgumentResolver.class })
@AutoConfigureAfter(WebMvcAutoConfiguration.class) @AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class DeviceResolverAutoConfiguration { public class DeviceResolverAutoConfiguration {
...@@ -67,7 +67,7 @@ public class DeviceResolverAutoConfiguration { ...@@ -67,7 +67,7 @@ public class DeviceResolverAutoConfiguration {
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(deviceResolverHandlerInterceptor); registry.addInterceptor(this.deviceResolverHandlerInterceptor);
} }
@Override @Override
......
...@@ -39,13 +39,13 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter ...@@ -39,13 +39,13 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
* {@link EnableAutoConfiguration Auto-configuration} for Spring Mobile's * {@link EnableAutoConfiguration Auto-configuration} for Spring Mobile's
* {@link SitePreferenceHandler}. The site preference feature depends on a * {@link SitePreferenceHandler}. The site preference feature depends on a
* {@link DeviceResolver} first being registered. * {@link DeviceResolver} first being registered.
* *
* @author Roy Clarkson * @author Roy Clarkson
* @since 1.1 * @since 1.1.0
*/ */
@Configuration @Configuration
@ConditionalOnClass({ SitePreferenceHandlerInterceptor.class, @ConditionalOnClass({ SitePreferenceHandlerInterceptor.class,
SitePreferenceHandlerMethodArgumentResolver.class }) SitePreferenceHandlerMethodArgumentResolver.class })
@AutoConfigureAfter(DeviceResolverAutoConfiguration.class) @AutoConfigureAfter(DeviceResolverAutoConfiguration.class)
@ConditionalOnExpression("${spring.mobile.enableSitePreference:true}") @ConditionalOnExpression("${spring.mobile.enableSitePreference:true}")
public class SitePreferenceAutoConfiguration { public class SitePreferenceAutoConfiguration {
...@@ -71,7 +71,7 @@ public class SitePreferenceAutoConfiguration { ...@@ -71,7 +71,7 @@ public class SitePreferenceAutoConfiguration {
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(sitePreferenceHandlerInterceptor); registry.addInterceptor(this.sitePreferenceHandlerInterceptor);
} }
@Override @Override
......
...@@ -30,7 +30,6 @@ import org.springframework.beans.factory.BeanCreationException; ...@@ -30,7 +30,6 @@ import org.springframework.beans.factory.BeanCreationException;
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration;
import org.springframework.boot.test.EnvironmentTestUtils; import org.springframework.boot.test.EnvironmentTestUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -40,7 +39,7 @@ import static org.junit.Assert.assertEquals; ...@@ -40,7 +39,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
/** /**
* Tests for {@link LiquibaseAutoConfiguration}. * Tests for {@link FlywayAutoConfiguration}.
* *
* @author Dave Syer * @author Dave Syer
*/ */
......
...@@ -16,9 +16,6 @@ ...@@ -16,9 +16,6 @@
package org.springframework.boot.autoconfigure.mobile; package org.springframework.boot.autoconfigure.mobile;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.List; import java.util.List;
...@@ -39,6 +36,9 @@ import org.springframework.util.ReflectionUtils; ...@@ -39,6 +36,9 @@ import org.springframework.util.ReflectionUtils;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
/** /**
* Tests for {@link DeviceResolverAutoConfiguration}. * Tests for {@link DeviceResolverAutoConfiguration}.
* *
...@@ -82,7 +82,8 @@ public class DeviceResolverAutoConfigurationTests { ...@@ -82,7 +82,8 @@ public class DeviceResolverAutoConfigurationTests {
DeviceResolverAutoConfiguration.class, DeviceResolverAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class); PropertyPlaceholderAutoConfiguration.class);
context.refresh(); context.refresh();
RequestMappingHandlerMapping mapping = (RequestMappingHandlerMapping) context.getBean("requestMappingHandlerMapping"); RequestMappingHandlerMapping mapping = (RequestMappingHandlerMapping) context
.getBean("requestMappingHandlerMapping");
Field interceptorsField = ReflectionUtils.findField( Field interceptorsField = ReflectionUtils.findField(
RequestMappingHandlerMapping.class, "interceptors"); RequestMappingHandlerMapping.class, "interceptors");
interceptorsField.setAccessible(true); interceptorsField.setAccessible(true);
......
...@@ -1210,8 +1210,8 @@ that can be used to disable the migrations, or switch off the location checking. ...@@ -1210,8 +1210,8 @@ that can be used to disable the migrations, or switch off the location checking.
By default Flyway will autowire the (`@Primary`) `DataSource` in your context and By default Flyway will autowire the (`@Primary`) `DataSource` in your context and
use that for migrations. If you like to use a different `DataSource` you can create use that for migrations. If you like to use a different `DataSource` you can create
one and mark its `@Bean` as `@FlywayDataSource` - if you do that remember to create one and mark its `@Bean` as `@FlywayDataSource` - if you do that remember to create
another one and mark it as `@Primary` if you want 2 data sources. another one and mark it as `@Primary` if you want 2 data sources.
Or you can use Flyway's native `DataSource` by setting `flyway.[url,user,password]` Or you can use Flyway's native `DataSource` by setting `flyway.[url,user,password]`
in external properties. in external properties.
There is a {github-code}/spring-boot-samples/spring-boot-sample-flyway[Flyway sample] so There is a {github-code}/spring-boot-samples/spring-boot-sample-flyway[Flyway sample] so
......
...@@ -1646,14 +1646,15 @@ interaction. For Example: ...@@ -1646,14 +1646,15 @@ interaction. For Example:
} }
---- ----
NOTE: Spring's test framework will cache application contexts between tests. Therefore,
as long as your tests share the same configuration, the time consuming process of starting
and stopping the server will only happen once, regardless of the number of tests that
actually run.
To change the port you can add environment properties to `@IntegrationTest` as colon- or To change the port you can add environment properties to `@IntegrationTest` as colon- or
equals-separated name-value pairs, e.g. `@IntegrationTest("server.port:9000")`. equals-separated name-value pairs, e.g. `@IntegrationTest("server.port:9000")`.
Additionally you can set the `server.port` and `management.port` properties to `0`
As long as you use the same configuration, the context will be cached amongst different in order to run your integration tests using random ports. For example:
tests by default. You can therefore use this feature to run a battery of integration tests
where the server would actually start prior to the tests. In that case, it would be better
to make sure that your integration tests use a random port for the main server and the
management one, something like:
[source,java,indent=0,subs="verbatim,quotes,attributes"] [source,java,indent=0,subs="verbatim,quotes,attributes"]
---- ----
...@@ -1661,13 +1662,18 @@ management one, something like: ...@@ -1661,13 +1662,18 @@ management one, something like:
@SpringApplicationConfiguration(classes = MyApplication.class) @SpringApplicationConfiguration(classes = MyApplication.class)
@WebAppConfiguration @WebAppConfiguration
@IntegrationTest({"server.port=0", "management.port=0"}) @IntegrationTest({"server.port=0", "management.port=0"})
public class SomeIntegrationTests { ... } public class SomeIntegrationTests {
// ...
}
---- ----
See <<howto-discover-the-http-port-at-runtime>> for a description of how you can discover See <<howto-discover-the-http-port-at-runtime>> for a description of how you can discover
the actual port that was allocated for the duration of the tests. the actual port that was allocated for the duration of the tests.
[[boot-features-test-utilities]] [[boot-features-test-utilities]]
=== Test utilities === Test utilities
A few test utility classes are packaged as part of `spring-boot` that are generally A few test utility classes are packaged as part of `spring-boot` that are generally
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
......
...@@ -179,8 +179,8 @@ public class ConfigFileApplicationListener implements ...@@ -179,8 +179,8 @@ public class ConfigFileApplicationListener implements
try { try {
binder.bindPropertiesToTarget(); binder.bindPropertiesToTarget();
} }
catch (BindException e) { catch (BindException ex) {
throw new IllegalStateException("Cannot bind to SpringApplication", e); throw new IllegalStateException("Cannot bind to SpringApplication", ex);
} }
} }
......
/*
* Copyright 2012-2014 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.bind; package org.springframework.boot.bind;
import org.junit.Test; import org.junit.Test;
...@@ -20,6 +36,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; ...@@ -20,6 +36,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
/**
* Tests for {@link PropertySourcesPropertyValues} binding.
*
* @author Dave Syer
*/
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfig.class) @SpringApplicationConfiguration(classes = TestConfig.class)
@IntegrationTest @IntegrationTest
...@@ -69,4 +90,4 @@ public class PropertySourcesBindingTests { ...@@ -69,4 +90,4 @@ public class PropertySourcesBindingTests {
} }
} }
} }
\ No newline at end of file
/*
* Copyright 2012-2014 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.bind; package org.springframework.boot.bind;
import org.junit.Test; import org.junit.Test;
...@@ -19,6 +35,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; ...@@ -19,6 +35,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
/**
* Tests for {@link PropertySourcesPropertyValues} binding.
*
* @author Dave Syer
*/
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfig.class) @SpringApplicationConfiguration(classes = TestConfig.class)
@IntegrationTest @IntegrationTest
...@@ -61,4 +82,4 @@ public class SimplerPropertySourcesBindingTests { ...@@ -61,4 +82,4 @@ public class SimplerPropertySourcesBindingTests {
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment