1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.platform.camel.core.closures;
17
18 import groovy.lang.Closure;
19
20 import groovy.transform.stc.ClosureParams;
21 import groovy.transform.stc.SimpleType;
22 import org.apache.camel.Exchange;
23 import org.apache.camel.processor.aggregate.AggregationStrategy;
24
25
26
27
28
29
30
31 public class DelegatingAggregationStrategy extends ClosureAdapter implements AggregationStrategy {
32
33 public DelegatingAggregationStrategy(@ClosureParams(value = SimpleType.class, options = { "org.apache.camel.Exchange", "org.apache.camel.Exchange"})
34 Closure closure) {
35 super(closure);
36 }
37
38 @Override
39 public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
40 Object result = call(oldExchange, newExchange);
41 if (result instanceof Exchange) {
42 return (Exchange)result;
43 } else {
44 return oldExchange;
45 }
46 }
47
48 }