1 package org.srinivas.siteworks.rlrestserver;
2
3 import org.apache.camel.Exchange;
4 import org.apache.camel.Processor;
5 import org.apache.commons.lang3.StringUtils;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8 import static org.srinivas.siteworks.rlrestserver.RLRestServerRoute.*;
9
10
11
12
13 public class RLRestServerErrorHandlerProcessor implements Processor {
14 public static final String RL_REST_SERVER_ERROR_WHILE_PROCESSING_REQUEST = "RLRestServer Error While Processing Request";
15 public static final String RL_REST_SERVER_ERROR_WHILE_POST_PROCESSING_DB_RESPONSE = "RLRestServer Error While Post Processing DbResponse";
16 public static final String RL_REST_SERVER_ERROR_WHILE_UPDATING_A_FIRE_WORK = "RLRestServer Error While Updating a FireWork";
17 public static final String RL_REST_SERVER_ERROR_WHILE_FETCHING_LIST_OF_FIRE_WORKS = "RLRestServer Error While fetching List of FireWorks";
18
19 private static final Logger log = LoggerFactory.getLogger(RLRestServerErrorHandlerProcessor.class);
20
21
22
23
24 @Override
25 public void process(Exchange exchange) throws Exception {
26 Exception rlexception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
27 log.error("RLRestServerErrorHandlerProcessor Logging:", rlexception);
28 String RLRestServerStatus = exchange.getIn().getHeader(RL_ROUTE_STATUS, String.class);
29
30 if (RLRestServerStatus.equalsIgnoreCase(RLFIREWORKSCOLLECTION)) {
31 errorSetBody(exchange, RL_REST_SERVER_ERROR_WHILE_FETCHING_LIST_OF_FIRE_WORKS);
32 } else if (RLRestServerStatus.equalsIgnoreCase(RLUPDATEFIREWORK)) {
33 errorSetBody(exchange, RL_REST_SERVER_ERROR_WHILE_UPDATING_A_FIRE_WORK);
34 } else if (RLRestServerStatus.equalsIgnoreCase(RLRESPONSEPROCESS)) {
35 log.info("Exception Body" + exchange.getIn().getBody(String.class));
36 errorSetBody(exchange, RL_REST_SERVER_ERROR_WHILE_POST_PROCESSING_DB_RESPONSE);
37 } else {
38 errorSetBody(exchange, RL_REST_SERVER_ERROR_WHILE_PROCESSING_REQUEST);
39 if (rlexception != null) {
40 errorSetBody(exchange, rlexception.getMessage());
41 }
42 }
43 }
44
45
46
47
48
49
50
51 private void errorSetBody(Exchange exchange, String newBody) {
52 String body = exchange.getIn().getBody(String.class);
53 if (newBody != null) {
54 body = (StringUtils.isNotBlank(body)) ? body + System.getProperty("line.separator") + newBody : newBody;
55 }
56 exchange.getIn().setBody(body);
57 }
58 }