1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.platform.camel.ihe.mllp.core.intercept.consumer;
17
18 import org.apache.camel.Exchange;
19 import org.apache.camel.Message;
20 import org.openehealth.ipf.platform.camel.core.util.Exchanges;
21 import org.openehealth.ipf.platform.camel.ihe.core.InterceptorSupport;
22 import org.openehealth.ipf.platform.camel.ihe.hl7v2.Hl7v2MarshalUtils;
23 import org.openehealth.ipf.platform.camel.ihe.mllp.core.FragmentationUtils;
24 import org.openehealth.ipf.platform.camel.ihe.mllp.core.MllpEndpoint;
25
26
27
28
29
30
31
32 public class ConsumerStringProcessingInterceptor extends InterceptorSupport<MllpEndpoint<?,?,?>> {
33
34 @Override
35 public void process(Exchange exchange) throws Exception {
36 final String charsetName = getEndpoint().getCharsetName();
37 exchange.setProperty(Exchange.CHARSET_NAME, charsetName);
38
39 boolean supportSegmentFragmentation = getEndpoint().isSupportSegmentFragmentation();
40 int segmentFragmentationThreshold = getEndpoint().getSegmentFragmentationThreshold();
41
42
43 Message message = exchange.getIn();
44 message.setBody(Hl7v2MarshalUtils.convertBodyToString(
45 message,
46 charsetName,
47 supportSegmentFragmentation));
48
49
50 getWrappedProcessor().process(exchange);
51
52
53 if (supportSegmentFragmentation && (segmentFragmentationThreshold >= 5)) {
54 message = Exchanges.resultMessage(exchange);
55 String s = message.getBody(String.class);
56 s = FragmentationUtils.ensureMaximalSegmentsLength(s, segmentFragmentationThreshold);
57 message.setBody(s);
58 }
59
60 }
61 }