(no commit message)
[utils] / support / general / src / test / java / org / wamblee / general / LookupProxyFactoryTest.java
index c7650906ffa2488103a72c606fcd8a6d93aca105..dd8930c0df88250e0e6d95ef73415e69ec05765c 100644 (file)
@@ -18,6 +18,8 @@ package org.wamblee.general;
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
+import java.io.Serializable;
+
 import javax.naming.InitialContext;
 
 import org.junit.After;
@@ -43,9 +45,9 @@ public class LookupProxyFactoryTest {
     public void setUp() throws Exception {
         intf = mock(MyInterface.class);
         lookup = mock(Lookup.class);
-        
+
         LookupProxyFactory<MyInterface> factory = new LookupProxyFactory<MyInterface>(
-            MyInterface.class, lookup); 
+            MyInterface.class, lookup);
         proxy = factory.getProxy();
     }
 
@@ -65,7 +67,8 @@ public class LookupProxyFactoryTest {
 
     @Test(expected = LookupException.class)
     public void testNotFoundAtJndi() throws Exception {
-        when(lookup.lookup()).thenThrow(new RuntimeException("Object not found"));
+        when(lookup.lookup()).thenThrow(
+            new RuntimeException("Object not found"));
         proxy.execute();
     }
 
@@ -94,4 +97,36 @@ public class LookupProxyFactoryTest {
         }
     }
 
+    private static final class MyLookup implements Lookup {
+
+        @Override
+        public Object lookup() throws Exception {
+            return new MyInterface() {
+
+                @Override
+                public int execute() {
+                    return 10;
+                }
+            };
+        }
+    }
+
+    @Test
+    public void testProxyMustBerializable() throws Exception {
+        lookup = new MyLookup();
+        LookupProxyFactory<MyInterface> factory = new LookupProxyFactory<MyInterface>(
+            MyInterface.class, lookup);
+        proxy = factory.getProxy();
+
+        assertEquals(10, proxy.execute());
+
+        assertTrue(proxy instanceof Serializable);
+
+        proxy = ObjectSerializationUtils.deserialize(ObjectSerializationUtils
+            .serialize(proxy), MyInterface.class);
+
+        // and it should still work
+        assertEquals(10, proxy.execute());
+    }
+
 }