mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 18:40:39 +00:00
43 lines
1.1 KiB
Java
43 lines
1.1 KiB
Java
package org.asamk.signal.commands;
|
|
|
|
import net.sourceforge.argparse4j.inf.Namespace;
|
|
|
|
import org.asamk.signal.util.Util;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* Namespace implementation, that has plural handling for list arguments and converts camel case keys to dashed strings
|
|
*/
|
|
final class JsonRpcNamespace extends Namespace {
|
|
|
|
public JsonRpcNamespace(final Map<String, Object> attrs) {
|
|
super(attrs);
|
|
}
|
|
|
|
@Override
|
|
public <T> T get(String dest) {
|
|
final T value = super.get(dest);
|
|
if (value != null) {
|
|
return value;
|
|
}
|
|
|
|
final var camelCaseString = Util.dashSeparatedToCamelCaseString(dest);
|
|
return super.get(camelCaseString);
|
|
}
|
|
|
|
@Override
|
|
public <E> List<E> getList(final String dest) {
|
|
try {
|
|
final List<E> value = super.getList(dest);
|
|
if (value != null) {
|
|
return value;
|
|
}
|
|
} catch (ClassCastException e) {
|
|
return List.of(this.<E>get(dest));
|
|
}
|
|
|
|
return super.getList(dest + "s");
|
|
}
|
|
}
|