NormalScopeProxyFactory proxyFactory = wbc.getNormalScopeProxyFactory();
@Override protected T produce(Map<Interceptor<?>, ?> interceptors, CreationalContextImpl<T> creationalContext) { if (proxyInstance == null) { if (proxy) { NormalScopeProxyFactory proxyFactory = webBeansContext.getNormalScopeProxyFactory(); ClassLoader loader = returnType.getClassLoader(); if (loader == null) { loader = WebBeansUtil.getCurrentClassLoader(); } Class<T> proxyClass = proxyFactory.createProxyClass(loader, returnType); proxyInstance = proxyFactory.createProxyInstance(proxyClass, provider); } else { proxyInstance = provider.get(); } } return proxyInstance; } }
/** * The following code gets generated into the proxy: * * <pre> * Object writeReplace() throws ObjectStreamException * { * return provider; * } * </pre> */ protected Object readResolve() throws ObjectStreamException { WebBeansContext webBeansContext = WebBeansContext.getInstance(); beanManager = webBeansContext.getBeanManagerImpl(); bean = beanManager.getPassivationCapableBean(beanPassivationId); if (bean == null) { throw new NotSerializableException("Failure during de-serialisation: Cannot load Bean with passivationId " + beanPassivationId); } return webBeansContext.getNormalScopeProxyFactory().createNormalScopeProxy(bean); } }
Provider<T> provider = webBeansContext.getNormalScopeProxyFactory().getInstanceProvider(proxy); NormalScopedBeanInterceptorHandler handler = (NormalScopedBeanInterceptorHandler)provider; Bean<T> bean = (Bean<T>)handler.getBean();
instance = webBeansContext.getNormalScopeProxyFactory().unwrapInstance(instance);
if (webBeansContext.getBeanManagerImpl().isNormalScope(scopeClass)) { final BeanContext beanContext = cdiEjbBean.getBeanContext(); final Provider provider = webBeansContext.getNormalScopeProxyFactory().getInstanceProvider(beanContext.getClassLoader(), cdiEjbBean); final NormalScopeProxyFactory normalScopeProxyFactory = webBeansContext.getNormalScopeProxyFactory(); final Class<?> proxyClass = normalScopeProxyFactory.createProxyClass(beanContext.getClassLoader(), beanContext.getBeanClass()); instance = normalScopeProxyFactory.createProxyInstance(proxyClass, provider);
if (webBeansContext.getBeanManagerImpl().isNormalScope(scopeClass)) { final BeanContext beanContext = cdiEjbBean.getBeanContext(); final Provider provider = webBeansContext.getNormalScopeProxyFactory().getInstanceProvider(beanContext.getClassLoader(), cdiEjbBean); final NormalScopeProxyFactory normalScopeProxyFactory = webBeansContext.getNormalScopeProxyFactory(); final Class<?> proxyClass = normalScopeProxyFactory.createProxyClass(beanContext.getClassLoader(), beanContext.getBeanClass()); instance = normalScopeProxyFactory.createProxyInstance(proxyClass, provider);
instance = webBeansContext.getNormalScopeProxyFactory().createNormalScopeProxy(bean);