Skip to content

Instantly share code, notes, and snippets.

@bytekast
Created March 25, 2017 20:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bytekast/ee2a1849f4bb437552f2b961ab0e0e66 to your computer and use it in GitHub Desktop.
Save bytekast/ee2a1849f4bb437552f2b961ab0e0e66 to your computer and use it in GitHub Desktop.
@Component
@CompileStatic
@Log4j
class DispatcherService {
@Autowired
List<Handler> handlers
Response dispatch(Request request) {
log.info("request: ${request}")
try {
def handlers = handlers?.findAll { it.route(request) }
if (handlers?.size() != 1) {
throw new RuntimeException('Unable to resolve unique handler for route/request')
}
final Response response = handlers.first().respond(request)
response.addHeader('X-Request-Id', request.requestId())
log.info("response: ${response}")
return response
} catch (e) {
return Response.builder().statusCode(500).body(e.getMessage()).build()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment