quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusBehaviorChangesConfiguration.java [40:87]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  default Map<String, Object> parseDefaults(ObjectMapper objectMapper) {
    return convertMap(objectMapper, defaults());
  }

  default Map<String, Map<String, Object>> parseRealmOverrides(ObjectMapper objectMapper) {
    Map<String, Map<String, Object>> m = new HashMap<>();
    for (String realm : realmOverrides().keySet()) {
      m.put(realm, convertMap(objectMapper, realmOverrides().get(realm).overrides()));
    }
    return m;
  }

  private static Map<String, Object> convertMap(
      ObjectMapper objectMapper, Map<String, String> properties) {
    Map<String, Object> m = new HashMap<>();
    for (String configName : properties.keySet()) {
      String json = properties.get(configName);
      try {
        JsonNode node = objectMapper.readTree(json);
        m.put(configName, configValue(node));
      } catch (JsonProcessingException e) {
        throw new RuntimeException(
            "Invalid JSON value for feature configuration: " + configName, e);
      }
    }
    return m;
  }

  private static Object configValue(JsonNode node) {
    return switch (node.getNodeType()) {
      case BOOLEAN -> node.asBoolean();
      case STRING -> node.asText();
      case NUMBER ->
          switch (node.numberType()) {
            case INT, LONG -> node.asLong();
            case FLOAT, DOUBLE -> node.asDouble();
            default ->
                throw new IllegalArgumentException("Unsupported number type: " + node.numberType());
          };
      case ARRAY -> {
        List<Object> list = new ArrayList<>();
        node.elements().forEachRemaining(n -> list.add(configValue(n)));
        yield List.copyOf(list);
      }
      default ->
          throw new IllegalArgumentException(
              "Unsupported feature configuration JSON type: " + node.getNodeType());
    };
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



service/common/src/main/java/org/apache/polaris/service/config/FeaturesConfiguration.java [40:87]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  default Map<String, Object> parseDefaults(ObjectMapper objectMapper) {
    return convertMap(objectMapper, defaults());
  }

  default Map<String, Map<String, Object>> parseRealmOverrides(ObjectMapper objectMapper) {
    Map<String, Map<String, Object>> m = new HashMap<>();
    for (String realm : realmOverrides().keySet()) {
      m.put(realm, convertMap(objectMapper, realmOverrides().get(realm).overrides()));
    }
    return m;
  }

  private static Map<String, Object> convertMap(
      ObjectMapper objectMapper, Map<String, String> properties) {
    Map<String, Object> m = new HashMap<>();
    for (String configName : properties.keySet()) {
      String json = properties.get(configName);
      try {
        JsonNode node = objectMapper.readTree(json);
        m.put(configName, configValue(node));
      } catch (JsonProcessingException e) {
        throw new RuntimeException(
            "Invalid JSON value for feature configuration: " + configName, e);
      }
    }
    return m;
  }

  private static Object configValue(JsonNode node) {
    return switch (node.getNodeType()) {
      case BOOLEAN -> node.asBoolean();
      case STRING -> node.asText();
      case NUMBER ->
          switch (node.numberType()) {
            case INT, LONG -> node.asLong();
            case FLOAT, DOUBLE -> node.asDouble();
            default ->
                throw new IllegalArgumentException("Unsupported number type: " + node.numberType());
          };
      case ARRAY -> {
        List<Object> list = new ArrayList<>();
        node.elements().forEachRemaining(n -> list.add(configValue(n)));
        yield List.copyOf(list);
      }
      default ->
          throw new IllegalArgumentException(
              "Unsupported feature configuration JSON type: " + node.getNodeType());
    };
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



