1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.filters;
12
13 import static org.mule.util.ClassUtils.equal;
14 import static org.mule.util.ClassUtils.hash;
15
16 import org.mule.api.MuleMessage;
17 import org.mule.api.routing.filter.Filter;
18 import org.mule.util.ClassUtils;
19
20
21
22
23
24 public class PayloadTypeFilter implements Filter
25 {
26 private Class expectedType;
27
28 public PayloadTypeFilter()
29 {
30 super();
31 }
32
33 public PayloadTypeFilter(String expectedType) throws ClassNotFoundException
34 {
35 this(ClassUtils.loadClass(expectedType, PayloadTypeFilter.class));
36 }
37
38 public PayloadTypeFilter(Class expectedType)
39 {
40 this.expectedType = expectedType;
41 }
42
43 public boolean accept(MuleMessage message)
44 {
45 return (expectedType != null ? expectedType.isAssignableFrom(message.getPayload().getClass()) : false);
46 }
47
48 public Class getExpectedType()
49 {
50 return expectedType;
51 }
52
53 public void setExpectedType(Class expectedType)
54 {
55 this.expectedType = expectedType;
56 }
57
58 public boolean equals(Object obj)
59 {
60 if (this == obj) return true;
61 if (obj == null || getClass() != obj.getClass()) return false;
62
63 final PayloadTypeFilter other = (PayloadTypeFilter) obj;
64 return equal(expectedType, other.expectedType);
65 }
66
67 public int hashCode()
68 {
69 return hash(new Object[]{this.getClass(), expectedType});
70 }
71 }