1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.proxy.interceptor;
19
20 import junit.framework.TestCase;
21 import org.apache.commons.proxy.ProxyFactory;
22
23 import java.io.ByteArrayOutputStream;
24
25 public class TestSerializingInterceptor extends TestCase
26 {
27 public void testWithSerializableParametersAndReturn()
28 {
29 final ObjectEchoImpl target = new ObjectEchoImpl();
30 ObjectEcho echo =
31 (ObjectEcho) new ProxyFactory().createInterceptorProxy(target,
32 new SerializingInterceptor(),
33 new Class[]{ObjectEcho.class});
34 final Object originalParameter = "Hello, World!";
35 final Object returnValue = echo.echoBack(originalParameter);
36 assertNotSame(originalParameter, target.parameter);
37 assertNotSame(originalParameter, returnValue);
38 assertNotSame(returnValue, target.parameter);
39 }
40
41 public void testWithInvalidParameterType()
42 {
43 try
44 {
45 final ObjectEchoImpl target = new ObjectEchoImpl();
46 ObjectEcho echo =
47 (ObjectEcho) new ProxyFactory().createInterceptorProxy(target,
48 new SerializingInterceptor(),
49 new Class[]{ObjectEcho.class});
50 final Object originalParameter = new ByteArrayOutputStream();
51 echo.echoBack(originalParameter);
52 fail("Should not be able to call method with non-serializable parameter type.");
53 }
54 catch (RuntimeException e)
55 {
56
57 }
58
59 }
60
61 public static interface ObjectEcho
62 {
63 public Object echoBack(Object object);
64 }
65
66 public static class ObjectEchoImpl implements ObjectEcho
67 {
68 private Object parameter;
69
70 public Object echoBack(Object object)
71 {
72 this.parameter = object;
73 return object;
74 }
75 }
76 }