diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/MessageSourceAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/MessageSourceAutoConfiguration.java index accc34cd573..8303d58ba80 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/MessageSourceAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/MessageSourceAutoConfiguration.java @@ -84,7 +84,9 @@ public class MessageSourceAutoConfiguration { messageSource .setBasenames(commaDelimitedListToStringArray(trimAllWhitespace(this.basename))); } - messageSource.setDefaultEncoding(this.encoding.name()); + if (this.encoding != null) { + messageSource.setDefaultEncoding(this.encoding.name()); + } messageSource.setCacheSeconds(this.cacheSeconds); return messageSource; } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/JndiSessionConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/JndiSessionConfiguration.java index cf851058e9c..060cc24c984 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/JndiSessionConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/JndiSessionConfiguration.java @@ -33,7 +33,6 @@ import org.springframework.jndi.JndiLocatorDelegate; * * @author EddĂș MelĂ©ndez * @author Stephane Nicoll - * @since 1.3.0 */ @Configuration @ConditionalOnClass(Session.class) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java index 4bc7da2c3eb..37a09389165 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java @@ -18,6 +18,7 @@ package org.springframework.boot.autoconfigure.mail; import java.util.Map; import java.util.Properties; + import javax.activation.MimeType; import javax.mail.Session; import javax.mail.internet.MimeMessage; @@ -78,7 +79,9 @@ public class MailSenderAutoConfiguration { } sender.setUsername(this.properties.getUsername()); sender.setPassword(this.properties.getPassword()); - sender.setDefaultEncoding(this.properties.getDefaultEncoding().name()); + if (this.properties.getDefaultEncoding() != null) { + sender.setDefaultEncoding(this.properties.getDefaultEncoding().name()); + } if (!this.properties.getProperties().isEmpty()) { sender.setJavaMailProperties(asProperties(this.properties.getProperties())); } @@ -90,10 +93,9 @@ public class MailSenderAutoConfiguration { return properties; } - /** - * Condition to trigger the creation of a {@link JavaMailSenderImpl}. This kicks - * in if either the host or jndi name property is set. + * Condition to trigger the creation of a {@link JavaMailSenderImpl}. This kicks in if + * either the host or jndi name property is set. */ static class MailSenderCondition extends AnyNestedCondition { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractTemplateViewResolverProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractTemplateViewResolverProperties.java index f576c3a5d57..8aa03eb06f0 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractTemplateViewResolverProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractTemplateViewResolverProperties.java @@ -146,7 +146,9 @@ public abstract class AbstractTemplateViewResolverProperties extends resolver.setPrefix(getPrefix()); resolver.setSuffix(getSuffix()); resolver.setCache(isCache()); - resolver.setContentType(getContentType().toString()); + if (getContentType() != null) { + resolver.setContentType(getContentType().toString()); + } resolver.setViewNames(getViewNames()); resolver.setExposeRequestAttributes(isExposeRequestAttributes()); resolver.setAllowRequestOverride(isAllowRequestOverride()); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractViewResolverProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractViewResolverProperties.java index 432ce6d5fa9..54ad7fab55c 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractViewResolverProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/AbstractViewResolverProperties.java @@ -17,8 +17,6 @@ package org.springframework.boot.autoconfigure.template; import java.nio.charset.Charset; -import java.util.Collections; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; @@ -103,8 +101,13 @@ public abstract class AbstractViewResolverProperties { } public MimeType getContentType() { - return (this.contentType.getCharSet() != null ? this.contentType : - new MimeType(this.contentType, cloneParametersWithCustomCharset(this.contentType, this.charset))); + if (this.contentType.getCharSet() == null) { + Map parameters = new LinkedHashMap(); + parameters.put("charset", this.charset.name()); + parameters.putAll(this.contentType.getParameters()); + return new MimeType(this.contentType, parameters); + } + return this.contentType; } public void setContentType(MimeType contentType) { @@ -123,11 +126,4 @@ public abstract class AbstractViewResolverProperties { this.charset = charset; } - private static Map cloneParametersWithCustomCharset(MimeType contentType, Charset charset) { - LinkedHashMap clone = new LinkedHashMap(); - clone.put("charset", charset.name()); - clone.putAll(contentType.getParameters()); - return clone; - } - } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java index 00e7c44c5f6..fc43c22732c 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java @@ -97,7 +97,9 @@ public class ThymeleafAutoConfiguration { resolver.setPrefix(this.properties.getPrefix()); resolver.setSuffix(this.properties.getSuffix()); resolver.setTemplateMode(this.properties.getMode()); - resolver.setCharacterEncoding(this.properties.getEncoding().name()); + if (this.properties.getEncoding() != null) { + resolver.setCharacterEncoding(this.properties.getEncoding().name()); + } resolver.setCacheable(this.properties.isCache()); return resolver; } @@ -212,10 +214,10 @@ public class ThymeleafAutoConfiguration { if (type.getCharSet() != null) { return type.toString(); } - LinkedHashMap clone = new LinkedHashMap(); - clone.put("charset", charset); - clone.putAll(type.getParameters()); - return new MimeType(type, clone).toString(); + LinkedHashMap parameters = new LinkedHashMap(); + parameters.put("charset", charset); + parameters.putAll(type.getParameters()); + return new MimeType(type, parameters).toString(); } } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafProperties.java index 223b2d7ab7a..13b63ca42be 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafProperties.java @@ -61,7 +61,7 @@ public class ThymeleafProperties { /** * Template encoding. */ - private Charset encoding = DEFAULT_ENCODING; + private Charset encoding = DEFAULT_ENCODING; /** * Content-Type value. diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/template/ViewResolverPropertiesTest.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/template/ViewResolverPropertiesTest.java index bc4fafa4a27..b9c14760abd 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/template/ViewResolverPropertiesTest.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/template/ViewResolverPropertiesTest.java @@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.template; import java.nio.charset.Charset; import org.junit.Test; - import org.springframework.util.MimeTypeUtils; import static org.hamcrest.MatcherAssert.assertThat; @@ -32,10 +31,10 @@ import static org.hamcrest.Matchers.hasToString; */ public class ViewResolverPropertiesTest { - @Test public void defaultContentType() { - assertThat(new ViewResolverProperties().getContentType(), hasToString("text/html;charset=UTF-8")); + assertThat(new ViewResolverProperties().getContentType(), + hasToString("text/html;charset=UTF-8")); } @Test @@ -65,11 +64,12 @@ public class ViewResolverPropertiesTest { ViewResolverProperties properties = new ViewResolverProperties(); properties.setContentType(MimeTypeUtils.parseMimeType("text/plain;foo=bar")); properties.setCharset(Charset.forName("UTF-16")); - assertThat(properties.getContentType(), hasToString("text/plain;charset=UTF-16;foo=bar")); + assertThat(properties.getContentType(), + hasToString("text/plain;charset=UTF-16;foo=bar")); } - private static class ViewResolverProperties extends AbstractViewResolverProperties { + } } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java index 7d29b2cd8f0..c34ac51b3b9 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java @@ -205,7 +205,8 @@ public class ServerPropertiesTests { Map map = new HashMap(); map.put("server.tomcat.uriEncoding", "US-ASCII"); bindProperties(map); - assertEquals(Charset.forName("US-ASCII"), this.properties.getTomcat().getUriEncoding()); + assertEquals(Charset.forName("US-ASCII"), this.properties.getTomcat() + .getUriEncoding()); } @Test diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettings.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettings.java index e822bcfdcaf..fd7c6062c39 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettings.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettings.java @@ -74,8 +74,9 @@ public class MavenSettings { private final List activeProfiles; /** - * @param settings - * @param decryptedSettings + * Create a new {@link MavenSettings} instance. + * @param settings the source settings + * @param decryptedSettings the decrypted settings */ public MavenSettings(Settings settings, SettingsDecryptionResult decryptedSettings) { this.offline = settings.isOffline(); @@ -166,7 +167,8 @@ public class MavenSettings { org.apache.maven.model.Profile modelProfile = new org.apache.maven.model.Profile(); modelProfile.setId(profile.getId()); if (profile.getActivation() != null) { - modelProfile.setActivation(createModelActivation(profile.getActivation())); + modelProfile + .setActivation(createModelActivation(profile.getActivation())); } modelProfiles.add(modelProfile); } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettingsReader.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettingsReader.java index 795aebfe7a5..be11be7f91d 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettingsReader.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/MavenSettingsReader.java @@ -91,15 +91,16 @@ public class MavenSettingsReader { return settingsDecrypter; } - private void setField(Class clazz, String fieldName, Object target, Object value) { + private void setField(Class sourceClass, String fieldName, Object target, + Object value) { try { - Field field = clazz.getDeclaredField(fieldName); + Field field = sourceClass.getDeclaredField(fieldName); field.setAccessible(true); field.set(target, value); } - catch (Exception e) { + catch (Exception ex) { throw new IllegalStateException("Failed to set field '" + fieldName - + "' on '" + target + "'", e); + + "' on '" + target + "'", ex); } } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/RepositoryConfigurationFactory.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/RepositoryConfigurationFactory.java index 71b58dd5ff7..188b15aca3b 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/RepositoryConfigurationFactory.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/RepositoryConfigurationFactory.java @@ -44,7 +44,6 @@ public final class RepositoryConfigurationFactory { "spring-snapshot", URI.create("http://repo.spring.io/snapshot"), true); private RepositoryConfigurationFactory() { - } /** diff --git a/spring-boot-cli/src/test/resources/maven-settings/active-profile-repositories/.m2/settings.xml b/spring-boot-cli/src/test/resources/maven-settings/active-profile-repositories/.m2/settings.xml index c18b2440d34..e68c6ffc916 100644 --- a/spring-boot-cli/src/test/resources/maven-settings/active-profile-repositories/.m2/settings.xml +++ b/spring-boot-cli/src/test/resources/maven-settings/active-profile-repositories/.m2/settings.xml @@ -27,7 +27,7 @@ somepassword - + active-by-default @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-cli.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-cli.adoc index a077f7f5b4f..41f5b3d9c27 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-cli.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-cli.adoc @@ -508,6 +508,8 @@ to configure Aether. The following configuration settings are honored by the CLI Please refer to https://maven.apache.org/settings.html[Maven's settings documentation] for further information. + + [[cli-whats-next]] == What to read next There are some {github-code}/spring-boot-cli/samples[sample groovy diff --git a/spring-boot-tools/spring-boot-configuration-metadata/src/main/java/org/springframework/boot/configurationmetadata/DescriptionExtractor.java b/spring-boot-tools/spring-boot-configuration-metadata/src/main/java/org/springframework/boot/configurationmetadata/DescriptionExtractor.java index d4d346d5963..3b2e9707bbc 100644 --- a/spring-boot-tools/spring-boot-configuration-metadata/src/main/java/org/springframework/boot/configurationmetadata/DescriptionExtractor.java +++ b/spring-boot-tools/spring-boot-configuration-metadata/src/main/java/org/springframework/boot/configurationmetadata/DescriptionExtractor.java @@ -26,7 +26,7 @@ import java.util.Locale; */ class DescriptionExtractor { - static final String NEW_LINE = System.getProperty("line.separator"); + private static final String NEW_LINE = System.getProperty("line.separator"); public String getShortDescription(String description) { if (description == null) { diff --git a/spring-boot-tools/spring-boot-configuration-metadata/src/test/java/org/springframework/boot/configurationmetadata/DescriptionExtractorTests.java b/spring-boot-tools/spring-boot-configuration-metadata/src/test/java/org/springframework/boot/configurationmetadata/DescriptionExtractorTests.java index 37f29714215..6f0ae5b1d2e 100644 --- a/spring-boot-tools/spring-boot-configuration-metadata/src/test/java/org/springframework/boot/configurationmetadata/DescriptionExtractorTests.java +++ b/spring-boot-tools/spring-boot-configuration-metadata/src/test/java/org/springframework/boot/configurationmetadata/DescriptionExtractorTests.java @@ -27,41 +27,42 @@ import static org.junit.Assert.assertEquals; */ public class DescriptionExtractorTests { + private static final String NEW_LINE = System.getProperty("line.separator"); + private DescriptionExtractor extractor = new DescriptionExtractor(); @Test public void extractShortDescription() { - assertEquals("My short description.", - this.extractor.getShortDescription("My short description. More stuff.")); + String description = this.extractor.getShortDescription("My short " + + "description. More stuff."); + assertEquals("My short description.", description); } @Test public void extractShortDescriptionNewLineBeforeDot() { - assertEquals("My short description.", - this.extractor.getShortDescription("My short" + DescriptionExtractor.NEW_LINE + - "description." + DescriptionExtractor.NEW_LINE + "More stuff.")); + String description = this.extractor.getShortDescription("My short" + NEW_LINE + + "description." + NEW_LINE + "More stuff."); + assertEquals("My short description.", description); } @Test public void extractShortDescriptionNewLineBeforeDotWithSpaces() { - assertEquals("My short description.", - this.extractor - .getShortDescription("My short " - + DescriptionExtractor.NEW_LINE + " description. " - + DescriptionExtractor.NEW_LINE + "More stuff.")); + String description = this.extractor.getShortDescription("My short " + NEW_LINE + + " description. " + NEW_LINE + "More stuff."); + assertEquals("My short description.", description); } @Test public void extractShortDescriptionNoDot() { - assertEquals("My short description", - this.extractor.getShortDescription("My short description")); + String description = this.extractor.getShortDescription("My short description"); + assertEquals("My short description", description); } @Test public void extractShortDescriptionNoDotMultipleLines() { - assertEquals("My short description", - this.extractor.getShortDescription("My short description " - + DescriptionExtractor.NEW_LINE + " More stuff")); + String description = this.extractor.getShortDescription("My short description " + + NEW_LINE + " More stuff"); + assertEquals("My short description", description); } @Test diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java index 69ddf5d17d1..072b43f0009 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java @@ -35,7 +35,8 @@ class ExpressionTree extends ReflectionWrapper { private final Class methodInvocationTreeType = findClass("com.sun.source.tree.MethodInvocationTree"); - private final Method methodInvocationArgumentsMethod = findMethod(this.methodInvocationTreeType, "getArguments"); + private final Method methodInvocationArgumentsMethod = findMethod( + this.methodInvocationTreeType, "getArguments"); private final Class newArrayTreeType = findClass("com.sun.source.tree.NewArrayTree"); @@ -59,7 +60,8 @@ class ExpressionTree extends ReflectionWrapper { public Object getFactoryValue() throws Exception { if (this.methodInvocationTreeType.isAssignableFrom(getInstance().getClass())) { - List arguments = (List) this.methodInvocationArgumentsMethod.invoke(getInstance()); + List arguments = (List) this.methodInvocationArgumentsMethod + .invoke(getInstance()); if (arguments.size() == 1) { return new ExpressionTree(arguments.get(0)).getLiteralValue(); }