private ConfigurationMetadataHint parseHint(JSONObject json) { ConfigurationMetadataHint hint = new ConfigurationMetadataHint(); hint.setId(json.getString("name")); if (json.has("values")) { JSONArray values = json.getJSONArray("values"); for (int i = 0; i < values.length(); i++) { JSONObject value = values.getJSONObject(i); ValueHint valueHint = new ValueHint(); valueHint.setValue(readItemValue(value.get("value"))); String description = value.optString("description", null); valueHint.setDescription(description); valueHint.setShortDescription(extractShortDescription(description)); hint.getValueHints().add(valueHint); } } if (json.has("providers")) { JSONArray providers = json.getJSONArray("providers"); for (int i = 0; i < providers.length(); i++) { JSONObject provider = providers.getJSONObject(i); ValueProvider valueProvider = new ValueProvider(); valueProvider.setName(provider.getString("name")); if (provider.has("parameters")) { JSONObject parameters = provider.getJSONObject("parameters"); Iterator<?> keys = parameters.keys(); while (keys.hasNext()) { String key = (String) keys.next(); valueProvider.getParameters().put(key, readItemValue(parameters.get(key))); } } hint.getValueProviders().add(valueProvider); } } return hint; }