1
2
3
4
5
6
7
8
9
10 package org.mule.transformer;
11
12 import org.mule.api.MuleMessage;
13 import org.mule.api.transformer.Transformer;
14 import org.mule.api.transformer.TransformerException;
15
16 import java.util.Arrays;
17 import java.util.Iterator;
18 import java.util.List;
19
20
21 public class TransformerCollection extends AbstractMessageAwareTransformer
22 {
23 private List transformers;
24
25 public TransformerCollection(List transformers)
26 {
27 if (transformers.size() < 1)
28 {
29 throw new IllegalArgumentException("You must set at least one transformer");
30 }
31 this.transformers = transformers;
32 }
33
34 public TransformerCollection(Transformer[] transformers)
35 {
36 if (transformers.length < 1)
37 {
38 throw new IllegalArgumentException("You must set at least one transformer");
39 }
40 this.transformers = Arrays.asList(transformers);
41 }
42
43 public Object transform(MuleMessage message, String outputEncoding) throws TransformerException
44 {
45 MuleMessage result = message;
46 Object temp = message;
47 Transformer lastTransformer = null;
48 for (Iterator iterator = transformers.iterator(); iterator.hasNext();)
49 {
50 lastTransformer = (Transformer) iterator.next();
51 temp = lastTransformer.transform(temp);
52 if (temp instanceof MuleMessage)
53 {
54 result = (MuleMessage) temp;
55 }
56 else
57 {
58 result.setPayload(temp);
59 }
60 }
61 if (lastTransformer != null && lastTransformer.getReturnClass().equals(MuleMessage.class))
62 {
63 return result;
64 }
65 else
66 {
67 return result.getPayload();
68 }
69 }
70 }