X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=support%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fgeneral%2FThreadSpecificProxyFactory.java;h=ac1ec8fc09d7511b990fcf89b7b86c601b6e7f9c;hb=e9e0d2ee81f5b2b10c3dc2f9e0ee4b522682722c;hp=5cf23cea73c0d30ad04b6df6b5e7841d266b51c9;hpb=5848627da8ebebff9b1a840f70d6f4292323b9b2;p=utils diff --git a/support/general/src/main/java/org/wamblee/general/ThreadSpecificProxyFactory.java b/support/general/src/main/java/org/wamblee/general/ThreadSpecificProxyFactory.java index 5cf23cea..ac1ec8fc 100644 --- a/support/general/src/main/java/org/wamblee/general/ThreadSpecificProxyFactory.java +++ b/support/general/src/main/java/org/wamblee/general/ThreadSpecificProxyFactory.java @@ -16,24 +16,42 @@ package org.wamblee.general; import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** + *
* Thread-specific proxy is used to create implementations of interfaces that * delegate to a thread-specific implementation of the service. + *
* - * It can be used for instance to create a contextual reference to an entity manager - * that delegates to a thread-specific instance. + *+ * It can be used for instance to create a contextual reference to an entity + * manager that delegates to a thread-specific instance. + *
* - * The {@link #set(Object)} method sets the current service instance for the current thread. - * The {@link #get()} method gets the current service instance for the current thread. - * The {@link #getProxy()} method gets a proxy that will delegate at runtime to the thread-specific - * instance. The result from this method can be passed at construction of an object that will be used - * by multiple threads. + *+ * The {@link #set(Object)} method sets the current service instance for the + * current thread. The {@link #get()} method gets the current service instance + * for the current thread. The {@link #getProxy()} method gets a proxy that will + * delegate at runtime to the thread-specific instance. The result from this + * method can be passed at construction of an object that will be used by + * multiple threads. + *
* - * This class is mostly used by other test tools. + *+ * This class is mostly used by infrastructure code (utilities) and test tools. + *
+ * + *+ * Care has been taken so that the invocation handler is serializable. However, + * it is only serializable within one virtual machine. It cannot be used in a + * distributed context where it can be sent to another JVM. + *
+ * + *+ * This class currently does not do any cleanup. So it should not be used in production code + * but only in test utilities. + *
* * @param T * Interface to proxy. @@ -41,22 +59,26 @@ import java.lang.reflect.Proxy; * */ public class ThreadSpecificProxyFactory