diff --git a/bundles/org.openhab.binding.tr064/README.md b/bundles/org.openhab.binding.tr064/README.md index 2b2018056..099de551b 100644 --- a/bundles/org.openhab.binding.tr064/README.md +++ b/bundles/org.openhab.binding.tr064/README.md @@ -151,6 +151,10 @@ Advanced channels appear only if the corresponding parameters are set in the Thi | `wanTotalBytesSent` | `Number:DataAmount` | x | Total Bytes Sent | +Parameters that accept lists (e.g. `macOnline`, `wanBlockIPs`) can contain comments. +Comments are separated from the value with a '#' (e.g. `192.168.0.77 # Daughter's iPhone`). +The full string is used for the channel label. + ### Channel `callList` Call lists are provided for one or more days (as configured) as JSON. diff --git a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/config/Tr064RootConfiguration.java b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/config/Tr064RootConfiguration.java index 9b130cbfb..6d2874197 100644 --- a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/config/Tr064RootConfiguration.java +++ b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/config/Tr064RootConfiguration.java @@ -12,7 +12,6 @@ */ package org.openhab.binding.tr064.internal.config; -import java.util.Collections; import java.util.List; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -29,14 +28,15 @@ public class Tr064RootConfiguration extends Tr064BaseThingConfiguration { public String password = ""; /* following parameters only available in fritzbox thing */ - public List tamIndices = Collections.emptyList(); - public List callDeflectionIndices = Collections.emptyList(); - public List missedCallDays = Collections.emptyList(); - public List rejectedCallDays = Collections.emptyList(); - public List inboundCallDays = Collections.emptyList(); - public List outboundCallDays = Collections.emptyList(); - public List callListDays = Collections.emptyList(); - public int phonebookInterval = 0; + public List tamIndices = List.of(); + public List callDeflectionIndices = List.of(); + public List missedCallDays = List.of(); + public List rejectedCallDays = List.of(); + public List inboundCallDays = List.of(); + public List outboundCallDays = List.of(); + public List callListDays = List.of(); + public List wanBlockIPs = List.of(); + public int phonebookInterval = 600; public boolean isValid() { return !host.isEmpty() && !user.isEmpty() && !password.isEmpty(); 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 cf0e3646b..f10359f76 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 @@ -15,12 +15,7 @@ package org.openhab.binding.tr064.internal.phonebook; import static java.util.Comparator.comparing; import java.net.URI; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -92,19 +87,8 @@ public class PhonebookProfileFactory implements ProfileFactory, ProfileTypeProvi final LocalizedKey localizedKey = new LocalizedKey(profileType.getUID(), locale != null ? locale.toLanguageTag() : null); - final ProfileType cachedlocalizedProfileType = localizedProfileTypeCache.get(localizedKey); - if (cachedlocalizedProfileType != null) { - return cachedlocalizedProfileType; - } - - final ProfileType localizedProfileType = profileTypeI18nLocalizationService.createLocalizedProfileType(bundle, - profileType, locale); - if (localizedProfileType != null) { - localizedProfileTypeCache.put(localizedKey, localizedProfileType); - return localizedProfileType; - } else { - return profileType; - } + return Objects.requireNonNull(localizedProfileTypeCache.computeIfAbsent(localizedKey, + key -> profileTypeI18nLocalizationService.createLocalizedProfileType(bundle, profileType, locale))); } /** diff --git a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/soap/SOAPValueConverter.java b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/soap/SOAPValueConverter.java index d6eaf0e60..9a7d645be 100644 --- a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/soap/SOAPValueConverter.java +++ b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/soap/SOAPValueConverter.java @@ -54,7 +54,6 @@ import com.google.gson.GsonBuilder; */ @NonNullByDefault public class SOAPValueConverter { - private static final int REQUEST_TIMEOUT = 5000; // in ms private final Logger logger = LoggerFactory.getLogger(SOAPValueConverter.class); private final HttpClient httpClient; diff --git a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/util/Util.java b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/util/Util.java index 13d010f0b..d5884b91a 100644 --- a/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/util/Util.java +++ b/bundles/org.openhab.binding.tr064/src/main/java/org/openhab/binding/tr064/internal/util/Util.java @@ -217,7 +217,9 @@ public class Util { } else { // create a channel for each parameter parameters.forEach(parameter -> { - String normalizedParameter = UIDUtils.encode(parameter); + // remove comment: split parameter at '#', discard everything after that and remove + // trailing spaces + String normalizedParameter = UIDUtils.encode(parameter.split("#")[0].trim()); ChannelUID channelUID = new ChannelUID(thing.getUID(), channelId + "_" + normalizedParameter); ChannelBuilder channelBuilder = ChannelBuilder