diff --git a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/Tr064HandlerFactory.java b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/Tr064HandlerFactory.java index c597386fe20c2..9f61e70a6654e 100644 --- a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/Tr064HandlerFactory.java +++ b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/Tr064HandlerFactory.java @@ -42,8 +42,7 @@ @Component(service = { ThingHandlerFactory.class }, configurationPid = "binding.tr064") public class Tr064HandlerFactory extends BaseThingHandlerFactory { private static final Set SUPPORTED_THING_TYPES_UIDS = Stream - .concat(org.openhab.binding.tr064.internal.Tr064RootHandler.SUPPORTED_THING_TYPES.stream(), - Tr064SubHandler.SUPPORTED_THING_TYPES.stream()) + .concat(Tr064RootHandler.SUPPORTED_THING_TYPES.stream(), Tr064SubHandler.SUPPORTED_THING_TYPES.stream()) .collect(Collectors.toSet()); private final HttpClient httpClient; diff --git a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/phonebook/PhonebookProfileFactory.java b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/phonebook/PhonebookProfileFactory.java index 4650ddd1d5c6e..054e09c0cfc34 100644 --- a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/phonebook/PhonebookProfileFactory.java +++ b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/phonebook/PhonebookProfileFactory.java @@ -19,6 +19,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -89,18 +90,28 @@ public void unregisterPhonebookProvider(PhonebookProvider phonebookProvider) { } } + private Stream createPhonebookList(Map.Entry entry) { + String thingUid = UIDUtils.encode(entry.getKey().toString()); + String thingName = entry.getValue().getFriendlyName(); + + Stream parameterOptions = entry.getValue().getPhonebooks().stream() + .map(phonebook -> new ParameterOption(thingUid + ":" + UIDUtils.encode(phonebook.getName()), + thingName + " " + phonebook.getName())); + + if (parameterOptions.count() > 0) { + return Stream.concat(Stream.of(new ParameterOption(thingUid, thingName)), parameterOptions); + } + + return parameterOptions; + } + @Override public @Nullable Collection getParameterOptions(URI uri, String s, @Nullable String s1, @Nullable Locale locale) { if (uri.getSchemeSpecificPart().equals(PhonebookProfile.PHONEBOOK_PROFILE_TYPE_UID.toString()) && s.equals(PhonebookProfile.PHONEBOOK_PARAM)) { - return phonebookProviders.entrySet().stream().flatMap(e -> { - String thingUid = UIDUtils.encode(e.getKey().toString()); - String thingName = e.getValue().getFriendlyName(); - return e.getValue().getPhonebooks().stream() - .map(phonebook -> new ParameterOption(thingUid + ":" + UIDUtils.encode(phonebook.getName()), - thingName + " " + phonebook.getName())); - }).collect(Collectors.toSet()); + return phonebookProviders.entrySet().stream().flatMap(this::createPhonebookList) + .collect(Collectors.toSet()); } return null; }