Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. public enum DataErrorEnum {
  2.  
  3. OK(200, "NONE"),
  4. BAD_REQUEST(400, "Server Bad Request"),
  5. UNAUTHORIZED(401, " Server Unauthorized"),
  6. SERVER_TIMEOUT(408, "Server Timeout"),
  7. INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
  8. SERVERS_DOWN(6000, "Servers Down"),
  9. ERROR_SERVICE(6002, "Random Error Occurred on Server");
  10.  
  11. // rest of the code
  12. }
  13.  
  14. DataLogging.logErrors(ex, DataErrorEnum.BAD_REQUEST, keys); // if bad request
  15. DataLogging.logErrors(ex, DataErrorEnum.UNAUTHORIZED, keys); // if unauthorized
  16. DataLogging.logErrors(ex, DataErrorEnum.INTERNAL_SERVER_ERROR, keys); // if server error
  17. DataLogging.logErrors(ex, DataErrorEnum.ERROR_SERVICE, keys); // if some random error occurred on server
  18.  
  19. new DataResponse(result.getBody(), DataErrorEnum.BAD_REQUEST, DataStatusEnum.ERROR)
  20. new DataResponse(result.getBody(), DataErrorEnum.UNAUTHORIZED, DataStatusEnum.ERROR)
  21. new DataResponse(result.getBody(), DataErrorEnum.INTERNAL_SERVER_ERROR, DataStatusEnum.ERROR)
  22. new DataResponse(result.getBody(), DataErrorEnum.ERROR_SERVICE, DataStatusEnum.ERROR)
  23.  
  24. private AsyncRestTemplate restTemplate = new AsyncRestTemplate();
  25.  
  26. @Override
  27. public Future<DataResponse> executeAsync(final DataKey keys) {
  28. final SettableFuture<DataResponse> responseFuture = SettableFuture.create();
  29. // for now I only have one machine in the list
  30. List<String> hostnames = Arrays.asList("machineA");
  31. executeForServers(responseFuture, keys, hostnames.get(0));
  32. return responseFuture;
  33. }
  34.  
  35. private void executeForServers(final SettableFuture<DataResponse> responseFuture, final DataKey keys,
  36. final String hostName) {
  37.  
  38. restTemplate.exchange(generateURL(hostName, key), HttpMethod.GET, keys.getEntity(), String.class).addCallback(
  39. new ListenableFutureCallback<ResponseEntity<String>>() {
  40. @Override
  41. public void onSuccess(ResponseEntity<String> result) {
  42. responseFuture.set(new DataResponse(result.getBody(), DataErrorEnum.OK,
  43. DataStatusEnum.SUCCESS));
  44. }
  45.  
  46. // can we simplify this by making more generic?
  47. @Override
  48. public void onFailure(Throwable ex) {
  49. if (ex instanceof HttpClientErrorException) {
  50. HttpClientErrorException httpException = (HttpClientErrorException) ex;
  51. HttpStatus statusCode = httpException.getStatusCode();
  52. if (statusCode == HttpStatus.BAD_REQUEST) {
  53. DataLogging.logErrors(ex, DataErrorEnum.BAD_REQUEST, keys); // if bad request
  54. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  55. DataErrorEnum.BAD_REQUEST, DataStatusEnum.ERROR));
  56. } else if (statusCode == HttpStatus.UNAUTHORIZED) {
  57. DataLogging.logErrors(ex, DataErrorEnum.UNAUTHORIZED, keys); // if unauthorized
  58. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  59. DataErrorEnum.UNAUTHORIZED, DataStatusEnum.ERROR));
  60. } else if (statusCode == HttpStatus.REQUEST_TIMEOUT) {
  61. DataLogging.logErrors(ex, DataErrorEnum.SERVER_TIMEOUT, keys); // if server timeout
  62. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  63. DataErrorEnum.SERVER_TIMEOUT, DataStatusEnum.ERROR));
  64. } else {
  65. DataLogging.logErrors(ex, DataErrorEnum.ERROR_SERVICE, keys); // some random error on server
  66. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  67. DataErrorEnum.ERROR_SERVICE, DataStatusEnum.ERROR));
  68. }
  69. } else if (ex instanceof HttpServerErrorException) {
  70. HttpServerErrorException httpException = (HttpServerErrorException) ex;
  71. HttpStatus statusCode = httpException.getStatusCode();
  72.  
  73. if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR) {
  74. DataLogging.logErrors(ex, DataErrorEnum.SERVER_TIMEOUT, keys); // if server error
  75. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  76. DataErrorEnum.SERVER_TIMEOUT, DataStatusEnum.ERROR));
  77. } else {
  78. DataLogging.logErrors(ex, DataErrorEnum.ERROR_SERVICE, keys); // some random error on server
  79. responseFuture.set(new DataResponse(httpException.getResponseBodyAsString(),
  80. DataErrorEnum.ERROR_SERVICE, DataStatusEnum.ERROR));
  81. }
  82. } else if (ex instanceof RestClientException) {
  83. DataLogging.logErrors(ex, DataErrorEnum.SERVERS_DOWN, keys); // server down
  84. responseFuture.set(new DataResponse(null, DataErrorEnum.SERVERS_DOWN,
  85. DataStatusEnum.ERROR));
  86. }
  87. }
  88. });
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement