/* * COMSAT * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 3.0 * as published by the Free Software Foundation. */ /* * Based on the corresponding class in Spring Boot Samples. * Copyright the original author(s). * Released under the ASF 2.0 license. */ package comsat.sample.actuator; import co.paralleluniverse.fibers.Fiber; import co.paralleluniverse.fibers.SuspendExecution; import java.util.Collections; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import org.hibernate.validator.constraints.NotBlank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Description; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller @Description("A controller for handling requests for hello messages") public class SampleController { @Autowired private HelloWorldService helloWorldService; @RequestMapping(value = "/helloThreadBlocking", method = RequestMethod.GET) @ResponseBody public Map<String, String> helloThreadBlocking() { return Collections.singletonMap("message", this.helloWorldService.getHelloMessage()); } // snippet suspendable @RequestMapping(value = "/", method = RequestMethod.GET) @ResponseBody public Map<String, String> hello() throws SuspendExecution, InterruptedException { Fiber.sleep(10); return Collections.singletonMap("message", this.helloWorldService.getHelloMessage()); } // end of snippet @RequestMapping(value = "/", method = RequestMethod.POST) @ResponseBody public Map<String, Object> olleh(@Validated Message message) throws SuspendExecution, InterruptedException { Fiber.sleep(10); Map<String, Object> model = new LinkedHashMap<>(); model.put("message", message.getValue()); model.put("title", "Hello Home"); model.put("date", new Date()); return model; } @RequestMapping("/foo") @ResponseBody public String foo() throws SuspendExecution, InterruptedException { Fiber.sleep(10); throw new IllegalArgumentException("Server error"); } protected static class Message { @NotBlank(message = "Message value cannot be empty") private String value; public String getValue() { return this.value; } public void setValue(String value) { this.value = value; } } }