1
2
3
4
5
6
7
8
9
10
11 package org.mule.extras.spring.remoting;
12
13 import org.mule.transformers.AbstractTransformer;
14 import org.mule.umo.transformer.TransformerException;
15
16 import java.io.ObjectOutputStream;
17
18 import org.apache.commons.io.output.ByteArrayOutputStream;
19 import org.springframework.remoting.support.RemoteInvocationResult;
20
21 public class ObjectToRemoteInvocationResultTransformer extends AbstractTransformer
22 {
23
24 public ObjectToRemoteInvocationResultTransformer()
25 {
26 super();
27 setReturnClass(byte[].class);
28 }
29
30 protected Object doTransform(Object src, String encoding) throws TransformerException
31 {
32 try
33 {
34 if (logger.isDebugEnabled())
35 {
36 logger.debug("ObjectToRemoteInvocationResult.doTransform(" + src + ")");
37 }
38
39 RemoteInvocationResult rval;
40
41 if (src instanceof RemoteInvocationResult)
42 {
43 rval = (RemoteInvocationResult)src;
44 }
45 else
46 {
47 rval = new RemoteInvocationResult(src);
48 }
49
50 ByteArrayOutputStream baos = new ByteArrayOutputStream();
51 ObjectOutputStream oos = new ObjectOutputStream(baos);
52 oos.writeObject(rval);
53 oos.close();
54 return baos.toByteArray();
55 }
56 catch (Exception e)
57 {
58 throw new TransformerException(this, e);
59 }
60 }
61
62 }