Package org.eclipse.sisu.wire
Class DynamicGlue
- java.lang.Object
-
- org.eclipse.sisu.wire.DynamicGlue
-
final class DynamicGlue extends java.lang.ObjectUtility methods for generating dynamicProvider-based proxies.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringILLEGAL_STATE_NAMEprivate static java.lang.StringOBJECT_DESCprivate static java.util.Map<java.lang.String,java.lang.reflect.Method>OBJECT_METHOD_MAPprivate static java.lang.StringOBJECT_NAMEprivate static java.lang.StringPROVIDER_DESCprivate static java.lang.StringPROVIDER_HANDLEprivate static java.lang.StringPROVIDER_NAME
-
Constructor Summary
Constructors Modifier Constructor Description privateDynamicGlue()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static byte[]generateProxyClass(java.lang.String proxyName, java.lang.Class<?> facade)Generates a dynamicProvider-based proxy that reflects the given facade.private static java.lang.String[]getInternalNames(java.lang.Class<?>... clazzes)Returns the internal names of the given classes.private static java.util.Collection<java.lang.reflect.Method>getWrappableMethods(java.lang.Class<?> clazz)Returns the methods that should be wrapped for delegation in the given class.private static voidinit(ClassWriter cw, java.lang.String superName, java.lang.String proxyName)Generates a constructor that accepts aProviderand stores it in an internal field.private static booleanisWrappable(java.lang.reflect.Method method)Returnstrueif the given method should be wrapped; otherwisefalse.private static java.lang.StringsignatureKey(java.lang.reflect.Method method)Returns a signature-based key that identifies the given method in the current class.private static voidwrap(ClassWriter cw, java.lang.String proxyName, java.lang.reflect.Method method)Generates a wrapper that dereferences the storedProviderand invokes the given method.
-
-
-
Field Detail
-
PROVIDER_NAME
private static final java.lang.String PROVIDER_NAME
-
PROVIDER_DESC
private static final java.lang.String PROVIDER_DESC
-
PROVIDER_HANDLE
private static final java.lang.String PROVIDER_HANDLE
- See Also:
- Constant Field Values
-
OBJECT_NAME
private static final java.lang.String OBJECT_NAME
-
OBJECT_DESC
private static final java.lang.String OBJECT_DESC
-
ILLEGAL_STATE_NAME
private static final java.lang.String ILLEGAL_STATE_NAME
-
OBJECT_METHOD_MAP
private static final java.util.Map<java.lang.String,java.lang.reflect.Method> OBJECT_METHOD_MAP
-
-
Method Detail
-
generateProxyClass
public static byte[] generateProxyClass(java.lang.String proxyName, java.lang.Class<?> facade)Generates a dynamicProvider-based proxy that reflects the given facade.- Parameters:
proxyName- The proxy namefacade- The expected facade- Returns:
- Generated proxy bytes
-
init
private static void init(ClassWriter cw, java.lang.String superName, java.lang.String proxyName)
Generates a constructor that accepts aProviderand stores it in an internal field.
-
wrap
private static void wrap(ClassWriter cw, java.lang.String proxyName, java.lang.reflect.Method method)
Generates a wrapper that dereferences the storedProviderand invokes the given method.
-
getInternalNames
private static java.lang.String[] getInternalNames(java.lang.Class<?>... clazzes)
Returns the internal names of the given classes.
-
getWrappableMethods
private static java.util.Collection<java.lang.reflect.Method> getWrappableMethods(java.lang.Class<?> clazz)
Returns the methods that should be wrapped for delegation in the given class.
-
isWrappable
private static boolean isWrappable(java.lang.reflect.Method method)
Returnstrueif the given method should be wrapped; otherwisefalse.
-
signatureKey
private static java.lang.String signatureKey(java.lang.reflect.Method method)
Returns a signature-based key that identifies the given method in the current class.
-
-