Expose hints for Maps
This commit fixes the json parser so that hints for maps is also made available. Closes gh-5152pull/5171/head
parent
d5732afa67
commit
b60e9e5cb9
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright 2012-2016 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.configurationmetadata;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Hints of an item to provide the list of values and/or the name of the provider
|
||||
* responsible to identify suitable values. If the type of the related item is
|
||||
* a {@link java.util.Map} it can have both key and value hints.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @since 1.4.0
|
||||
*/
|
||||
public class Hints {
|
||||
|
||||
private final List<ValueHint> keyHints = new ArrayList<ValueHint>();
|
||||
|
||||
private final List<ValueProvider> keyProviders = new ArrayList<ValueProvider>();
|
||||
|
||||
private final List<ValueHint> valueHints = new ArrayList<ValueHint>();
|
||||
|
||||
private final List<ValueProvider> valueProviders = new ArrayList<ValueProvider>();
|
||||
|
||||
/**
|
||||
* The list of well-defined keys, if any. Only applicable if the type of the related
|
||||
* item is a {@link java.util.Map}. If no extra {@link ValueProvider provider}
|
||||
* is specified, these values are to be considered a closed-set of the available
|
||||
* keys for the map.
|
||||
* @return the key hints
|
||||
*/
|
||||
public List<ValueHint> getKeyHints() {
|
||||
return this.keyHints;
|
||||
}
|
||||
|
||||
/**
|
||||
* The value providers that are applicable to the keys of this item. Only applicable
|
||||
* if the type of the related item is a {@link java.util.Map}. Only one
|
||||
* {@link ValueProvider} is enabled for a key: the first in the list that is
|
||||
* supported should be used.
|
||||
* @return the key providers
|
||||
*/
|
||||
public List<ValueProvider> getKeyProviders() {
|
||||
return this.keyProviders;
|
||||
}
|
||||
|
||||
/**
|
||||
* The list of well-defined values, if any. If no extra {@link ValueProvider provider}
|
||||
* is specified, these values are to be considered a closed-set of the available
|
||||
* values for this item.
|
||||
* @return the value hints
|
||||
*/
|
||||
public List<ValueHint> getValueHints() {
|
||||
return this.valueHints;
|
||||
}
|
||||
|
||||
/**
|
||||
* The value providers that are applicable to this item. Only one
|
||||
* {@link ValueProvider} is enabled for an item: the first in the list that is
|
||||
* supported should be used.
|
||||
* @return the value providers
|
||||
*/
|
||||
public List<ValueProvider> getValueProviders() {
|
||||
return this.valueProviders;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"name": "spring.map",
|
||||
"type": "org.acme.Map",
|
||||
"sourceType": "org.acme.config.MapApp",
|
||||
"sourceMethod": "map()",
|
||||
"description": "This is Map."
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "spring.map.first",
|
||||
"type": "java.util.Map<String,String>",
|
||||
"sourceType": "org.acme.Map"
|
||||
},
|
||||
{
|
||||
"name": "spring.map.second",
|
||||
"type": "java.util.Map<String,String>",
|
||||
"sourceType": "org.acme.Map"
|
||||
},
|
||||
{
|
||||
"name": "spring.map.keys",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "org.acme.Map"
|
||||
},
|
||||
{
|
||||
"name": "spring.map.values",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "org.acme.Map"
|
||||
}
|
||||
],
|
||||
"hints": [
|
||||
{
|
||||
"name": "spring.map.first.keys",
|
||||
"values": [
|
||||
{
|
||||
"value": "one",
|
||||
"description": "First."
|
||||
},
|
||||
{
|
||||
"value": "two",
|
||||
"description": "Second."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "spring.map.second.values",
|
||||
"values": [
|
||||
{
|
||||
"value": "42",
|
||||
"description": "Choose me."
|
||||
},
|
||||
{
|
||||
"value": "24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "spring.map.keys",
|
||||
"providers": [
|
||||
{
|
||||
"name": "any"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "spring.map.values",
|
||||
"providers": [
|
||||
{
|
||||
"name": "handle-as",
|
||||
"parameters": {
|
||||
"target": "java.lang.Integer"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue