1
2
3
4
5
6
7 package org.mule.module.atom.transformers;
8
9 import org.mule.api.transformer.TransformerException;
10 import org.mule.transformer.AbstractDiscoverableTransformer;
11 import org.mule.transformer.types.DataTypeFactory;
12
13 import java.io.ByteArrayInputStream;
14 import java.io.InputStream;
15 import java.io.StringReader;
16
17 import org.apache.abdera.Abdera;
18 import org.apache.abdera.model.Document;
19 import org.apache.abdera.model.Element;
20 import org.apache.abdera.model.Feed;
21 import org.apache.abdera.parser.Parser;
22
23
24
25
26
27
28 public class ObjectToFeed extends AbstractDiscoverableTransformer
29 {
30 public ObjectToFeed()
31 {
32 this.registerSourceType(DataTypeFactory.BYTE_ARRAY);
33 this.registerSourceType(DataTypeFactory.INPUT_STREAM);
34 this.registerSourceType(DataTypeFactory.STRING);
35 setReturnDataType(DataTypeFactory.create(Feed.class));
36 }
37
38 @Override
39 public Object doTransform(Object src, String outputEncoding) throws TransformerException
40 {
41 try
42 {
43 Parser parser = Abdera.getInstance().getParser();
44 Document<Element> doc;
45 if (src instanceof InputStream)
46 {
47 doc = parser.parse((InputStream) src, outputEncoding);
48 }
49 else if (src instanceof byte[])
50 {
51 doc = parser.parse(new ByteArrayInputStream((byte[]) src), outputEncoding);
52 }
53 else
54 {
55 doc = parser.parse(new StringReader((String) src));
56 }
57
58
59 return doc.getRoot();
60 }
61 catch (Exception e)
62 {
63 throw new TransformerException(this, e);
64 }
65 }
66 }