package rocks.inspectit.server.service.rest; import static org.springframework.web.bind.annotation.RequestMethod.GET; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import rocks.inspectit.server.service.rest.error.JsonError; import rocks.inspectit.shared.all.communication.data.cmr.CmrStatusData; import rocks.inspectit.shared.all.version.InvalidVersionException; import rocks.inspectit.shared.all.version.VersionService; import rocks.inspectit.shared.cs.cmr.service.ICmrManagementService; /** * Restful service provider for CMR information. * * @author Ivan Senic * */ @Controller @RequestMapping(value = "/cmr") public class CmrRestfulService { /** * Reference to the existing {@link VersionService}. */ @Autowired private VersionService versionService; /** * Reference to the existing {@link IVersioningService}. */ @Autowired private ICmrManagementService cmrManagementService; /** * Handling of all the exceptions happening in this controller. * * @param exception * Exception being thrown * @return {@link ModelAndView} */ @ExceptionHandler(Exception.class) public ModelAndView handleAllException(Exception exception) { return new JsonError(exception).asModelAndView(); } /** * Returns CMR version. * <p> * <i> Example URL: /cmr/version</i> * * @return Returns CMR version. * @throws IOException * If version information is not available. * @throws InvalidVersionException * If version information is not available. */ @RequestMapping(method = GET, value = "version") @ResponseBody public String getVersion() throws IOException, InvalidVersionException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(versionService.getVersionAsString()); } /** * Returns CMR status information. * <p> * <i> Example URL: /cmr/status</i> * * @return Returns CMR status information. */ @RequestMapping(method = GET, value = "status") @ResponseBody public CmrStatusData getStatusData() { return cmrManagementService.getCmrStatusData(); } /** * Header information for swagger requests. * * @param response * Response information */ @ModelAttribute public void setVaryResponseHeader(HttpServletResponse response) { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); } }