From e91b4d0bb319a757d03380301dfb3e5792b775d6 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 30 Jun 2017 16:48:35 +0100 Subject: [PATCH] Polish ContextLoader --- .../boot/test/context/ContextLoader.java | 84 ++++++++++--------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/context/ContextLoader.java b/spring-boot-test/src/main/java/org/springframework/boot/test/context/ContextLoader.java index e760496f43..de3f49e034 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/context/ContextLoader.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/context/ContextLoader.java @@ -37,8 +37,8 @@ import org.springframework.util.ObjectUtils; import static org.assertj.core.api.Assertions.assertThat; /** - * Manage the lifecycle of an {@link ApplicationContext}. Such helper is best used as - * a field of a test class, describing the shared configuration required for the test: + * Manage the lifecycle of an {@link ApplicationContext}. Such helper is best used as a + * field of a test class, describing the shared configuration required for the test: * *
  * public class FooAutoConfigurationTests {
@@ -48,12 +48,14 @@ import static org.assertj.core.api.Assertions.assertThat;
  *
  * }
* - *

The initialization above makes sure to register {@code FooAutoConfiguration} for all + *

+ * The initialization above makes sure to register {@code FooAutoConfiguration} for all * tests and set the {@code spring.foo} property to {@code bar} unless specified * otherwise. * - *

Based on the configuration above, a specific test can simulate what would happen - * if the user customizes a property and/or provides its own configuration: + *

+ * Based on the configuration above, a specific test can simulate what would happen if the + * user customizes a property and/or provides its own configuration: * *

  * public class FooAutoConfigurationTests {
@@ -68,13 +70,15 @@ import static org.assertj.core.api.Assertions.assertThat;
  *
  * }
* - *

The test above includes an extra {@code UserConfig} class that is guaranteed to - * be processed before any auto-configuration. Also, {@code spring.foo} - * has been overwritten to {@code biz}. The {@link #load(ContextConsumer) load} method - * takes a consumer that can use the context to assert its state. Upon completion, the - * context is automatically closed. + *

+ * The test above includes an extra {@code UserConfig} class that is guaranteed to be + * processed before any auto-configuration. Also, {@code spring.foo} has + * been overwritten to {@code biz}. The {@link #load(ContextConsumer) load} method takes a + * consumer that can use the context to assert its state. Upon completion, the context is + * automatically closed. * - *

If a failure scenario has to be tested, {@link #loadAndFail(Consumer)} can be used + *

+ * If a failure scenario has to be tested, {@link #loadAndFail(Consumer)} can be used * instead: it expects the startup of the context to fail and call the {@link Consumer} * with the exception for further assertions. * @@ -95,10 +99,9 @@ public class ContextLoader { private ClassLoader classLoader; /** - * Set the specified system property prior to loading the context and restore - * its previous value once the consumer has been invoked and the context closed. If - * the {@code value} is {@code null} this removes any prior customization for that - * key. + * Set the specified system property prior to loading the context and restore its + * previous value once the consumer has been invoked and the context closed. If the + * {@code value} is {@code null} this removes any prior customization for that key. * @param key the system property * @param value the value (can be null to remove any existing customization) * @return this instance @@ -115,10 +118,10 @@ public class ContextLoader { } /** - * Add the specified property pairs. Name-value pairs can be specified with - * colon (":") or equals ("=") separators. Override matching keys that might - * have been specified previously. - * @param pairs The key value pairs for properties that need to be added to the + * Add the specified property pairs. Key-value pairs can be specified with colon (":") + * or equals ("=") separators. Override matching keys that might have been specified + * previously. + * @param pairs the key-value pairs for properties that need to be added to the * environment * @return this instance */ @@ -155,10 +158,9 @@ public class ContextLoader { /** * Add the specified auto-configurations at the beginning (in that order) so that it - * is applied before any other existing auto-configurations, but after any - * user configuration. If {@code A} and {@code B} are specified, {@code A} will - * be processed, then {@code B} and finally the rest of the existing - * auto-configuration. + * is applied before any other existing auto-configurations, but after any user + * configuration. If {@code A} and {@code B} are specified, {@code A} will be + * processed, then {@code B} and finally the rest of the existing auto-configuration. * @param autoConfigurations the auto-configuration to add * @return this instance */ @@ -168,9 +170,9 @@ public class ContextLoader { } /** - * Customize the {@link ClassLoader} that the {@link ApplicationContext} should - * use. Customizing the {@link ClassLoader} is an effective manner to hide resources - * from the classpath. + * Customize the {@link ClassLoader} that the {@link ApplicationContext} should use. + * Customizing the {@link ClassLoader} is an effective manner to hide resources from + * the classpath. * @param classLoader the classloader to use (can be null to use the default) * @return this instance * @see HidePackagesClassLoader @@ -181,9 +183,9 @@ public class ContextLoader { } /** - * Create and refresh a new {@link ApplicationContext} based on the current state - * of this loader. The context is consumed by the specified {@link ContextConsumer} - * and closed upon completion. + * Create and refresh a new {@link ApplicationContext} based on the current state of + * this loader. The context is consumed by the specified {@link ContextConsumer} and + * closed upon completion. * @param consumer the consumer of the created {@link ApplicationContext} */ public void load(ContextConsumer consumer) { @@ -196,15 +198,15 @@ public class ContextLoader { throw ex; } catch (Throwable ex) { - throw new IllegalStateException("An unexpected error occurred: " - + ex.getMessage(), ex); + throw new IllegalStateException( + "An unexpected error occurred: " + ex.getMessage(), ex); } } } /** - * Create and refresh a new {@link ApplicationContext} based on the current state - * of this loader that this expected to fail. If the context does not fail, an + * Create and refresh a new {@link ApplicationContext} based on the current state of + * this loader that this expected to fail. If the context does not fail, an * {@link AssertionError} is thrown. Otherwise the exception is consumed by the * specified {@link Consumer} with no expectation on the type of the exception. * @param consumer the consumer of the failure @@ -214,8 +216,8 @@ public class ContextLoader { } /** - * Create and refresh a new {@link ApplicationContext} based on the current state - * of this loader that this expected to fail. If the context does not fail, an + * Create and refresh a new {@link ApplicationContext} based on the current state of + * this loader that this expected to fail. If the context does not fail, an * {@link AssertionError} is thrown. If the exception does not match the specified * {@code exceptionType}, an {@link AssertionError} is thrown as well. If the * exception type matches, it is consumed by the specified {@link Consumer}. @@ -246,14 +248,14 @@ public class ContextLoader { .applyTo(ctx); } if (!ObjectUtils.isEmpty(this.userConfigurations)) { - ctx.register(this.userConfigurations.toArray( - new Class[this.userConfigurations.size()])); + ctx.register(this.userConfigurations + .toArray(new Class[this.userConfigurations.size()])); } if (!ObjectUtils.isEmpty(this.autoConfigurations)) { - LinkedHashSet> linkedHashSet = - new LinkedHashSet(this.autoConfigurations); - ctx.register(linkedHashSet.toArray( - new Class[this.autoConfigurations.size()])); + LinkedHashSet> linkedHashSet = new LinkedHashSet<>( + this.autoConfigurations); + ctx.register( + linkedHashSet.toArray(new Class[this.autoConfigurations.size()])); } return ctx; }