Removed deprecated constructors and methods from Config API (#1448)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
This commit is contained in:
Christoph Weitkamp 2020-05-20 22:16:54 +02:00 committed by GitHub
parent bd976cf937
commit 3eb93bf13a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 204 additions and 234 deletions

View File

@ -32,7 +32,7 @@ import org.openhab.core.automation.type.Input;
import org.openhab.core.automation.type.ModuleType; import org.openhab.core.automation.type.ModuleType;
import org.openhab.core.automation.type.Output; import org.openhab.core.automation.type.Output;
import org.openhab.core.automation.type.TriggerType; import org.openhab.core.automation.type.TriggerType;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.i18n.ConfigI18nLocalizationService; import org.openhab.core.config.core.i18n.ConfigI18nLocalizationService;
import org.openhab.core.i18n.TranslationProvider; import org.openhab.core.i18n.TranslationProvider;
@ -109,8 +109,8 @@ public class ModuleTypeI18nServiceImpl implements ModuleTypeI18nService {
@Nullable Locale locale) { @Nullable Locale locale) {
try { try {
return configI18nService return configI18nService
.getLocalizedConfigDescription(bundle, .getLocalizedConfigDescription(bundle, ConfigDescriptionBuilder
new ConfigDescription(new URI(prefix + ":" + uid + ".name"), parameters), locale) .create(new URI(prefix + ":" + uid + ".name")).withParameters(parameters).build(), locale)
.getParameters(); .getParameters();
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
logger.error("Constructed invalid uri '{}:{}.name'", prefix, uid, e); logger.error("Constructed invalid uri '{}:{}.name'", prefix, uid, e);

View File

@ -52,48 +52,16 @@ public class ConfigDescription implements Identifiable<URI> {
private final List<ConfigDescriptionParameterGroup> parameterGroups; private final List<ConfigDescriptionParameterGroup> parameterGroups;
/** /**
* Creates a new instance of this class with the specified parameter. * Creates a new instance of this class with the specified parameters.
*
* @deprecated Use the {@link ConfigDescriptionBuilder} instead.
* *
* @param uri the URI of this description within the {@link ConfigDescriptionRegistry} * @param uri the URI of this description within the {@link ConfigDescriptionRegistry}
* @throws IllegalArgumentException if the URI is null or invalid
*/
@Deprecated
public ConfigDescription(URI uri) throws IllegalArgumentException {
this(uri, null, null);
}
/**
* Creates a new instance of this class with the specified parameters.
*
* @deprecated Use the {@link ConfigDescriptionBuilder} instead.
*
* @param uri the URI of this description within the {@link ConfigDescriptionRegistry} (must neither be null nor
* empty)
* @param parameters the list of configuration parameters that belong to the given URI * @param parameters the list of configuration parameters that belong to the given URI
* (could be null or empty)
* @throws IllegalArgumentException if the URI is null or invalid
*/
@Deprecated
public ConfigDescription(URI uri, List<ConfigDescriptionParameter> parameters) {
this(uri, parameters, null);
}
/**
* Creates a new instance of this class with the specified parameters.
*
* @deprecated Use the {@link ConfigDescriptionBuilder} instead.
*
* @param uri the URI of this description within the {@link ConfigDescriptionRegistry} (must neither be null nor
* empty)
* @param parameters the list of configuration parameters that belong to the given URI
* (could be null or empty)
* @param groups the list of groups associated with the parameters * @param groups the list of groups associated with the parameters
* @throws IllegalArgumentException if the URI is null or invalid * @throws IllegalArgumentException if the URI is null or invalid
* @deprecated Use the {@link ConfigDescriptionBuilder} instead.
*/ */
@Deprecated @Deprecated
public ConfigDescription(@Nullable URI uri, @Nullable List<ConfigDescriptionParameter> parameters, ConfigDescription(URI uri, @Nullable List<ConfigDescriptionParameter> parameters,
@Nullable List<ConfigDescriptionParameterGroup> groups) { @Nullable List<ConfigDescriptionParameterGroup> groups) {
if (uri == null) { if (uri == null) {
throw new IllegalArgumentException("The URI must not be null!"); throw new IllegalArgumentException("The URI must not be null!");
@ -106,25 +74,15 @@ public class ConfigDescription implements Identifiable<URI> {
} }
this.uri = uri; this.uri = uri;
this.parameters = parameters == null ? Collections.emptyList() : Collections.unmodifiableList(parameters);
if (parameters != null) { this.parameterGroups = groups == null ? Collections.emptyList() : Collections.unmodifiableList(groups);
this.parameters = Collections.unmodifiableList(parameters);
} else {
this.parameters = Collections.emptyList();
}
if (groups != null) {
this.parameterGroups = Collections.unmodifiableList(groups);
} else {
this.parameterGroups = Collections.emptyList();
}
} }
/** /**
* Returns the URI of this description within the {@link ConfigDescriptionRegistry}. * Returns the URI of this description within the {@link ConfigDescriptionRegistry}.
* The URI follows the syntax {@code '<scheme>:<token>[:<token>]'} (e.g. {@code "binding:hue:bridge"}). * The URI follows the syntax {@code '<scheme>:<token>[:<token>]'} (e.g. {@code "binding:hue:bridge"}).
* *
* @return the URI of this description (not null) * @return the URI of this description
*/ */
@Override @Override
public URI getUID() { public URI getUID() {
@ -136,7 +94,7 @@ public class ConfigDescription implements Identifiable<URI> {
* <p> * <p>
* The returned list is immutable. * The returned list is immutable.
* *
* @return the corresponding configuration description parameters (not null, could be empty) * @return the corresponding configuration description parameters (could be empty)
*/ */
public List<ConfigDescriptionParameter> getParameters() { public List<ConfigDescriptionParameter> getParameters() {
return parameters; return parameters;
@ -147,7 +105,7 @@ public class ConfigDescription implements Identifiable<URI> {
* parameter as key and the parameter as value. * parameter as key and the parameter as value.
* *
* @return the unmodifiable map of configuration description parameters which uses the name as key and the parameter * @return the unmodifiable map of configuration description parameters which uses the name as key and the parameter
* as value (not null, could be empty) * as value (could be empty)
*/ */
public Map<String, ConfigDescriptionParameter> toParametersMap() { public Map<String, ConfigDescriptionParameter> toParametersMap() {
Map<String, ConfigDescriptionParameter> map = new HashMap<>(); Map<String, ConfigDescriptionParameter> map = new HashMap<>();
@ -162,7 +120,7 @@ public class ConfigDescription implements Identifiable<URI> {
* <p> * <p>
* The returned list is immutable. * The returned list is immutable.
* *
* @return the list of parameter groups parameter (not null, could be empty) * @return the list of parameter groups parameter (could be empty)
*/ */
public List<ConfigDescriptionParameterGroup> getParameterGroups() { public List<ConfigDescriptionParameterGroup> getParameterGroups() {
return parameterGroups; return parameterGroups;

View File

@ -116,20 +116,6 @@ public class ConfigDescriptionParameter {
public ConfigDescriptionParameter() { public ConfigDescriptionParameter() {
} }
/**
* Creates a new instance of this class with the specified parameters.
*
* @param name the name of the configuration parameter (must neither be null
* nor empty)
* @param type the data type of the configuration parameter (must not be
* null)
* @throws IllegalArgumentException if the name is null or empty, or the type is null
*/
public ConfigDescriptionParameter(String name, Type type) throws IllegalArgumentException {
this(name, type, null, null, null, null, false, false, false, null, null, null, null, null, null, null, false,
true, null, null, null, false);
}
/** /**
* Creates a new instance of this class with the specified parameters. * Creates a new instance of this class with the specified parameters.
* *
@ -180,7 +166,9 @@ public class ConfigDescriptionParameter {
* https://openhab.org/documentation/development/bindings/xml-reference.html for the list * https://openhab.org/documentation/development/bindings/xml-reference.html for the list
* of valid units)</li> * of valid units)</li>
* </ul> * </ul>
* @deprecated Use {@link ConfigDescriptionParameterBuilder} instead.
*/ */
@Deprecated
ConfigDescriptionParameter(String name, Type type, BigDecimal minimum, BigDecimal maximum, BigDecimal stepsize, ConfigDescriptionParameter(String name, Type type, BigDecimal minimum, BigDecimal maximum, BigDecimal stepsize,
String pattern, Boolean required, Boolean readOnly, Boolean multiple, String context, String defaultValue, String pattern, Boolean required, Boolean readOnly, Boolean multiple, String context, String defaultValue,
String label, String description, List<ParameterOption> options, List<FilterCriteria> filterCriteria, String label, String description, List<ParameterOption> options, List<FilterCriteria> filterCriteria,

View File

@ -295,6 +295,7 @@ public class ConfigDescriptionParameterBuilder {
* *
* @return the desired result * @return the desired result
*/ */
@SuppressWarnings("deprecation")
public ConfigDescriptionParameter build() throws IllegalArgumentException { public ConfigDescriptionParameter build() throws IllegalArgumentException {
return new ConfigDescriptionParameter(name, type, min, max, step, pattern, required, readOnly, multiple, return new ConfigDescriptionParameter(name, type, min, max, step, pattern, required, readOnly, multiple,
context, defaultValue, label, description, options, filterCriteria, groupName, advanced, limitToOptions, context, defaultValue, label, description, options, filterCriteria, groupName, advanced, limitToOptions,

View File

@ -105,7 +105,7 @@ public class ConfigDescriptionRegistry {
* @return all config descriptions or an empty collection if no config * @return all config descriptions or an empty collection if no config
* description exists * description exists
*/ */
public Collection<ConfigDescription> getConfigDescriptions(Locale locale) { public Collection<ConfigDescription> getConfigDescriptions(@Nullable Locale locale) {
Map<URI, ConfigDescription> configMap = new HashMap<>(); Map<URI, ConfigDescription> configMap = new HashMap<>();
// Loop over all providers // Loop over all providers
@ -126,7 +126,8 @@ public class ConfigDescriptionRegistry {
// And add the combined configuration to the map // And add the combined configuration to the map
configMap.put(configDescription.getUID(), configMap.put(configDescription.getUID(),
new ConfigDescription(configDescription.getUID(), parameters, parameterGroups)); ConfigDescriptionBuilder.create(configDescription.getUID()).withParameters(parameters)
.withParameterGroups(parameterGroups).build());
} else { } else {
// No - Just add the new configuration to the map // No - Just add the new configuration to the map
configMap.put(configDescription.getUID(), configDescription); configMap.put(configDescription.getUID(), configDescription);
@ -169,7 +170,7 @@ public class ConfigDescriptionRegistry {
* @return config description or null if no config description exists for * @return config description or null if no config description exists for
* the given name * the given name
*/ */
public @Nullable ConfigDescription getConfigDescription(URI uri, Locale locale) { public @Nullable ConfigDescription getConfigDescription(URI uri, @Nullable Locale locale) {
List<ConfigDescriptionParameter> parameters = new ArrayList<>(); List<ConfigDescriptionParameter> parameters = new ArrayList<>();
List<ConfigDescriptionParameterGroup> parameterGroups = new ArrayList<>(); List<ConfigDescriptionParameterGroup> parameterGroups = new ArrayList<>();
@ -189,7 +190,8 @@ public class ConfigDescriptionRegistry {
} }
// Return the new configuration description // Return the new configuration description
return new ConfigDescription(uri, parametersWithOptions, parameterGroups); return ConfigDescriptionBuilder.create(uri).withParameters(parametersWithOptions)
.withParameterGroups(parameterGroups).build();
} else { } else {
// Otherwise null // Otherwise null
return null; return null;
@ -207,7 +209,7 @@ public class ConfigDescriptionRegistry {
return ret; return ret;
} }
private boolean fillFromProviders(URI uri, Locale locale, List<ConfigDescriptionParameter> parameters, private boolean fillFromProviders(URI uri, @Nullable Locale locale, List<ConfigDescriptionParameter> parameters,
List<ConfigDescriptionParameterGroup> parameterGroups) { List<ConfigDescriptionParameterGroup> parameterGroups) {
boolean found = false; boolean found = false;
for (ConfigDescriptionProvider configDescriptionProvider : this.configDescriptionProviders) { for (ConfigDescriptionProvider configDescriptionProvider : this.configDescriptionProviders) {
@ -271,20 +273,35 @@ public class ConfigDescriptionRegistry {
if (found) { if (found) {
// Return the new parameter // Return the new parameter
return new ConfigDescriptionParameter(parameter.getName(), parameter.getType(), parameter.getMinimum(), return ConfigDescriptionParameterBuilder.create(parameter.getName(), parameter.getType()) //
parameter.getMaximum(), parameter.getStepSize(), parameter.getPattern(), parameter.isRequired(), .withMinimum(parameter.getMinimum()) //
parameter.isReadOnly(), parameter.isMultiple(), parameter.getContext(), parameter.getDefault(), .withMaximum(parameter.getMaximum()) //
parameter.getLabel(), parameter.getDescription(), options, parameter.getFilterCriteria(), .withStepSize(parameter.getStepSize()) //
parameter.getGroupName(), parameter.isAdvanced(), parameter.getLimitToOptions(), .withPattern(parameter.getPattern()) //
parameter.getMultipleLimit(), parameter.getUnit(), parameter.getUnitLabel(), .withRequired(parameter.isRequired()) //
parameter.isVerifyable()); .withReadOnly(parameter.isReadOnly()) //
.withMultiple(parameter.isMultiple()) //
.withContext(parameter.getContext()) //
.withDefault(parameter.getDefault()) //
.withLabel(parameter.getLabel()) //
.withDescription(parameter.getDescription()) //
.withOptions(options) //
.withFilterCriteria(parameter.getFilterCriteria()) //
.withGroupName(parameter.getGroupName()) //
.withAdvanced(parameter.isAdvanced()) //
.withLimitToOptions(parameter.getLimitToOptions()) //
.withMultipleLimit(parameter.getMultipleLimit()) //
.withUnit(parameter.getUnit()) //
.withUnitLabel(parameter.getUnitLabel()) //
.withVerify(parameter.isVerifyable()) //
.build();
} else { } else {
// Otherwise return the original parameter // Otherwise return the original parameter
return parameter; return parameter;
} }
} }
private boolean fillFromProviders(URI alias, ConfigDescriptionParameter parameter, Locale locale, private boolean fillFromProviders(URI alias, ConfigDescriptionParameter parameter, @Nullable Locale locale,
List<ParameterOption> options) { List<ParameterOption> options) {
boolean found = false; boolean found = false;
for (ConfigOptionProvider configOptionProvider : this.configOptionProviders) { for (ConfigOptionProvider configOptionProvider : this.configOptionProviders) {

View File

@ -13,6 +13,7 @@
package org.openhab.core.config.core; package org.openhab.core.config.core;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -76,7 +77,7 @@ public class ConfigUtil {
LoggerFactory.getLogger(ConfigUtil.class).warn( LoggerFactory.getLogger(ConfigUtil.class).warn(
"Default value for parameter '{}' of type 'INTEGER' seems not to be an integer value: {}", "Default value for parameter '{}' of type 'INTEGER' seems not to be an integer value: {}",
parameterName, defaultValue); parameterName, defaultValue);
return value.setScale(0, BigDecimal.ROUND_DOWN); return value.setScale(0, RoundingMode.DOWN);
} }
return value; return value;
case DECIMAL: case DECIMAL:

View File

@ -20,6 +20,7 @@ import java.util.Locale;
import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameterGroup; import org.openhab.core.config.core.ConfigDescriptionParameterGroup;
@ -83,8 +84,9 @@ public class ConfigI18nLocalizationService {
bundle, configDescription, configDescriptionParameterGroup, locale); bundle, configDescription, configDescriptionParameterGroup, locale);
localizedConfigDescriptionGroups.add(localizedConfigDescriptionGroup); localizedConfigDescriptionGroups.add(localizedConfigDescriptionGroup);
} }
return new ConfigDescription(configDescription.getUID(), localizedConfigDescriptionParameters, return ConfigDescriptionBuilder.create(configDescription.getUID())
localizedConfigDescriptionGroups); .withParameters(localizedConfigDescriptionParameters)
.withParameterGroups(localizedConfigDescriptionGroups).build();
} }
/** /**

View File

@ -14,7 +14,6 @@ package org.openhab.core.config.core.internal.metadata;
import java.net.URI; import java.net.URI;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -23,6 +22,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
@ -121,7 +121,7 @@ public class MetadataConfigDescriptionProviderImpl implements ConfigDescriptionP
builder.withDescription(description != null ? description : namespace); builder.withDescription(description != null ? description : namespace);
ConfigDescriptionParameter parameter = builder.build(); ConfigDescriptionParameter parameter = builder.build();
return new ConfigDescription(uri, Collections.singletonList(parameter)); return ConfigDescriptionBuilder.create(uri).withParameter(parameter).build();
} }
private @Nullable ConfigDescription createParamConfigDescription(MetadataConfigDescriptionProvider provider, private @Nullable ConfigDescription createParamConfigDescription(MetadataConfigDescriptionProvider provider,
@ -132,7 +132,7 @@ public class MetadataConfigDescriptionProviderImpl implements ConfigDescriptionP
if (parameters == null || parameters.isEmpty()) { if (parameters == null || parameters.isEmpty()) {
return null; return null;
} }
return new ConfigDescription(uri, parameters); return ConfigDescriptionBuilder.create(uri).withParameters(parameters).build();
} }
@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)

View File

@ -51,7 +51,7 @@ public class ConfigDescriptionParameterBuilderTest {
String groupName = "groupName"; String groupName = "groupName";
boolean advanced = false; boolean advanced = false;
boolean limitToOptions = true; boolean limitToOptions = true;
Integer multipleLimit = new Integer(17); Integer multipleLimit = Integer.valueOf(17);
//@formatter:off //@formatter:off
ConfigDescriptionParameter param = ConfigDescriptionParameterBuilder.create(name, type) ConfigDescriptionParameter param = ConfigDescriptionParameterBuilder.create(name, type)
@ -152,8 +152,8 @@ public class ConfigDescriptionParameterBuilderTest {
assertFalse(param.isMultiple()); assertFalse(param.isMultiple());
assertFalse(param.isAdvanced()); assertFalse(param.isAdvanced());
assertTrue(param.getLimitToOptions()); assertTrue(param.getLimitToOptions());
ConfigDescriptionParameter param2 = new ConfigDescriptionParameter("Dummy", Type.BOOLEAN, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); ConfigDescriptionParameter param2 = ConfigDescriptionParameterBuilder.create("Dummy", Type.BOOLEAN).build();
assertFalse(param2.isRequired()); assertFalse(param2.isRequired());
assertFalse(param2.isReadOnly()); assertFalse(param2.isReadOnly());
assertFalse(param2.isMultiple()); assertFalse(param2.isMultiple());

View File

@ -61,33 +61,30 @@ public class ConfigDescriptionRegistryTest extends JavaTest {
uriAliases = new URI("config:Aliased"); uriAliases = new URI("config:Aliased");
configDescriptionRegistry = new ConfigDescriptionRegistry(); configDescriptionRegistry = new ConfigDescriptionRegistry();
ConfigDescriptionParameter param1 = new ConfigDescriptionParameter("param1", ConfigDescriptionParameter param1 = ConfigDescriptionParameterBuilder
ConfigDescriptionParameter.Type.INTEGER); .create("param1", ConfigDescriptionParameter.Type.INTEGER).build();
List<ConfigDescriptionParameter> pList1 = new ArrayList<>();
pList1.add(param1);
configDescription = new ConfigDescription(uriDummy, pList1); configDescription = ConfigDescriptionBuilder.create(uriDummy).withParameter(param1).build();
when(configDescriptionProviderMock.getConfigDescriptions(any())) when(configDescriptionProviderMock.getConfigDescriptions(any()))
.thenReturn(Collections.singleton(configDescription)); .thenReturn(Collections.singleton(configDescription));
when(configDescriptionProviderMock.getConfigDescription(eq(uriDummy), any())).thenReturn(configDescription); when(configDescriptionProviderMock.getConfigDescription(eq(uriDummy), any())).thenReturn(configDescription);
configDescription1 = new ConfigDescription(uriDummy1); configDescription1 = ConfigDescriptionBuilder.create(uriDummy1).build();
when(configDescriptionProviderMock1.getConfigDescriptions(any())) when(configDescriptionProviderMock1.getConfigDescriptions(any()))
.thenReturn(Collections.singleton(configDescription1)); .thenReturn(Collections.singleton(configDescription1));
when(configDescriptionProviderMock1.getConfigDescription(eq(uriDummy1), any())).thenReturn(configDescription1); when(configDescriptionProviderMock1.getConfigDescription(eq(uriDummy1), any())).thenReturn(configDescription1);
configDescriptionAliased = new ConfigDescription(uriAliases, Collections configDescriptionAliased = ConfigDescriptionBuilder.create(uriAliases).withParameter(
.singletonList(new ConfigDescriptionParameter("instanceId", ConfigDescriptionParameter.Type.INTEGER))); ConfigDescriptionParameterBuilder.create("instanceId", ConfigDescriptionParameter.Type.INTEGER).build())
.build();
when(configDescriptionProviderAliased.getConfigDescriptions(any())) when(configDescriptionProviderAliased.getConfigDescriptions(any()))
.thenReturn(Collections.singleton(configDescriptionAliased)); .thenReturn(Collections.singleton(configDescriptionAliased));
when(configDescriptionProviderAliased.getConfigDescription(eq(uriAliases), any())) when(configDescriptionProviderAliased.getConfigDescription(eq(uriAliases), any()))
.thenReturn(configDescriptionAliased); .thenReturn(configDescriptionAliased);
ConfigDescriptionParameter param2 = new ConfigDescriptionParameter("param2", ConfigDescriptionParameter param2 = ConfigDescriptionParameterBuilder
ConfigDescriptionParameter.Type.INTEGER); .create("param2", ConfigDescriptionParameter.Type.INTEGER).build();
List<ConfigDescriptionParameter> pList2 = new ArrayList<>(); configDescription2 = ConfigDescriptionBuilder.create(uriDummy).withParameter(param2).build();
pList2.add(param2);
configDescription2 = new ConfigDescription(uriDummy, pList2);
when(configDescriptionProviderMock2.getConfigDescriptions(any())) when(configDescriptionProviderMock2.getConfigDescriptions(any()))
.thenReturn(Collections.singleton(configDescription2)); .thenReturn(Collections.singleton(configDescription2));
when(configDescriptionProviderMock2.getConfigDescription(eq(uriDummy), any())).thenReturn(configDescription2); when(configDescriptionProviderMock2.getConfigDescription(eq(uriDummy), any())).thenReturn(configDescription2);

View File

@ -108,8 +108,8 @@ public class ConfigUtilTest {
@Test @Test
public void verifyApplyDefaultConfigurationReturnsNullIfNotSet() { public void verifyApplyDefaultConfigurationReturnsNullIfNotSet() {
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
ConfigDescription configDescription = new ConfigDescription(configUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configUri)
Collections.singletonList(configDescriptionParameterBuilder2.build())); .withParameter(configDescriptionParameterBuilder2.build()).build();
ConfigUtil.applyDefaultConfiguration(configuration, configDescription); ConfigUtil.applyDefaultConfiguration(configuration, configDescription);
assertThat(configuration.get("p2"), is(nullValue())); assertThat(configuration.get("p2"), is(nullValue()));
@ -120,8 +120,8 @@ public class ConfigUtilTest {
configDescriptionParameterBuilder1.withDefault("2.5"); configDescriptionParameterBuilder1.withDefault("2.5");
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
ConfigDescription configDescription = new ConfigDescription(configUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configUri)
Collections.singletonList(configDescriptionParameterBuilder1.build())); .withParameter(configDescriptionParameterBuilder1.build()).build();
ConfigUtil.applyDefaultConfiguration(configuration, configDescription); ConfigUtil.applyDefaultConfiguration(configuration, configDescription);
verifyValuesOfConfiguration(configuration.get("p1"), 1, Collections.singletonList(new BigDecimal("2.5"))); verifyValuesOfConfiguration(configuration.get("p1"), 1, Collections.singletonList(new BigDecimal("2.5")));
@ -132,8 +132,8 @@ public class ConfigUtilTest {
configDescriptionParameterBuilder1.withDefault("2.3,2.4,2.5"); configDescriptionParameterBuilder1.withDefault("2.3,2.4,2.5");
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
ConfigDescription configDescription = new ConfigDescription(configUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configUri)
Collections.singletonList(configDescriptionParameterBuilder1.build())); .withParameter(configDescriptionParameterBuilder1.build()).build();
ConfigUtil.applyDefaultConfiguration(configuration, configDescription); ConfigUtil.applyDefaultConfiguration(configuration, configDescription);
verifyValuesOfConfiguration(configuration.get("p1"), 3, verifyValuesOfConfiguration(configuration.get("p1"), 3,
@ -145,8 +145,8 @@ public class ConfigUtilTest {
configDescriptionParameterBuilder1.withDefault("2.3,2.4,foo,2.5"); configDescriptionParameterBuilder1.withDefault("2.3,2.4,foo,2.5");
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
ConfigDescription configDescription = new ConfigDescription(configUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configUri)
Collections.singletonList(configDescriptionParameterBuilder1.build())); .withParameter(configDescriptionParameterBuilder1.build()).build();
ConfigUtil.applyDefaultConfiguration(configuration, configDescription); ConfigUtil.applyDefaultConfiguration(configuration, configDescription);
verifyValuesOfConfiguration(configuration.get("p1"), 3, verifyValuesOfConfiguration(configuration.get("p1"), 3,
@ -158,8 +158,8 @@ public class ConfigUtilTest {
configDescriptionParameterBuilder2.withDefault("first value, second value ,third value,,,"); configDescriptionParameterBuilder2.withDefault("first value, second value ,third value,,,");
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
ConfigDescription configDescription = new ConfigDescription(configUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configUri)
Collections.singletonList(configDescriptionParameterBuilder2.build())); .withParameter(configDescriptionParameterBuilder2.build()).build();
ConfigUtil.applyDefaultConfiguration(configuration, configDescription); ConfigUtil.applyDefaultConfiguration(configuration, configDescription);
verifyValuesOfConfiguration(configuration.get("p2"), 3, verifyValuesOfConfiguration(configuration.get("p2"), 3,
@ -175,11 +175,11 @@ public class ConfigUtilTest {
@Test @Test
public void firstDesciptionWinsForNormalization() throws URISyntaxException { public void firstDesciptionWinsForNormalization() throws URISyntaxException {
ConfigDescription configDescriptionInteger = new ConfigDescription(new URI("thing:fooThing"), ConfigDescription configDescriptionInteger = ConfigDescriptionBuilder.create(new URI("thing:fooThing"))
Arrays.asList(new ConfigDescriptionParameter("foo", INTEGER))); .withParameter(ConfigDescriptionParameterBuilder.create("foo", INTEGER).build()).build();
ConfigDescription configDescriptionString = new ConfigDescription(new URI("thingType:fooThing"), ConfigDescription configDescriptionString = ConfigDescriptionBuilder.create(new URI("thingType:fooThing"))
Arrays.asList(new ConfigDescriptionParameter("foo", TEXT))); .withParameter(ConfigDescriptionParameterBuilder.create("foo", TEXT).build()).build();
assertThat( assertThat(
ConfigUtil.normalizeTypes(Collections.singletonMap("foo", "1"), Arrays.asList(configDescriptionInteger)) ConfigUtil.normalizeTypes(Collections.singletonMap("foo", "1"), Arrays.asList(configDescriptionInteger))

View File

@ -23,7 +23,7 @@ import java.util.stream.Stream;
import org.junit.Test; import org.junit.Test;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
/** /**
* @author Simon Kaufmann - Initial contribution * @author Simon Kaufmann - Initial contribution
@ -33,15 +33,16 @@ public class NormalizerTest {
@Test @Test
public void testBooleanNormalizer() { public void testBooleanNormalizer() {
Normalizer normalizer = NormalizerFactory.getNormalizer(new ConfigDescriptionParameter("test", Type.BOOLEAN)); Normalizer normalizer = NormalizerFactory.getNormalizer(
ConfigDescriptionParameterBuilder.create("test", ConfigDescriptionParameter.Type.BOOLEAN).build());
assertThat(normalizer.normalize(null), is(nullValue())); assertThat(normalizer.normalize(null), is(nullValue()));
assertThat(normalizer.normalize(true), is(equalTo(true))); assertThat(normalizer.normalize(true), is(equalTo(true)));
assertThat(normalizer.normalize(1), is(equalTo(true))); assertThat(normalizer.normalize(1), is(equalTo(true)));
assertThat(normalizer.normalize(false), is(equalTo(false))); assertThat(normalizer.normalize(false), is(equalTo(false)));
assertThat(normalizer.normalize(0), is(equalTo(false))); assertThat(normalizer.normalize(0), is(equalTo(false)));
assertThat(normalizer.normalize(new Boolean(true)), is(equalTo(true))); assertThat(normalizer.normalize(Boolean.TRUE), is(equalTo(true)));
assertThat(normalizer.normalize(new Boolean(false)), is(equalTo(false))); assertThat(normalizer.normalize(Boolean.FALSE), is(equalTo(false)));
assertThat(normalizer.normalize("true"), is(equalTo(true))); assertThat(normalizer.normalize("true"), is(equalTo(true)));
assertThat(normalizer.normalize("false"), is(equalTo(false))); assertThat(normalizer.normalize("false"), is(equalTo(false)));
assertThat(normalizer.normalize("yes"), is(equalTo(true))); assertThat(normalizer.normalize("yes"), is(equalTo(true)));
@ -67,7 +68,8 @@ public class NormalizerTest {
@Test @Test
public void testIntNormalizer() { public void testIntNormalizer() {
Normalizer normalizer = NormalizerFactory.getNormalizer(new ConfigDescriptionParameter("test", Type.INTEGER)); Normalizer normalizer = NormalizerFactory.getNormalizer(
ConfigDescriptionParameterBuilder.create("test", ConfigDescriptionParameter.Type.INTEGER).build());
assertThat(normalizer.normalize(null), is(nullValue())); assertThat(normalizer.normalize(null), is(nullValue()));
assertThat(normalizer.normalize(42), is(equalTo(new BigDecimal(42)))); assertThat(normalizer.normalize(42), is(equalTo(new BigDecimal(42))));
@ -93,7 +95,8 @@ public class NormalizerTest {
@Test @Test
public void testDecimalNormalizer() { public void testDecimalNormalizer() {
Normalizer normalizer = NormalizerFactory.getNormalizer(new ConfigDescriptionParameter("test", Type.DECIMAL)); Normalizer normalizer = NormalizerFactory.getNormalizer(
ConfigDescriptionParameterBuilder.create("test", ConfigDescriptionParameter.Type.DECIMAL).build());
assertThat(normalizer.normalize(null), is(nullValue())); assertThat(normalizer.normalize(null), is(nullValue()));
assertThat(normalizer.normalize(42), is(equalTo(new BigDecimal("42.0")))); assertThat(normalizer.normalize(42), is(equalTo(new BigDecimal("42.0"))));
@ -121,7 +124,8 @@ public class NormalizerTest {
@Test @Test
public void testTextNormalizer() { public void testTextNormalizer() {
Normalizer normalizer = NormalizerFactory.getNormalizer(new ConfigDescriptionParameter("test", Type.TEXT)); Normalizer normalizer = NormalizerFactory.getNormalizer(
ConfigDescriptionParameterBuilder.create("test", ConfigDescriptionParameter.Type.TEXT).build());
assertThat(normalizer.normalize(null), is(nullValue())); assertThat(normalizer.normalize(null), is(nullValue()));
assertThat(normalizer.normalize(""), is(equalTo(""))); assertThat(normalizer.normalize(""), is(equalTo("")));
@ -142,17 +146,8 @@ public class NormalizerTest {
@Test @Test
public void testListNormalizer() { public void testListNormalizer() {
Normalizer normalizer = NormalizerFactory.getNormalizer(new ConfigDescriptionParameter() { Normalizer normalizer = NormalizerFactory.getNormalizer(ConfigDescriptionParameterBuilder
@Override .create("test", ConfigDescriptionParameter.Type.BOOLEAN).withMultiple(true).build());
public Type getType() {
return Type.BOOLEAN;
};
@Override
public Boolean isMultiple() {
return true;
};
});
assertThat(normalizer.normalize(null), is(nullValue())); assertThat(normalizer.normalize(null), is(nullValue()));

View File

@ -33,6 +33,7 @@ import org.junit.Test;
import org.mockito.invocation.InvocationOnMock; import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
@ -135,11 +136,13 @@ public class ConfigDescriptionValidatorTest {
} }
} }
private static final ConfigDescription CONFIG_DESCRIPTION = new ConfigDescription(CONFIG_DESCRIPTION_URI, private static final ConfigDescription CONFIG_DESCRIPTION = ConfigDescriptionBuilder.create(CONFIG_DESCRIPTION_URI)
Stream.of(BOOL_PARAM, BOOL_REQUIRED_PARAM, TXT_PARAM, TXT_REQUIRED_PARAM, TXT_MIN_PARAM, TXT_MAX_PARAM, .withParameters(Stream
TXT_PATTERN_PARAM, TXT_MAX_PATTERN_PARAM, INT_PARAM, INT_REQUIRED_PARAM, INT_MIN_PARAM, .of(BOOL_PARAM, BOOL_REQUIRED_PARAM, TXT_PARAM, TXT_REQUIRED_PARAM, TXT_MIN_PARAM, TXT_MAX_PARAM,
INT_MAX_PARAM, DECIMAL_PARAM, DECIMAL_REQUIRED_PARAM, DECIMAL_MIN_PARAM, DECIMAL_MAX_PARAM) TXT_PATTERN_PARAM, TXT_MAX_PATTERN_PARAM, INT_PARAM, INT_REQUIRED_PARAM, INT_MIN_PARAM,
.collect(toList())); INT_MAX_PARAM, DECIMAL_PARAM, DECIMAL_REQUIRED_PARAM, DECIMAL_MIN_PARAM, DECIMAL_MAX_PARAM)
.collect(toList()))
.build();
private Map<String, Object> params; private Map<String, Object> params;
private ConfigDescriptionValidatorImpl configDescriptionValidator; private ConfigDescriptionValidatorImpl configDescriptionValidator;
@ -499,6 +502,7 @@ public class ConfigDescriptionValidatorTest {
configDescriptionValidator.validate(params, CONFIG_DESCRIPTION_URI); configDescriptionValidator.validate(params, CONFIG_DESCRIPTION_URI);
} }
@SuppressWarnings("unchecked")
private static List<ConfigValidationMessage> getConfigValidationMessages(ConfigValidationException cve) { private static List<ConfigValidationMessage> getConfigValidationMessages(ConfigValidationException cve) {
try { try {
Field field = cve.getClass().getDeclaredField("configValidationMessages"); Field field = cve.getClass().getDeclaredField("configValidationMessages");

View File

@ -30,7 +30,7 @@ import org.junit.Test;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionRegistry; import org.openhab.core.config.core.ConfigDescriptionRegistry;
@ -203,8 +203,8 @@ public class PersistentInboxTest {
URI configDescriptionURI = new URI("thing-type:test:test"); URI configDescriptionURI = new URI("thing-type:test:test");
ThingType thingType = ThingTypeBuilder.instance(THING_TYPE_UID, "Test") ThingType thingType = ThingTypeBuilder.instance(THING_TYPE_UID, "Test")
.withConfigDescriptionURI(configDescriptionURI).build(); .withConfigDescriptionURI(configDescriptionURI).build();
ConfigDescriptionParameter param = ConfigDescriptionParameterBuilder.create(paramName, type).build(); ConfigDescription configDesc = ConfigDescriptionBuilder.create(configDescriptionURI)
ConfigDescription configDesc = new ConfigDescription(configDescriptionURI, Collections.singletonList(param)); .withParameter(ConfigDescriptionParameterBuilder.create(paramName, type).build()).build();
when(thingTypeRegistry.getThingType(THING_TYPE_UID)).thenReturn(thingType); when(thingTypeRegistry.getThingType(THING_TYPE_UID)).thenReturn(thingType);
when(configDescriptionRegistry.getConfigDescription(eq(configDescriptionURI))).thenReturn(configDesc); when(configDescriptionRegistry.getConfigDescription(eq(configDescriptionURI))).thenReturn(configDesc);

View File

@ -19,6 +19,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterGroup; import org.openhab.core.config.core.ConfigDescriptionParameterGroup;
import org.openhab.core.config.xml.util.ConverterAssertion; import org.openhab.core.config.xml.util.ConverterAssertion;
@ -98,9 +99,7 @@ public class ConfigDescriptionConverter extends GenericUnmarshaller<ConfigDescri
ConverterAssertion.assertEndOfType(reader); ConverterAssertion.assertEndOfType(reader);
// create object return ConfigDescriptionBuilder.create(uri).withParameters(configDescriptionParams)
configDescription = new ConfigDescription(uri, configDescriptionParams, configDescriptionGroups); .withParameterGroups(configDescriptionGroups).build();
return configDescription;
} }
} }

View File

@ -81,7 +81,7 @@ public class ConfigDescriptionParameterConverter extends GenericUnmarshaller<Con
if (val == null) { if (val == null) {
return null; return null;
} }
return new Boolean(val); return Boolean.valueOf(val);
} }
private Boolean falseIfNull(Boolean b) { private Boolean falseIfNull(Boolean b) {

View File

@ -21,6 +21,7 @@ import java.util.Arrays;
import org.junit.Test; import org.junit.Test;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
@ -40,8 +41,8 @@ public class EnrichedConfigDescriptionDTOMapperTest {
public void testThatDefaultValuesAreEmptyIfMultipleIsTrue() { public void testThatDefaultValuesAreEmptyIfMultipleIsTrue() {
ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder
.create(CONFIG_PARAMETER_NAME, Type.TEXT).withMultiple(true).build(); .create(CONFIG_PARAMETER_NAME, Type.TEXT).withMultiple(true).build();
ConfigDescription configDescription = new ConfigDescription(CONFIG_URI, ConfigDescription configDescription = ConfigDescriptionBuilder.create(CONFIG_URI)
Arrays.asList(configDescriptionParameter)); .withParameter(configDescriptionParameter).build();
ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription); ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription);
assertThat(cddto.parameters, hasSize(1)); assertThat(cddto.parameters, hasSize(1));
@ -57,8 +58,8 @@ public class EnrichedConfigDescriptionDTOMapperTest {
public void testThatDefaultValueIsNotAList() { public void testThatDefaultValueIsNotAList() {
ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder
.create(CONFIG_PARAMETER_NAME, Type.TEXT).withDefault(CONFIG_PARAMETER_DEFAULT_VALUE).build(); .create(CONFIG_PARAMETER_NAME, Type.TEXT).withDefault(CONFIG_PARAMETER_DEFAULT_VALUE).build();
ConfigDescription configDescription = new ConfigDescription(CONFIG_URI, ConfigDescription configDescription = ConfigDescriptionBuilder.create(CONFIG_URI)
Arrays.asList(configDescriptionParameter)); .withParameter(configDescriptionParameter).build();
ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription); ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription);
assertThat(cddto.parameters, hasSize(1)); assertThat(cddto.parameters, hasSize(1));
@ -76,8 +77,8 @@ public class EnrichedConfigDescriptionDTOMapperTest {
ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder ConfigDescriptionParameter configDescriptionParameter = ConfigDescriptionParameterBuilder
.create(CONFIG_PARAMETER_NAME, Type.TEXT).withDefault(CONFIG_PARAMETER_DEFAULT_VALUE).withMultiple(true) .create(CONFIG_PARAMETER_NAME, Type.TEXT).withDefault(CONFIG_PARAMETER_DEFAULT_VALUE).withMultiple(true)
.build(); .build();
ConfigDescription configDescription = new ConfigDescription(CONFIG_URI, ConfigDescription configDescription = ConfigDescriptionBuilder.create(CONFIG_URI)
Arrays.asList(configDescriptionParameter)); .withParameter(configDescriptionParameter).build();
ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription); ConfigDescriptionDTO cddto = EnrichedConfigDescriptionDTOMapper.map(configDescription);
assertThat(cddto.parameters, hasSize(1)); assertThat(cddto.parameters, hasSize(1));

View File

@ -20,6 +20,7 @@ import java.util.Locale;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
@ -84,7 +85,7 @@ public class ItemChannelLinkConfigDescriptionProvider implements ConfigDescripti
ConfigDescriptionParameter paramProfile = ConfigDescriptionParameterBuilder.create(PARAM_PROFILE, Type.TEXT) ConfigDescriptionParameter paramProfile = ConfigDescriptionParameterBuilder.create(PARAM_PROFILE, Type.TEXT)
.withLabel("Profile").withDescription("the profile to use").withRequired(false) .withLabel("Profile").withDescription("the profile to use").withRequired(false)
.withLimitToOptions(true).withOptions(getOptions(link, item, channel, locale)).build(); .withLimitToOptions(true).withOptions(getOptions(link, item, channel, locale)).build();
return new ConfigDescription(uri, Collections.singletonList(paramProfile)); return ConfigDescriptionBuilder.create(uri).withParameter(paramProfile).build();
} }
return null; return null;
} }

View File

@ -61,6 +61,7 @@ import org.openhab.core.automation.util.ModuleBuilder;
import org.openhab.core.automation.util.RuleBuilder; import org.openhab.core.automation.util.RuleBuilder;
import org.openhab.core.common.registry.ProviderChangeListener; import org.openhab.core.common.registry.ProviderChangeListener;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.Configuration; import org.openhab.core.config.core.Configuration;
import org.openhab.core.events.Event; import org.openhab.core.events.Event;
import org.openhab.core.events.EventFilter; import org.openhab.core.events.EventFilter;
@ -810,8 +811,8 @@ public class AutomationIntegrationTest extends JavaOSGiTest {
List<Trigger> templateTriggers = Collections.emptyList(); List<Trigger> templateTriggers = Collections.emptyList();
List<Condition> templateConditions = Collections.emptyList(); List<Condition> templateConditions = Collections.emptyList();
List<Action> templateActions = Collections.emptyList(); List<Action> templateActions = Collections.emptyList();
List<ConfigDescriptionParameter> templateConfigDescriptionParameters = Collections List<ConfigDescriptionParameter> templateConfigDescriptionParameters = Collections.singletonList(
.singletonList(new ConfigDescriptionParameter("param", ConfigDescriptionParameter.Type.TEXT)); ConfigDescriptionParameterBuilder.create("param", ConfigDescriptionParameter.Type.TEXT).build());
RuleTemplate template = new RuleTemplate(templateUID, "Test template Label", "Test template description", tags, RuleTemplate template = new RuleTemplate(templateUID, "Test template Label", "Test template description", tags,
templateTriggers, templateConditions, templateActions, templateConfigDescriptionParameters, templateTriggers, templateConditions, templateActions, templateConfigDescriptionParameters,
Visibility.VISIBLE); Visibility.VISIBLE);

View File

@ -12,14 +12,16 @@
*/ */
package org.openhab.core.config.core; package org.openhab.core.config.core;
import static java.util.Collections.singleton;
import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import org.junit.Before; import org.junit.Before;
@ -35,24 +37,22 @@ import org.openhab.core.test.java.JavaOSGiTest;
public class ConfigOptionRegistryOSGiTest extends JavaOSGiTest { public class ConfigOptionRegistryOSGiTest extends JavaOSGiTest {
private ConfigDescriptionRegistry configDescriptionRegistry; private ConfigDescriptionRegistry configDescriptionRegistry;
private ConfigDescription configDescription;
private ConfigDescriptionProvider configDescriptionProviderMock; private ConfigDescriptionProvider configDescriptionProviderMock;
private ConfigOptionProvider configOptionsProviderMock; private ConfigOptionProvider configOptionsProviderMock;
private ParameterOption parameterOption; private URI dummyURI;
@Before @Before
public void setUp() throws Exception { public void setUp() throws URISyntaxException {
// Register config registry // Register config registry
configDescriptionRegistry = getService(ConfigDescriptionRegistry.class); configDescriptionRegistry = getService(ConfigDescriptionRegistry.class);
ConfigDescriptionParameter parm1 = new ConfigDescriptionParameter("Parm1", dummyURI = new URI("config:Dummy");
ConfigDescriptionParameter.Type.INTEGER); ConfigDescriptionParameter param1 = ConfigDescriptionParameterBuilder
List<ConfigDescriptionParameter> pList1 = new ArrayList<>(); .create("Param1", ConfigDescriptionParameter.Type.INTEGER).build();
pList1.add(parm1); ConfigDescription configDescription = ConfigDescriptionBuilder.create(dummyURI).withParameter(param1).build();
configDescription = new ConfigDescription(new URI("config:Dummy"), pList1);
// Create config option list // Create config option list
List<ParameterOption> oList1 = new ArrayList<>(); List<ParameterOption> oList1 = new ArrayList<>();
parameterOption = new ParameterOption("Option1", "Option1"); ParameterOption parameterOption = new ParameterOption("Option1", "Option1");
oList1.add(parameterOption); oList1.add(parameterOption);
parameterOption = new ParameterOption("Option2", "Option2"); parameterOption = new ParameterOption("Option2", "Option2");
oList1.add(parameterOption); oList1.add(parameterOption);
@ -61,31 +61,33 @@ public class ConfigOptionRegistryOSGiTest extends JavaOSGiTest {
when(configOptionsProviderMock.getParameterOptions(any(), any(), any(), any())).thenReturn(oList1); when(configOptionsProviderMock.getParameterOptions(any(), any(), any(), any())).thenReturn(oList1);
configDescriptionProviderMock = mock(ConfigDescriptionProvider.class); configDescriptionProviderMock = mock(ConfigDescriptionProvider.class);
when(configDescriptionProviderMock.getConfigDescriptions(any())).thenReturn(singleton(configDescription)); when(configDescriptionProviderMock.getConfigDescriptions(any()))
.thenReturn(Collections.singleton(configDescription));
when(configDescriptionProviderMock.getConfigDescription(any(), any())).thenReturn(configDescription); when(configDescriptionProviderMock.getConfigDescription(any(), any())).thenReturn(configDescription);
} }
@Test @Test
public void assertConfigDescriptionRegistryMergesOptions() throws Exception { public void assertConfigDescriptionRegistryMergesOptions() {
assertThat("Registery is empty to start", configDescriptionRegistry.getConfigDescriptions().size(), is(0)); assertThat("Registery is empty to start", configDescriptionRegistry.getConfigDescriptions(), hasSize(0));
configDescriptionRegistry.addConfigDescriptionProvider(configDescriptionProviderMock); configDescriptionRegistry.addConfigDescriptionProvider(configDescriptionProviderMock);
assertThat("Config description added ok", configDescriptionRegistry.getConfigDescriptions().size(), is(1)); assertThat("Config description added ok", configDescriptionRegistry.getConfigDescriptions(), hasSize(1));
configDescriptionRegistry.addConfigOptionProvider(configOptionsProviderMock); configDescriptionRegistry.addConfigOptionProvider(configOptionsProviderMock);
ConfigDescription configDescriptions = configDescriptionRegistry.getConfigDescription(new URI("config:Dummy")); ConfigDescription configDescriptions = configDescriptionRegistry.getConfigDescription(dummyURI);
assertThat("Config is found", configDescriptions.getUID(), is(equalTo(new URI("config:Dummy")))); assertThat(configDescriptions, is(not(nullValue())));
assertThat("Config is found", configDescriptions.getUID(), is(dummyURI));
assertThat("Config contains parameter", configDescriptions.getParameters().size(), is(1)); assertThat("Config contains parameter", configDescriptions.getParameters(), hasSize(1));
assertThat("Config parameter found", configDescriptions.getParameters().get(0).getName(), is(equalTo("Parm1"))); assertThat("Config parameter found", configDescriptions.getParameters().get(0).getName(),
assertThat("Config parameter contains options", configDescriptions.getParameters().get(0).getOptions().size(), is(equalTo("Param1")));
is(2)); assertThat("Config parameter contains options", configDescriptions.getParameters().get(0).getOptions(),
hasSize(2));
configDescriptionRegistry.removeConfigOptionProvider(configOptionsProviderMock); configDescriptionRegistry.removeConfigOptionProvider(configOptionsProviderMock);
configDescriptionRegistry.removeConfigDescriptionProvider(configDescriptionProviderMock); configDescriptionRegistry.removeConfigDescriptionProvider(configDescriptionProviderMock);
assertThat("Description registery is empty to finish", configDescriptionRegistry.getConfigDescriptions().size(), assertThat("Description registery is empty to finish", configDescriptionRegistry.getConfigDescriptions(),
is(0)); hasSize(0));
} }
} }

View File

@ -42,8 +42,8 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder; import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
import org.openhab.core.config.core.ConfigDescriptionRegistry; import org.openhab.core.config.core.ConfigDescriptionRegistry;
import org.openhab.core.config.core.Configuration; import org.openhab.core.config.core.Configuration;
@ -154,9 +154,9 @@ public class InboxOSGiTest extends JavaOSGiTest {
private final ThingType testThingType = ThingTypeBuilder.instance(testTypeUID, "label") private final ThingType testThingType = ThingTypeBuilder.instance(testTypeUID, "label")
.withConfigDescriptionURI(testURI).build(); .withConfigDescriptionURI(testURI).build();
private final ConfigDescription testConfigDescription = ConfigDescriptionBuilder.create(testURI) private final ConfigDescription testConfigDescription = ConfigDescriptionBuilder.create(testURI)
.withParameters(Stream .withParameters(Stream.of(
.of(new ConfigDescriptionParameter(discoveryResultPropertyKeys.get(0), Type.TEXT), ConfigDescriptionParameterBuilder.create(discoveryResultPropertyKeys.get(0), Type.TEXT).build(),
new ConfigDescriptionParameter(discoveryResultPropertyKeys.get(1), Type.INTEGER)) ConfigDescriptionParameterBuilder.create(discoveryResultPropertyKeys.get(1), Type.INTEGER).build())
.collect(toList())) .collect(toList()))
.build(); .build();
private final String[] keysInConfigDescription = new String[] { discoveryResultPropertyKeys.get(0), private final String[] keysInConfigDescription = new String[] { discoveryResultPropertyKeys.get(0),
@ -868,9 +868,9 @@ public class InboxOSGiTest extends JavaOSGiTest {
discoveryResultProperties.keySet().forEach(key -> { discoveryResultProperties.keySet().forEach(key -> {
String thingProperty = addedThing.getProperties().get(key); String thingProperty = addedThing.getProperties().get(key);
String descResultParam = String.valueOf(discoveryResultProperties.get(key)); String descResultParam = String.valueOf(discoveryResultProperties.get(key));
assertFalse(thingProperty == null); assertThat(thingProperty, is(notNullValue()));
assertFalse(descResultParam == null); assertThat(descResultParam, is(notNullValue()));
assertTrue(thingProperty.equals(descResultParam)); assertThat(thingProperty, is(descResultParam));
}); });
} }

View File

@ -29,6 +29,7 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
@ -87,13 +88,14 @@ public class GenericThingProviderTest3 extends JavaOSGiTest {
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes())); modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
registerService(dumbThingHandlerFactory, ThingHandlerFactory.class.getName()); registerService(dumbThingHandlerFactory, ThingHandlerFactory.class.getName());
ConfigDescription configDescription = new ConfigDescription(new URI("test:test"), ConfigDescription configDescription = ConfigDescriptionBuilder.create(new URI("test:test"))
Stream.of( .withParameters(Stream.of(
ConfigDescriptionParameterBuilder.create("testAdditional", ConfigDescriptionParameter.Type.TEXT) ConfigDescriptionParameterBuilder.create("testAdditional", ConfigDescriptionParameter.Type.TEXT)
.withRequired(false).withDefault("hello world").build(), .withRequired(false).withDefault("hello world").build(),
ConfigDescriptionParameterBuilder.create("testConf", ConfigDescriptionParameter.Type.TEXT) ConfigDescriptionParameterBuilder.create("testConf", ConfigDescriptionParameter.Type.TEXT)
.withRequired(false).withDefault("bar").build()) .withRequired(false).withDefault("bar").build())
.collect(toList())); .collect(toList()))
.build();
ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class); ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class);
when(configDescriptionProvider.getConfigDescription(any(), nullable(Locale.class))) when(configDescriptionProvider.getConfigDescription(any(), nullable(Locale.class)))

View File

@ -22,8 +22,10 @@ import java.util.Locale;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Component;
@ -43,19 +45,12 @@ public class TestHueConfigDescriptionProvider implements ConfigDescriptionProvid
@Override @Override
public ConfigDescription getConfigDescription(URI uri, Locale locale) { public ConfigDescription getConfigDescription(URI uri, Locale locale) {
if (uri.equals(createURI("hue:LCT001:color"))) { if (uri.equals(createURI("hue:LCT001:color"))) {
ConfigDescriptionParameter paramDefault = new ConfigDescriptionParameter("defaultConfig", Type.TEXT) { ConfigDescriptionParameter paramDefault = ConfigDescriptionParameterBuilder
@Override .create("defaultConfig", Type.TEXT).withDefault("defaultValue").build();
public String getDefault() { ConfigDescriptionParameter paramCustom = ConfigDescriptionParameterBuilder.create("customConfig", Type.TEXT)
return "defaultValue"; .withDefault("none").build();
}; return ConfigDescriptionBuilder.create(uri)
}; .withParameters(Stream.of(paramDefault, paramCustom).collect(toList())).build();
ConfigDescriptionParameter paramCustom = new ConfigDescriptionParameter("customConfig", Type.TEXT) {
@Override
public String getDefault() {
return "none";
};
};
return new ConfigDescription(uri, Stream.of(paramDefault, paramCustom).collect(toList()));
} }
return null; return null;
} }

View File

@ -44,6 +44,7 @@ import org.mockito.junit.MockitoRule;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.openhab.core.common.registry.RegistryChangeListener; import org.openhab.core.common.registry.RegistryChangeListener;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
@ -700,9 +701,10 @@ public class BindingBaseClassesOSGiTest extends JavaOSGiTest {
private void registerThingTypeAndConfigDescription() { private void registerThingTypeAndConfigDescription() {
ThingType thingType = ThingTypeBuilder.instance(new ThingTypeUID(BINDING_ID, THING_TYPE_ID), "label") ThingType thingType = ThingTypeBuilder.instance(new ThingTypeUID(BINDING_ID, THING_TYPE_ID), "label")
.withConfigDescriptionURI(configDescriptionUri()).build(); .withConfigDescriptionURI(configDescriptionUri()).build();
ConfigDescription configDescription = new ConfigDescription(configDescriptionUri(), ConfigDescription configDescription = ConfigDescriptionBuilder.create(configDescriptionUri())
singletonList(ConfigDescriptionParameterBuilder .withParameter(ConfigDescriptionParameterBuilder
.create("parameter", ConfigDescriptionParameter.Type.TEXT).withRequired(true).build())); .create("parameter", ConfigDescriptionParameter.Type.TEXT).withRequired(true).build())
.build();
ThingTypeProvider thingTypeProvider = mock(ThingTypeProvider.class); ThingTypeProvider thingTypeProvider = mock(ThingTypeProvider.class);
when(thingTypeProvider.getThingType(ArgumentMatchers.any(ThingTypeUID.class), when(thingTypeProvider.getThingType(ArgumentMatchers.any(ThingTypeUID.class),
@ -734,10 +736,11 @@ public class BindingBaseClassesOSGiTest extends JavaOSGiTest {
} }
private void registerConfigDescriptionProvider(boolean withRequiredParameter) { private void registerConfigDescriptionProvider(boolean withRequiredParameter) {
ConfigDescription configDescription = new ConfigDescription(configDescriptionUri(), ConfigDescription configDescription = ConfigDescriptionBuilder.create(configDescriptionUri())
singletonList( .withParameter(
ConfigDescriptionParameterBuilder.create("parameter", ConfigDescriptionParameter.Type.TEXT) ConfigDescriptionParameterBuilder.create("parameter", ConfigDescriptionParameter.Type.TEXT)
.withRequired(withRequiredParameter).build())); .withRequired(withRequiredParameter).build())
.build();
ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class); ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class);
when(configDescriptionProvider.getConfigDescription(ArgumentMatchers.any(URI.class), when(configDescriptionProvider.getConfigDescription(ArgumentMatchers.any(URI.class),

View File

@ -30,6 +30,7 @@ import java.util.Map;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
@ -409,14 +410,17 @@ public class ChangeThingTypeOSGiTest extends JavaOSGiTest {
ThingType thingType = ThingTypeBuilder.instance(thingTypeUID, "label") ThingType thingType = ThingTypeBuilder.instance(thingTypeUID, "label")
.withChannelDefinitions(getChannelDefinitions(thingTypeUID)) .withChannelDefinitions(getChannelDefinitions(thingTypeUID))
.withConfigDescriptionURI(configDescriptionUri).withProperties(thingTypeProperties).build(); .withConfigDescriptionURI(configDescriptionUri).withProperties(thingTypeProperties).build();
ConfigDescription configDescription = new ConfigDescription(configDescriptionUri, ConfigDescription configDescription = ConfigDescriptionBuilder.create(configDescriptionUri)
Arrays.asList( .withParameters(
ConfigDescriptionParameterBuilder Arrays.asList(
.create("parameter" + thingTypeUID.getId(), ConfigDescriptionParameter.Type.TEXT) ConfigDescriptionParameterBuilder
.withRequired(false).withDefault("default" + thingTypeUID.getId()).build(), .create("parameter" + thingTypeUID.getId(),
ConfigDescriptionParameterBuilder ConfigDescriptionParameter.Type.TEXT)
.create("provided" + thingTypeUID.getId(), ConfigDescriptionParameter.Type.TEXT) .withRequired(false).withDefault("default" + thingTypeUID.getId()).build(),
.withRequired(false).build())); ConfigDescriptionParameterBuilder
.create("provided" + thingTypeUID.getId(), ConfigDescriptionParameter.Type.TEXT)
.withRequired(false).build()))
.build();
thingTypes.put(thingTypeUID, thingType); thingTypes.put(thingTypeUID, thingType);
configDescriptions.put(configDescriptionUri, configDescription); configDescriptions.put(configDescriptionUri, configDescription);

View File

@ -35,6 +35,7 @@ import org.junit.Test;
import org.mockito.invocation.InvocationOnMock; import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionRegistry; import org.openhab.core.config.core.ConfigDescriptionRegistry;
@ -138,11 +139,10 @@ public class ThingFactoryTest extends JavaOSGiTest {
@Override @Override
public ConfigDescription answer(InvocationOnMock invocation) throws Throwable { public ConfigDescription answer(InvocationOnMock invocation) throws Throwable {
URI uri = (URI) invocation.getArgument(0); URI uri = (URI) invocation.getArgument(0);
List<ConfigDescriptionParameter> parameters = singletonList(ConfigDescriptionParameterBuilder return ConfigDescriptionBuilder.create(uri).withParameter(ConfigDescriptionParameterBuilder
.create("testProperty", ConfigDescriptionParameter.Type.TEXT).withContext("context") .create("testProperty", ConfigDescriptionParameter.Type.TEXT).withContext("context")
.withDefault("default").withDescription("description").withLimitToOptions(true) .withDefault("default").withDescription("description").withLimitToOptions(true).build())
.build()); .build();
return new ConfigDescription(uri, parameters);
} }
}); });
@ -200,10 +200,8 @@ public class ThingFactoryTest extends JavaOSGiTest {
.withDefault("2.3,2.4,2.5").withLabel("label").withDescription("description") .withDefault("2.3,2.4,2.5").withLabel("label").withDescription("description")
.withMultiple(true).withLimitToOptions(true).build(); .withMultiple(true).withLimitToOptions(true).build();
List<ConfigDescriptionParameter> parameters = Stream.of(p1, p2, p3, p4, p5, p6) return ConfigDescriptionBuilder.create(uri)
.collect(toList()); .withParameters(Stream.of(p1, p2, p3, p4, p5, p6).collect(toList())).build();
return new ConfigDescription(uri, parameters);
} }
}); });

View File

@ -33,7 +33,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.ArgumentMatchers; import org.mockito.ArgumentMatchers;
import org.openhab.core.common.SafeCaller; import org.openhab.core.common.SafeCaller;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type; import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
@ -324,20 +324,19 @@ public class ThingManagerOSGiJavaTest extends JavaOSGiTest {
}); });
ConfigDescriptionProvider mockConfigDescriptionProvider = mock(ConfigDescriptionProvider.class); ConfigDescriptionProvider mockConfigDescriptionProvider = mock(ConfigDescriptionProvider.class);
List<ConfigDescriptionParameter> parameters = Collections.singletonList( // ConfigDescriptionParameter parameter = ConfigDescriptionParameterBuilder.create(CONFIG_PARAM_NAME, Type.TEXT)
ConfigDescriptionParameterBuilder.create(CONFIG_PARAM_NAME, Type.TEXT).withRequired(true).build() // .withRequired(true).build();
);
registerService(mockConfigDescriptionProvider, ConfigDescriptionProvider.class.getName()); registerService(mockConfigDescriptionProvider, ConfigDescriptionProvider.class.getName());
// verify a missing mandatory thing config prevents it from getting initialized // verify a missing mandatory thing config prevents it from getting initialized
when(mockConfigDescriptionProvider.getConfigDescription(eq(configDescriptionThing), any())) when(mockConfigDescriptionProvider.getConfigDescription(eq(configDescriptionThing), any()))
.thenReturn(new ConfigDescription(configDescriptionThing, parameters)); .thenReturn(ConfigDescriptionBuilder.create(configDescriptionThing).withParameter(parameter).build());
assertThingStatus(Collections.emptyMap(), Collections.emptyMap(), ThingStatus.UNINITIALIZED, assertThingStatus(Collections.emptyMap(), Collections.emptyMap(), ThingStatus.UNINITIALIZED,
ThingStatusDetail.HANDLER_CONFIGURATION_PENDING); ThingStatusDetail.HANDLER_CONFIGURATION_PENDING);
// verify a missing mandatory channel config prevents it from getting initialized // verify a missing mandatory channel config prevents it from getting initialized
when(mockConfigDescriptionProvider.getConfigDescription(eq(configDescriptionChannel), any())) when(mockConfigDescriptionProvider.getConfigDescription(eq(configDescriptionChannel), any()))
.thenReturn(new ConfigDescription(configDescriptionChannel, parameters)); .thenReturn(ConfigDescriptionBuilder.create(configDescriptionChannel).withParameter(parameter).build());
assertThingStatus(Collections.singletonMap(CONFIG_PARAM_NAME, "value"), Collections.emptyMap(), assertThingStatus(Collections.singletonMap(CONFIG_PARAM_NAME, "value"), Collections.emptyMap(),
ThingStatus.UNINITIALIZED, ThingStatusDetail.HANDLER_CONFIGURATION_PENDING); ThingStatus.UNINITIALIZED, ThingStatusDetail.HANDLER_CONFIGURATION_PENDING);

View File

@ -39,6 +39,7 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.openhab.core.common.registry.RegistryChangeListener; import org.openhab.core.common.registry.RegistryChangeListener;
import org.openhab.core.config.core.ConfigDescription; import org.openhab.core.config.core.ConfigDescription;
import org.openhab.core.config.core.ConfigDescriptionBuilder;
import org.openhab.core.config.core.ConfigDescriptionParameter; import org.openhab.core.config.core.ConfigDescriptionParameter;
import org.openhab.core.config.core.ConfigDescriptionParameterBuilder; import org.openhab.core.config.core.ConfigDescriptionParameterBuilder;
import org.openhab.core.config.core.ConfigDescriptionProvider; import org.openhab.core.config.core.ConfigDescriptionProvider;
@ -1994,10 +1995,11 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
} }
private void registerConfigDescriptionProvider(boolean withRequiredParameter) { private void registerConfigDescriptionProvider(boolean withRequiredParameter) {
ConfigDescription configDescription = new ConfigDescription(configDescriptionUri(), ConfigDescription configDescription = ConfigDescriptionBuilder.create(configDescriptionUri())
singletonList( .withParameter(
ConfigDescriptionParameterBuilder.create("parameter", ConfigDescriptionParameter.Type.TEXT) ConfigDescriptionParameterBuilder.create("parameter", ConfigDescriptionParameter.Type.TEXT)
.withRequired(withRequiredParameter).build())); .withRequired(withRequiredParameter).build())
.build();
ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class); ConfigDescriptionProvider configDescriptionProvider = mock(ConfigDescriptionProvider.class);
when(configDescriptionProvider.getConfigDescription(any(URI.class), nullable(Locale.class))) when(configDescriptionProvider.getConfigDescription(any(URI.class), nullable(Locale.class)))