public List<Object> getData() { List<Object> data = new ArrayList<Object>(); // Collect stats from all callbacks Map<String, Object> callbackResults = new HashMap<String, Object>(); for (RealtimeStatsCallback callback : mCallbacks) { Map<String, Object> callbackData = callback.getStatData(); if (callbackData != null) { callbackResults.putAll(callbackData); } } // Populate data based on callback results for (String name : mNames) { data.add(callbackResults.remove(name)); } if (callbackResults.size() > 0) { KrawlerLog.perf.warn( "Detected unexpected realtime stats: " + StringUtil.join(", ", callbackResults.keySet())); } return data; }