diff options
Diffstat (limited to 'src/main/javassist/util/proxy/RuntimeSupport.java')
-rw-r--r-- | src/main/javassist/util/proxy/RuntimeSupport.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main/javassist/util/proxy/RuntimeSupport.java b/src/main/javassist/util/proxy/RuntimeSupport.java index db96bcfb..df931d5f 100644 --- a/src/main/javassist/util/proxy/RuntimeSupport.java +++ b/src/main/javassist/util/proxy/RuntimeSupport.java @@ -16,6 +16,7 @@ package javassist.util.proxy; import java.lang.reflect.Method; +import java.io.Serializable; /** * Runtime support routines that the classes generated by ProxyFactory use. @@ -26,7 +27,9 @@ public class RuntimeSupport { /** * A method handler that only executes a method. */ - public static MethodHandler default_interceptor = new MethodHandler() { + public static MethodHandler default_interceptor = new DefaultMethodHandler(); + + static class DefaultMethodHandler implements MethodHandler, Serializable { public Object invoke(Object self, Method m, Method proceed, Object[] args) throws Exception @@ -166,4 +169,19 @@ public class RuntimeSupport { sbuf.append('L').append(type.getName().replace('.', '/')) .append(';'); } + + /** + * Converts a proxy object to an object that is writable to an + * object stream. This method is called by <code>writeReplace()</code> + * in a proxy class. + * + * @since 3.4 + */ + public static SerializedProxy makeSerializedProxy(Object proxy) + throws java.io.InvalidClassException + { + Class clazz = proxy.getClass(); + return new SerializedProxy(clazz, ProxyFactory.getFilter(clazz), + ProxyFactory.getHandler(clazz)); + } } |