[tr064] fix wanBlockByIP channel and improvements to parameter handling (#9655)

- fix wanBlockByIP channel
- allow comments in parameter lists
- fix compiler warnings

Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
This commit is contained in:
J-N-K 2021-01-03 02:52:15 +01:00 committed by GitHub
parent 270f7b645d
commit b4b8dd2117
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 30 deletions

View File

@ -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.

View File

@ -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<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();

View File

@ -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)));
}
/**

View File

@ -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;

View File

@ -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