-
- /**
- * Namepace implementation, that defaults booleans to false 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");
- }
-
- @Override
- public Boolean getBoolean(String dest) {
- Boolean maybeGotten = this.get(dest);
- if (maybeGotten == null) {
- maybeGotten = false;
- }
- return maybeGotten;
- }
- }