package com.enonic.cms.web.status; import java.util.Collections; import java.util.List; import org.codehaus.jackson.node.JsonNodeFactory; import org.codehaus.jackson.node.ObjectNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller public final class StatusController { private List<StatusInfoBuilder> infoBuilders; @ResponseBody @RequestMapping(value = "/status", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public String serveStatus() { final ObjectNode json = createStatus(); return serializeJson( json ); } private ObjectNode createStatus() { final ObjectNode node = JsonNodeFactory.instance.objectNode(); for ( final StatusInfoBuilder builder : this.infoBuilders ) { builder.addInfo( node ); } return node; } private String serializeJson( final ObjectNode json ) { return json.toString(); } @Autowired public void setInfoBuilders( final List<StatusInfoBuilder> infoBuilders ) { this.infoBuilders = infoBuilders; Collections.sort( this.infoBuilders ); } }