1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing;
12
13 import org.mule.api.MessagingException;
14 import org.mule.api.MuleEvent;
15 import org.mule.api.routing.RoutingException;
16 import org.mule.api.transformer.TransformerException;
17 import org.mule.transformer.simple.ByteArrayToHexString;
18 import org.mule.transformer.simple.SerializableToByteArray;
19
20 import java.security.MessageDigest;
21 import java.security.NoSuchAlgorithmException;
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class IdempotentSecureHashMessageFilter extends IdempotentMessageFilter
36 {
37 private String messageDigestAlgorithm = "SHA-256";
38
39 private final SerializableToByteArray objectToByteArray = new SerializableToByteArray();
40 private final ByteArrayToHexString byteArrayToHexString = new ByteArrayToHexString();
41
42 @Override
43 protected String getIdForEvent(MuleEvent event) throws MessagingException
44 {
45 try
46 {
47 MessageDigest md = MessageDigest.getInstance(messageDigestAlgorithm);
48 return (String)byteArrayToHexString.transform(md.digest((byte[]) objectToByteArray.transform(event.getMessage()
49 .getPayload())));
50 }
51 catch (NoSuchAlgorithmException nsa)
52 {
53 throw new RoutingException(event,this, nsa);
54 }
55 catch (TransformerException te)
56 {
57 throw new RoutingException(event, this, te);
58 }
59 }
60
61 public String getMessageDigestAlgorithm()
62 {
63 return messageDigestAlgorithm;
64 }
65
66 public void setMessageDigestAlgorithm(String messageDigestAlgorithm)
67 {
68 this.messageDigestAlgorithm = messageDigestAlgorithm;
69 }
70 }