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