public static void toJSON(OutputWriter outputWriter, UsageStatistics usageStatistics) { outputWriter .add("server_id", usageStatistics.serverId()) .add("message_version", MESSAGE_SCHEMA_VERSION) .addChild("data", childWriter -> { childWriter .add("pipeline_count", usageStatistics.pipelineCount()) .add("config_repo_pipeline_count", usageStatistics.configRepoPipelineCount()) .add("agent_count", usageStatistics.agentCount()) .add("oldest_pipeline_execution_time", usageStatistics.oldestPipelineExecutionTime()) .add("job_count", usageStatistics.jobCount()) .addChildList("elastic_agent_job_count", child -> { usageStatistics.elasticAgentPluginToJobCount().forEach((pluginId, jobCount) -> { child.addChild(c -> { c.add("plugin_id", pluginId); c.add("job_count", jobCount); }); }); }) .add("gocd_version", usageStatistics.gocdVersion()); }); }