|  | @ -0,0 +1,57 @@
 | 
	
		
			
				|  |  | package apisync.processor;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import org.apache.camel.Exchange;
 | 
	
		
			
				|  |  | import org.apache.camel.ExchangePattern;
 | 
	
		
			
				|  |  | import org.apache.camel.Message;
 | 
	
		
			
				|  |  | import org.apache.camel.Processor;
 | 
	
		
			
				|  |  | import org.apache.camel.http.common.HttpMessage;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.io.ByteArrayOutputStream;
 | 
	
		
			
				|  |  | import java.io.IOException;
 | 
	
		
			
				|  |  | import java.io.InputStream;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * @author Airhead
 | 
	
		
			
				|  |  |  * @since 2016-11-13
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | public class ApiProcessor implements Processor {
 | 
	
		
			
				|  |  |     public void process(Exchange exchange) throws Exception {
 | 
	
		
			
				|  |  |         // 因为很明确消息格式是http的,所以才使用这个类
 | 
	
		
			
				|  |  |         // 否则还是建议使用org.apache.camel.Message这个抽象接口
 | 
	
		
			
				|  |  |         HttpMessage message = (HttpMessage) exchange.getIn();
 | 
	
		
			
				|  |  |         InputStream bodyStream = (InputStream) message.getBody();
 | 
	
		
			
				|  |  |         String inputContext = this.analysisMessage(bodyStream);
 | 
	
		
			
				|  |  |         bodyStream.close();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 存入到exchange的out区域
 | 
	
		
			
				|  |  |         if (exchange.getPattern() == ExchangePattern.InOut) {
 | 
	
		
			
				|  |  |             Message outMessage = exchange.getOut();
 | 
	
		
			
				|  |  |             outMessage.setBody("hello.123," + inputContext);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 从stream中分析字符串内容
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param bodyStream
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private String analysisMessage(InputStream bodyStream) throws IOException {
 | 
	
		
			
				|  |  |         if (bodyStream == null) {
 | 
	
		
			
				|  |  |             return "";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
 | 
	
		
			
				|  |  |         byte[] contextBytes = new byte[4096];
 | 
	
		
			
				|  |  |         int realLen;
 | 
	
		
			
				|  |  |         while ((realLen = bodyStream.read(contextBytes, 0, 4096)) != -1) {
 | 
	
		
			
				|  |  |             outStream.write(contextBytes, 0, realLen);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 返回从Stream中读取的字串
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             return new String(outStream.toByteArray(), "UTF-8");
 | 
	
		
			
				|  |  |         } finally {
 | 
	
		
			
				|  |  |             outStream.close();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |