1
2
3
4
5
6
7 package org.mule.routing.correlation;
8
9 import org.mule.api.MuleMessage;
10 import org.mule.api.config.MuleProperties;
11 import org.mule.expression.MessageHeaderExpressionEvaluator;
12
13
14
15
16
17
18
19
20
21 public class CorrelationPropertiesExpressionEvaluator extends MessageHeaderExpressionEvaluator
22 {
23 @Override
24 public final Object evaluate(String name, MuleMessage message)
25 {
26 Object result;
27 if (message != null)
28 {
29 if (MuleProperties.MULE_CORRELATION_ID_PROPERTY.equals(name))
30 {
31 result = getCorrelationId(message);
32 }
33 else if (MuleProperties.MULE_MESSAGE_ID_PROPERTY.equals(name))
34 {
35 result = getMessageId(message);
36 }
37 else
38 {
39 throw new IllegalArgumentException("Property name: " + name
40 + " not recognised by the Correlation Property Extractor");
41 }
42 if (result == null)
43 {
44 throw new IllegalArgumentException(
45 "Property Extractor cannot return a null value. Extractor is: " + getClass().getName());
46 }
47 }
48 else
49 {
50 return super.evaluate(name, message);
51 }
52 return result;
53 }
54
55 public String getMessageId(MuleMessage message)
56 {
57 return message.getUniqueId();
58 }
59
60 public String getCorrelationId(MuleMessage message)
61 {
62 String id = message.getCorrelationId();
63 if (id == null)
64 {
65 id = message.getUniqueId();
66 }
67 return id;
68 }
69 }