1
2
3
4
5
6
7
8
9
10
11 package org.mule.interceptors;
12
13 import org.mule.impl.MuleMessage;
14 import org.mule.umo.Invocation;
15 import org.mule.umo.UMOException;
16 import org.mule.umo.UMOMessage;
17 import org.mule.util.StringUtils;
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.apache.commons.jxpath.JXPathContext;
23
24
25
26
27
28
29
30
31
32
33 public class JXPathNormalizerInterceptor extends MessageNormalizerInterceptor
34 {
35 private List beforeExpressionsList;
36 private String beforeExpressions;
37 private String afterExpression;
38
39
40
41
42
43
44 public UMOMessage before(Invocation invocation) throws UMOException
45 {
46 if (beforeExpressions != null && beforeExpressionsList.size() > 0)
47 {
48 JXPathContext ctx = JXPathContext.newContext(getOriginalPayload());
49 Object[] result = new Object[beforeExpressionsList.size()];
50 for (int i = 0; i < result.length; i++)
51 {
52 result[i] = ctx.getValue((String)beforeExpressionsList.get(i));
53 }
54 if (result.length == 1)
55 {
56 return new MuleMessage(result[0], invocation.getMessage());
57 }
58 else
59 {
60 return new MuleMessage(result, invocation.getMessage());
61 }
62 }
63 return null;
64 }
65
66
67
68
69
70
71 public UMOMessage after(Invocation invocation) throws UMOException
72 {
73 if (afterExpression != null)
74 {
75 JXPathContext ctx = JXPathContext.newContext(getOriginalPayload());
76 ctx.setValue(afterExpression, invocation.getMessage().getPayload());
77 return new MuleMessage(getOriginalPayload(), invocation.getMessage());
78 }
79 return null;
80 }
81
82 public String getBeforeExpressions()
83 {
84 return beforeExpressions;
85 }
86
87 public void setBeforeExpressions(String beforeExpressions)
88 {
89 this.beforeExpressions = beforeExpressions;
90 String[] exp = StringUtils.splitAndTrim(beforeExpressions, ",");
91 this.beforeExpressionsList = new ArrayList(exp.length);
92 for (int i = 0; i < exp.length; i++)
93 {
94 this.beforeExpressionsList.add(exp[i]);
95
96 }
97 }
98
99 public String getAfterExpression()
100 {
101 return afterExpression;
102 }
103
104 public void setAfterExpression(String afterExpression)
105 {
106 this.afterExpression = afterExpression;
107 }
108 }