package rocks.inspectit.server.service.rest; import static org.springframework.web.bind.annotation.RequestMethod.GET; import java.util.List; import javax.servlet.http.HttpServletResponse; 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.PathVariable; 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.BusinessTransactionData; import rocks.inspectit.shared.all.exception.BusinessException; import rocks.inspectit.shared.cs.ci.business.impl.ApplicationDefinition; import rocks.inspectit.shared.cs.ci.business.impl.BusinessTransactionDefinition; import rocks.inspectit.shared.cs.cmr.service.IConfigurationInterfaceService; /** * @author Mario Mann * */ @Controller @RequestMapping(value = "/bc/definition/app") public class BusinessContextDefinitionRestfulService { /** * Reference to the existing {@link IConfigurationInterfaceService}. */ @Autowired private IConfigurationInterfaceService configurationInterfaceService; /** * 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(); } /** * Provides informations of business context definition. * * <p> * <i> Example URL: /bc/definition/app</i> * </p> * * @return a list of {@link ApplicationDefinition}. */ @RequestMapping(method = GET, value = "") @ResponseBody public List<ApplicationDefinition> getApplicationDefinitions() { return configurationInterfaceService.getApplicationDefinitions(); } /** * Provides detail information of a business context definition (application). * * <p> * <i> Example URL: /bc/definition/app/{id}</i> * </p> * * @param id * Application ID. * * @return detail information of an {@link ApplicationDefinition}. * @throws BusinessException * If given ID of the application is not valid. */ @RequestMapping(method = GET, value = "{id}") @ResponseBody public ApplicationDefinition getApplicationDefinition(@PathVariable int id) throws BusinessException { return configurationInterfaceService.getApplicationDefinition(id); } /** * Provides information of all business transaction definitions of an application. * * <p> * <i> Example URL: /bc/definition/app/{id}/btx</i> * </p> * * @param id * Application ID. * * @return a list of {@link BusinessTransactionData}. * @throws BusinessException * If given ID of the application is not valid. */ @RequestMapping(method = GET, value = "{id}/btx") @ResponseBody public List<BusinessTransactionDefinition> getBusinessTransactionDefinitions(@PathVariable int id) throws BusinessException { return configurationInterfaceService.getApplicationDefinition(id).getBusinessTransactionDefinitions(); } /** * Provides detail information of a business transaction definition and application. * * <p> * <i> Example URL: /bc/definition/app/{id}/btx/{businessTxId}</i> * </p> * * @param id * Application ID. * @param businessTxId * Business transaction ID. * * @return detail information of a {@link BusinessTransactionData}. * @throws BusinessException * If given ID of the application is not valid. */ @RequestMapping(method = GET, value = "{id}/btx/{businessTxId}") @ResponseBody public BusinessTransactionDefinition getBusinessTransactionDefinition(@PathVariable int id, @PathVariable int businessTxId) throws BusinessException { return configurationInterfaceService.getApplicationDefinition(id).getBusinessTransactionDefinition(businessTxId); } /** * 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"); } }