From 778e3eb0915867834c3802f0aded1c13407e9102 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 24 Jun 2015 16:15:12 -0700 Subject: [PATCH] Polish --- .../appendix-configuration-metadata.adoc | 8 +++++- .../metadata/ItemHint.java | 24 +++++++++--------- .../metadata/JsonMarshaller.java | 2 -- ...ationMetadataAnnotationProcessorTests.java | 19 +++++++------- .../ConfigurationMetadataMatchers.java | 25 ++++++------------- .../metadata/JsonMarshallerTests.java | 3 ++- 6 files changed, 38 insertions(+), 43 deletions(-) diff --git a/spring-boot-docs/src/main/asciidoc/appendix-configuration-metadata.adoc b/spring-boot-docs/src/main/asciidoc/appendix-configuration-metadata.adoc index 805b33869c..c1b90d4fe5 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-configuration-metadata.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-configuration-metadata.adoc @@ -98,6 +98,7 @@ given property. When configuring the `server.tomcat.compression` property, a too use it to offer some auto-completion help for the `off`, `on` and `force` values. + [[configuration-metadata-group-attributes]] ==== Group Attributes The JSON object contained in the `groups` array can contain the following attributes: @@ -189,6 +190,7 @@ The JSON object contained in the `properties` array can contain the following at |=== + [[configuration-metadata-hints-attributes]] ==== Hint Attributes The JSON object contained in the `hints` array can contain the following attributes: @@ -238,8 +240,10 @@ appear multiple times within a meta-data file. For example, Spring Boot binds offering overlap of property names. Consumers of meta-data should take care to ensure that they support such scenarios. -=== Providing manual hints + +[[configuration-metadata-providing-manual-hints]] +=== Providing manual hints To improve the user experience and further assist the user in configuring a given property, you can provide additional meta-data that describes the list of potential values for a property. @@ -252,6 +256,8 @@ If your property is of type `Map`, you can provide hints for both the keys and t values (but not for the map itself). The special `.keys` and `.values` suffixes must be used to refer to the keys and the values respectively. + + [[configuration-metadata-annotation-processor]] === Generating your own meta-data using the annotation processor You can easily generate your own configuration meta-data file from items annotated with diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ItemHint.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ItemHint.java index cee2ddb598..954e7f45a6 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ItemHint.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ItemHint.java @@ -22,13 +22,13 @@ import java.util.Collections; import java.util.List; /** - * Provide hints on an {@link ItemMetadata}. Defines the list of possible values for - * a particular item as {@link ItemHint.ValueHint} instances. + * Provide hints on an {@link ItemMetadata}. Defines the list of possible values for a + * particular item as {@link ItemHint.ValueHint} instances. *

* The {@code name} of the hint is the name of the related property with one major - * exception for map types as both the keys and values of the map can have hints. In - * such a case, the hint should be suffixed by ".key" or ".values" respectively. Creating - * a hint for a map using its property name is therefore invalid. + * exception for map types as both the keys and values of the map can have hints. In such + * a case, the hint should be suffixed by ".key" or ".values" respectively. Creating a + * hint for a map using its property name is therefore invalid. * * @author Stephane Nicoll * @since 1.3.0 @@ -73,13 +73,12 @@ public class ItemHint implements Comparable { @Override public String toString() { - return "ItemHint{" + "name='" + this.name + '\'' + - ", values=" + this.values + - '}'; + return "ItemHint{" + "name='" + this.name + '\'' + ", values=" + this.values + + '}'; } - public static class ValueHint { + private final Object value; private final String description; @@ -99,9 +98,10 @@ public class ItemHint implements Comparable { @Override public String toString() { - return "ValueHint{" + "value=" + this.value + - ", description='" + this.description + '\'' + - '}'; + return "ValueHint{" + "value=" + this.value + ", description='" + + this.description + '\'' + '}'; } + } + } diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshaller.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshaller.java index 4483274ea9..bb1692fa77 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshaller.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshaller.java @@ -106,7 +106,6 @@ public class JsonMarshaller { return jsonObject; } - private void putIfPresent(JSONObject jsonObject, String name, Object value) { if (value != null) { jsonObject.put(name, value); @@ -192,7 +191,6 @@ public class JsonMarshaller { return new ItemHint.ValueHint(value, description); } - private Object readItemValue(Object value) { if (value instanceof JSONArray) { JSONArray array = (JSONArray) value; diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java index c044262103..ac85dfb755 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java @@ -350,24 +350,23 @@ public class ConfigurationMetadataAnnotationProcessorTests { @Test public void mergingOfSimpleHint() throws Exception { - writeAdditionalHints( - ItemHint.newHint("simple.the-name", new ItemHint.ValueHint("boot", "Bla bla"), - new ItemHint.ValueHint("spring", null))); + writeAdditionalHints(ItemHint.newHint("simple.the-name", new ItemHint.ValueHint( + "boot", "Bla bla"), new ItemHint.ValueHint("spring", null))); ConfigurationMetadata metadata = compile(SimpleProperties.class); - assertThat(metadata, containsHint("simple.the-name") - .withValue(0, "boot", "Bla bla") - .withValue(1, "spring", null)); + assertThat(metadata, + containsHint("simple.the-name").withValue(0, "boot", "Bla bla") + .withValue(1, "spring", null)); } @Test public void mergingOfHintWithNonCanonicalName() throws Exception { - writeAdditionalHints( - ItemHint.newHint("simple.theName", new ItemHint.ValueHint("boot", "Bla bla"))); + writeAdditionalHints(ItemHint.newHint("simple.theName", new ItemHint.ValueHint( + "boot", "Bla bla"))); ConfigurationMetadata metadata = compile(SimpleProperties.class); - assertThat(metadata, containsHint("simple.the-name") - .withValue(0, "boot", "Bla bla")); + assertThat(metadata, + containsHint("simple.the-name").withValue(0, "boot", "Bla bla")); } @Test diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataMatchers.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataMatchers.java index 680ddc7407..49f7a5f2d8 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataMatchers.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataMatchers.java @@ -241,8 +241,7 @@ public class ConfigurationMetadataMatchers { description.appendText("missing hint " + this.name); } else { - description.appendText( - "was hint ").appendValue(itemHint); + description.appendText("was hint ").appendValue(itemHint); } } @@ -260,8 +259,7 @@ public class ConfigurationMetadataMatchers { return new ContainsHintMatcher(this.name, values); } - private ItemHint getFirstHintWithName(ConfigurationMetadata metadata, - String name) { + private ItemHint getFirstHintWithName(ConfigurationMetadata metadata, String name) { for (ItemHint hint : metadata.getHints()) { if (name.equals(hint.getName())) { return hint; @@ -273,8 +271,11 @@ public class ConfigurationMetadataMatchers { } public static class ValueHintMatcher extends BaseMatcher { + private final int index; + private final Object value; + private final String description; public ValueHintMatcher(int index, Object value, String description) { @@ -290,12 +291,11 @@ public class ConfigurationMetadataMatchers { return false; } ItemHint.ValueHint valueHint = hint.getValues().get(this.index); - if (this.value != null - && !this.value.equals(valueHint.getValue())) { + if (this.value != null && !this.value.equals(valueHint.getValue())) { return false; } if (this.description != null - && !this.description.equals(valueHint.getDescription())) { + && !this.description.equals(valueHint.getDescription())) { return false; } return true; @@ -303,7 +303,7 @@ public class ConfigurationMetadataMatchers { @Override public void describeTo(Description description) { - description.appendText("value hint at index '"+this.index+"'"); + description.appendText("value hint at index '" + this.index + "'"); if (this.value != null) { description.appendText(" value ").appendValue(this.value); } @@ -312,15 +312,6 @@ public class ConfigurationMetadataMatchers { } } - private ItemHint.ValueHint getValueHint(ItemHint hint) { - for (ItemHint.ValueHint valueHint : hint.getValues()) { - if (this.value.equals(valueHint.getValue())) { - return valueHint; - } - } - return null; - } - } } diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshallerTests.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshallerTests.java index 6ab1f7e041..8a05d70027 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshallerTests.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/JsonMarshallerTests.java @@ -74,7 +74,8 @@ public class JsonMarshallerTests { containsProperty("f").withDefaultValue(is(new boolean[] { true, false }))); assertThat(read, containsGroup("d")); assertThat(read, containsHint("a.b")); - assertThat(read, containsHint("c").withValue(0, 123, "hey").withValue(1, 456, null)); + assertThat(read, + containsHint("c").withValue(0, 123, "hey").withValue(1, 456, null)); } }