]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/JsonRpcNamespace.java
Check if required quote-author parameter is missing
[signal-cli] / src / main / java / org / asamk / signal / commands / JsonRpcNamespace.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.inf.Namespace;
4
5 import org.asamk.signal.util.Util;
6
7 import java.util.List;
8 import java.util.Map;
9
10 /**
11 * Namespace implementation, that has plural handling for list arguments and converts camel case keys to dashed strings
12 */
13 final class JsonRpcNamespace extends Namespace {
14
15 public JsonRpcNamespace(final Map<String, Object> attrs) {
16 super(attrs);
17 }
18
19 @Override
20 public <T> T get(String dest) {
21 final T value = super.get(dest);
22 if (value != null) {
23 return value;
24 }
25
26 final var camelCaseString = Util.dashSeparatedToCamelCaseString(dest);
27 return super.get(camelCaseString);
28 }
29
30 @Override
31 public <E> List<E> getList(final String dest) {
32 try {
33 final List<E> value = super.getList(dest);
34 if (value != null) {
35 return value;
36 }
37 } catch (ClassCastException e) {
38 return List.of(this.<E>get(dest));
39 }
40
41 return super.getList(dest + "s");
42 }
43 }