public String getDatatypesJson() { JsonArray jsonArray = new JsonArray(); try { for (String id : datatypes.getIds()) { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("id", id); jsonObject.addProperty("name", id); // for backward compatibility Datatype datatype = datatypes.get(id); if (datatype instanceof ParameterizedDatatype) { Map<String, Object> parameters = ((ParameterizedDatatype) datatype).getParameters(); for (Map.Entry<String, Object> entry : parameters.entrySet()) { jsonObject.addProperty(entry.getKey(), entry.getValue().toString()); } } jsonArray.add(jsonObject); } } catch (Exception e) { log.error("Fail to get datatype settings", e); throw new RestAPIException("Fail to get datatype settings", e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR, e); } return jsonArray.toString(); } }