Package org.jboss.weld.bean.proxy
Class ClientProxyFactory<T>
- java.lang.Object
-
- org.jboss.weld.bean.proxy.ProxyFactory<T>
-
- org.jboss.weld.bean.proxy.ClientProxyFactory<T>
-
- All Implemented Interfaces:
PrivilegedAction<T>
public class ClientProxyFactory<T> extends ProxyFactory<T>
Proxy factory that generates client proxies, it uses optimizations that are not valid for other proxy types.- Author:
- Stuart Douglas, Marius Bogoevici
-
-
Field Summary
-
Fields inherited from class org.jboss.weld.bean.proxy.ProxyFactory
CONSTRUCTED_FLAG_NAME, DEFAULT_METHOD_RESOLVER, DEFAULT_PROXY_PACKAGE, INIT_METHOD_NAME, LBEAN_IDENTIFIER, LJAVA_LANG_BYTE, LJAVA_LANG_CLASS, LJAVA_LANG_OBJECT, LJAVA_LANG_REFLECT_METHOD, LJAVA_LANG_STRING, LJAVA_LANG_THREAD_LOCAL, METHOD_HANDLER_FIELD_NAME, PROXY_SUFFIX
-
-
Constructor Summary
Constructors Constructor Description ClientProxyFactory(String contextId, Class<?> proxiedBeanType, Set<? extends Type> typeClosure, javax.enterprise.inject.spi.Bean<?> bean)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddFields(org.jboss.classfilewriter.ClassFile proxyClassType, List<DeferredBytecode> initialValueBytecode)protected voidaddSerializationSupport(org.jboss.classfilewriter.ClassFile proxyClassType)Adds special serialization code.Tcreate(BeanInstance beanInstance)Method to create a new proxy that wraps the bean instance.protected voidcreateForwardingMethodBody(org.jboss.classfilewriter.ClassMethod classMethod, MethodInformation methodInfo, org.jboss.classfilewriter.ClassMethod staticConstructor)Calls methodHandler.invoke with a null method parameter in order to get the underlying instance.protected voidgenerateEqualsMethod(org.jboss.classfilewriter.ClassFile proxyClassType)Client proxies are equal to other client proxies for the same bean.protected voidgenerateHashCodeMethod(org.jboss.classfilewriter.ClassFile proxyClassType)Client proxies use the following hashCode:MyProxyName.class.hashCode()protected Class<? extends MethodHandler>getMethodHandlerType()protected StringgetProxyNameSuffix()Returns a suffix to append to the name of the proxy class.protected booleanisMethodAccepted(Method method)-
Methods inherited from class org.jboss.weld.bean.proxy.ProxyFactory
addAdditionalInterfaces, addConstructedGuardToMethodBody, addConstructors, addInterface, addInterfacesFromTypeClosure, addMethods, addMethodsFromClass, addSpecialMethods, createInterceptorBody, createSpecialMethodBody, generateGetMethodHandlerBody, generateSetMethodHandlerBody, getAdditionalInterfaces, getBaseProxyName, getBean, getBeanType, getCachedProxyClass, getContextId, getMethodHandlerField, getProxyClass, invokeMethodHandler, isCreatingProxy, isProxy, resolveClassLoaderForBeanProxy, run, setBeanInstance
-
-
-
-
Method Detail
-
create
public T create(BeanInstance beanInstance)
Description copied from class:ProxyFactoryMethod to create a new proxy that wraps the bean instance.- Overrides:
createin classProxyFactory<T>- Parameters:
beanInstance- the bean instance- Returns:
- a new proxy object
-
addFields
protected void addFields(org.jboss.classfilewriter.ClassFile proxyClassType, List<DeferredBytecode> initialValueBytecode)- Overrides:
addFieldsin classProxyFactory<T>
-
getMethodHandlerType
protected Class<? extends MethodHandler> getMethodHandlerType()
- Overrides:
getMethodHandlerTypein classProxyFactory<T>
-
addSerializationSupport
protected void addSerializationSupport(org.jboss.classfilewriter.ClassFile proxyClassType)
Description copied from class:ProxyFactoryAdds special serialization code. By default this is a nop- Overrides:
addSerializationSupportin classProxyFactory<T>- Parameters:
proxyClassType- the Javassist class for the proxy class
-
createForwardingMethodBody
protected void createForwardingMethodBody(org.jboss.classfilewriter.ClassMethod classMethod, MethodInformation methodInfo, org.jboss.classfilewriter.ClassMethod staticConstructor)Calls methodHandler.invoke with a null method parameter in order to get the underlying instance. The invocation is then forwarded to this instance with generated bytecode.- Overrides:
createForwardingMethodBodyin classProxyFactory<T>
-
generateHashCodeMethod
protected void generateHashCodeMethod(org.jboss.classfilewriter.ClassFile proxyClassType)
Client proxies use the following hashCode:MyProxyName.class.hashCode()- Overrides:
generateHashCodeMethodin classProxyFactory<T>
-
generateEqualsMethod
protected void generateEqualsMethod(org.jboss.classfilewriter.ClassFile proxyClassType)
Client proxies are equal to other client proxies for the same bean. The corresponding java code:return other instanceof MyProxyClassType.class- Overrides:
generateEqualsMethodin classProxyFactory<T>- Parameters:
proxyClassType- The class file
-
getProxyNameSuffix
protected String getProxyNameSuffix()
Description copied from class:ProxyFactoryReturns a suffix to append to the name of the proxy class. The name already consists of_$$_Weld, to which the suffix is added. This allows the creation of different types of proxies for the same class. - Overrides:
getProxyNameSuffixin classProxyFactory<T>- Returns:
- a name suffix
-
isMethodAccepted
protected boolean isMethodAccepted(Method method)
- Overrides:
isMethodAcceptedin classProxyFactory<T>
-
-