aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist/util/proxy/RuntimeSupport.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/javassist/util/proxy/RuntimeSupport.java')
-rw-r--r--src/main/javassist/util/proxy/RuntimeSupport.java20
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));
+ }
}