package com.elminster.psn.restful.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ExitCodeGenerator;
import org.springframework.boot.SpringApplication;
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;
import com.elminster.psn.restful.Application;
import com.elminster.psn.restful.service.IAdminService;
import com.elminster.retrieve.psn.exception.ServiceException;
/**
* The admin controller.
*
* @author jgu
* @version 1.0
*/
@Controller
public class AdminController {
private final IAdminService adminService;
@Autowired
public AdminController(IAdminService adminService) {
this.adminService = adminService;
}
@RequestMapping(value = "/admin/dump", method = RequestMethod.GET)
public @ResponseBody int dump() throws ServiceException {
return adminService.savepoint();
}
@RequestMapping(value = "/admin/shutdown", method = RequestMethod.GET)
public void shutdown() {
final int exitCode = adminService.savepoint();
ExitCodeGenerator exitCodeGenerator = new ExitCodeGenerator() {
@Override
public int getExitCode() {
return exitCode;
}
};
SpringApplication.exit(Application.context, exitCodeGenerator);
}
}