JavaScript
x
val dbPort = props["mysqlPort"]?.get(0)?.toInt() ?: 3306
props is Map<String, List>
currently am writing it this way:
JavaScript
var portStr = props.get("mysqlPort").get(0);
var dbPort = (portStr == null) ? 3306 : Integer.parseInt(portStr);
is this correct? can it be better?
Advertisement
Answer
Try this.
JavaScript
static int mySqlPort(Map<String, List<String>> prop) {
return Optional.ofNullable(prop.get("mysqlPort"))
.map(x -> x.get(0))
.map(Integer::parseInt)
.orElse(3306);
}
test case:
JavaScript
System.out.println("normal: " + mySqlPort(Map.of("mysqlPort", Arrays.asList("1234", "4567"))));
System.out.println("null port: " + mySqlPort(Map.of("mysqlPort", Arrays.asList(null, "4567"))));
System.out.println("no 'mysqlPort': " + mySqlPort(Map.of("sqlitePort", Arrays.asList("1234", "4567"))));
result:
JavaScript
normal: 1234
null port: 3306
no 'mysqlPort': 3306