private RestEntry buildRestEntryForVersion()

in src/main/java/co/elastic/support/rest/RestEntryConfig.java [65:96]


    private RestEntry buildRestEntryForVersion(String name, Map<String, Object> entry) {
        String subdir = (String) ObjectUtils.defaultIfNull(entry.get("subdir"), "");
        String extension = (String) ObjectUtils.defaultIfNull(entry.get("extension"), ".json");
        boolean retry = (boolean) ObjectUtils.defaultIfNull(entry.get("retry"), false);
        boolean showErrors = (boolean) ObjectUtils.defaultIfNull(entry.get("showErrors"), true);

        Map<String, Object> versions = (Map<String, Object>) entry.get("versions");

        for (Map.Entry<String, Object> urlVersion : versions.entrySet()) {
            if (semver.satisfies(urlVersion.getKey())) {
                if (urlVersion.getValue() instanceof String) {
                    return new RestEntry(name, subdir, extension, retry, (String) urlVersion.getValue(), showErrors);
                    // We allow it to be String,String or String,Map(url,paginate,spaceaware)
                } else if (urlVersion.getValue() instanceof Map) {
                    Map<String, Object> info = (Map<String, Object>) urlVersion.getValue();

                    String url = (String) ObjectUtils.defaultIfNull(info.get("url"), null);

                    if (url == null) {
                        throw new RuntimeException("Undefined URL for REST entry (route)");
                    }

                    String pageableFieldName = (String) ObjectUtils.defaultIfNull(info.get("paginate"), null);
                    boolean spaceAware = (boolean) ObjectUtils.defaultIfNull(info.get("spaceaware"), false);

                    return new RestEntry(name, subdir, extension, retry, url, showErrors, pageableFieldName, spaceAware);
                }
            }
        }

        return null;
    }