View Javadoc

1   package org.srinivas.siteworks.fecamelworks;
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.fecamelworks.FECamelWorksRoute.*;
9   
10  /**
11   * The Class FECamelWorksErrorHandlerProcessor.
12   */
13  public class FECamelWorksErrorHandlerProcessor implements Processor {
14  	public static final String FE_CAMEL_WORKS_ERROR_WHILE_PROCESSING_REQUEST = "FECamelWorks Error While Processing Request";
15  	public static final String FE_CAMEL_WORKS_ERROR_WHILE_UPDATING_A_FIRE_WORK = "FECamelWorks Error While Updating a FireWork";
16  	public static final String FE_CAMEL_WORKS_ERROR_WHILE_FETCHING_LIST_OF_FIRE_WORKS = "FECamelWorks Error While fetching List of  FireWorks";
17  	private static final Logger log = LoggerFactory.getLogger(FECamelWorksErrorHandlerProcessor.class);
18  
19  	/* (non-Javadoc)
20  	 * @see org.apache.camel.Processor#process(org.apache.camel.Exchange)
21  	 */
22  	@Override
23  	public void process(Exchange exchange) throws Exception {
24  		Exception feexception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
25  		log.error("FECamelWorksErrorHandlerProcessor Logging:", feexception);
26  		String FECamelWorksStatus = exchange.getIn().getHeader(FE_ROUTE_STATUS, String.class);
27  		if (FECamelWorksStatus.equalsIgnoreCase(FEFIREWORKSCOLLECTION)) {
28  			errorSetBody(exchange, FE_CAMEL_WORKS_ERROR_WHILE_FETCHING_LIST_OF_FIRE_WORKS);
29  		} else if (FECamelWorksStatus.equalsIgnoreCase(FEUPDATEFIREWORK)) {
30  			errorSetBody(exchange, FE_CAMEL_WORKS_ERROR_WHILE_UPDATING_A_FIRE_WORK);
31  		} else {
32  			errorSetBody(exchange, FE_CAMEL_WORKS_ERROR_WHILE_PROCESSING_REQUEST);
33  			if (feexception != null) {
34  				errorSetBody(exchange, feexception.getMessage());
35  			}
36  		}
37  	}
38  
39  	/**
40  	 * Error set camel body.
41  	 *
42  	 * @param exchange the exchange
43  	 * @param newBody the new body
44  	 */
45  	private void errorSetBody(Exchange exchange, String newBody) {
46  		String body = exchange.getIn().getBody(String.class);
47  		if (newBody != null) {
48  			body = (StringUtils.isNotBlank(body)) ? body + System.getProperty("line.separator") + newBody : newBody;
49  		}
50  		exchange.getIn().setBody(body);
51  	}
52  
53  }