class StormMetadataService {

    public StormTopologies getTopologies() throws IOException, PrivilegedActionException {
        return executeSecure(() -> {
                    final Map<String, ?> jsonAsMap = JsonClientUtil.getEntity(httpClient.target(tplgySumUrl), Map.class);
                    List<String> topologies = Collections.emptyList();
                    if (jsonAsMap != null) {
                        final List<Map<String, String>> topologiesSummary = 
                                (List<Map<String, String>>) jsonAsMap.get(STORM_REST_API_TOPOLOGIES_KEY);
                        if (topologiesSummary != null) {
                            topologies = new ArrayList<>(topologiesSummary.size());
                            for (Map<String, String> tpSum : topologiesSummary) {
                                topologies.add(tpSum.get(STORM_REST_API_TOPOLOGY_ID_KEY));
                            }
                        }
                    }
                    return new StormTopologies(topologies, getSecurity());
                }
        );
    }

    public  StormMetadataService(Client httpClient, String tplgySumUrl, String mainPageUrl,
            SecurityContext securityContext, ServiceConfiguration stormEnvConfig, Subject subject,
                                Component nimbus, Collection<ComponentProcess> nimbusProcesses,
                                Component stormUi, Collection<ComponentProcess> stormUiProcesses);

}