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.producer;
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 ProducerStringProcessingInterceptor 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 Message message;
42
43
44 if (supportSegmentFragmentation && (segmentFragmentationThreshold >= 5)) {
45 message = exchange.getIn();
46 String s = message.getBody(String.class);
47 s = FragmentationUtils.ensureMaximalSegmentsLength(s, segmentFragmentationThreshold);
48 message.setBody(s);
49 }
50
51
52 getWrappedProcessor().process(exchange);
53
54
55 message = Exchanges.resultMessage(exchange);
56 message.setBody(Hl7v2MarshalUtils.convertBodyToString(
57 message,
58 charsetName,
59 supportSegmentFragmentation));
60 }
61 }