01: /*
02: * $Id: TransformerCollection.java 10489 2008-01-23 17:53:38Z dfeist $
03: * --------------------------------------------------------------------------------------
04: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
05: *
06: * The software in this package is published under the terms of the CPAL v1.0
07: * license, a copy of which has been included with this distribution in the
08: * LICENSE.txt file.
09: */
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: /** TODO */
21: public class TransformerCollection extends
22: AbstractMessageAwareTransformer {
23: private List transformers;
24:
25: public TransformerCollection(List transformers) {
26: if (transformers.size() < 1) {
27: throw new IllegalArgumentException(
28: "You must set at least one transformer");
29: }
30: this .transformers = transformers;
31: }
32:
33: public TransformerCollection(Transformer[] transformers) {
34: if (transformers.length < 1) {
35: throw new IllegalArgumentException(
36: "You must set at least one transformer");
37: }
38: this .transformers = Arrays.asList(transformers);
39: }
40:
41: public Object transform(MuleMessage message, String outputEncoding)
42: throws TransformerException {
43: MuleMessage result = message;
44: Object temp = message;
45: Transformer lastTransformer = null;
46: for (Iterator iterator = transformers.iterator(); iterator
47: .hasNext();) {
48: lastTransformer = (Transformer) iterator.next();
49: temp = lastTransformer.transform(temp);
50: if (temp instanceof MuleMessage) {
51: result = (MuleMessage) temp;
52: } else {
53: result.setPayload(temp);
54: }
55: }
56: if (lastTransformer != null
57: && lastTransformer.getReturnClass().equals(
58: MuleMessage.class)) {
59: return result;
60: } else {
61: return result.getPayload();
62: }
63: }
64: }
|