1 package info.mikethomas.fahservices.service;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import info.mikethomas.jfold.Connection;
26 import info.mikethomas.jfold.exceptions.QueueInfoException;
27 import info.mikethomas.jfold.unit.Unit;
28
29 import io.swagger.v3.oas.annotations.Operation;
30 import io.swagger.v3.oas.annotations.media.ArraySchema;
31 import io.swagger.v3.oas.annotations.media.Content;
32 import io.swagger.v3.oas.annotations.media.Schema;
33 import io.swagger.v3.oas.annotations.responses.ApiResponse;
34 import io.swagger.v3.oas.annotations.tags.Tag;
35
36 import org.springframework.beans.factory.annotation.Autowired;
37 import org.springframework.http.HttpStatus;
38 import org.springframework.http.MediaType;
39 import org.springframework.http.ResponseEntity;
40 import org.springframework.web.bind.annotation.ExceptionHandler;
41 import org.springframework.web.bind.annotation.RequestMapping;
42 import org.springframework.web.bind.annotation.RequestMethod;
43 import org.springframework.web.bind.annotation.ResponseBody;
44 import org.springframework.web.bind.annotation.ResponseStatus;
45 import org.springframework.web.bind.annotation.RestController;
46
47 import java.util.List;
48
49
50
51
52
53
54
55 @RestController("queue-info")
56 @Tag(name = "Queue Info", description = "Get work unit queue information.")
57 public class QueueInfoResource {
58
59 @Autowired
60 private Connection connection;
61
62
63
64
65
66
67
68
69 @Operation(summary = "queue-info", description = "Get List of work unit queue information.", responses = {
70 @ApiResponse(responseCode = "200", description = "OK", content = {
71 @Content(array = @ArraySchema(schema = @Schema(implementation = Unit.class)))
72 })
73 })
74 @RequestMapping(
75 value = "/queue-info",
76 method = RequestMethod.GET,
77 produces = {
78 MediaType.APPLICATION_JSON_VALUE,
79 MediaType.APPLICATION_XML_VALUE,
80 MediaType.TEXT_XML_VALUE
81 })
82 @ResponseBody
83 public ResponseEntity<List<Unit>> getQueueInfo() throws QueueInfoException {
84 return new ResponseEntity<>(connection.queueInfo(), HttpStatus.OK);
85 }
86
87
88
89
90
91
92
93 @ExceptionHandler(QueueInfoException.class)
94 @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
95 public ResponseEntity<Exception> handleException(Exception ex) {
96 return new ResponseEntity<>(ex, HttpStatus.INTERNAL_SERVER_ERROR);
97 }
98 }