| `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.
*/
package org.openhab.binding.tr064.internal.config;
-import java.util.Collections;
import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
public String password = "";
/* following parameters only available in fritzbox thing */
- public List<String> tamIndices = Collections.emptyList();
- public List<String> callDeflectionIndices = Collections.emptyList();
- public List<String> missedCallDays = Collections.emptyList();
- public List<String> rejectedCallDays = Collections.emptyList();
- public List<String> inboundCallDays = Collections.emptyList();
- public List<String> outboundCallDays = Collections.emptyList();
- public List<String> callListDays = Collections.emptyList();
- public int phonebookInterval = 0;
+ public List<String> tamIndices = List.of();
+ public List<String> callDeflectionIndices = List.of();
+ public List<String> missedCallDays = List.of();
+ public List<String> rejectedCallDays = List.of();
+ public List<String> inboundCallDays = List.of();
+ public List<String> outboundCallDays = List.of();
+ public List<String> callListDays = List.of();
+ public List<String> wanBlockIPs = List.of();
+ public int phonebookInterval = 600;
public boolean isValid() {
return !host.isEmpty() && !user.isEmpty() && !password.isEmpty();
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;
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)));
}
/**
*/
@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;
} 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