[weld-dev] Initialising newly registered beans

Peter Royle howardmoon at screamingcoder.com
Mon Nov 30 10:19:30 EST 2009


On 30/11/2009, at 10:29 PM, Pete Muir wrote:

> Why are you doing this?

The ShutdownManager and ParametersFactory beans are currently discovered using conventional classpath scanning. IE: there is a /META-INF/beans.xml in the weld-se jar. Therefore when I create a shaded jar of Weld SE, every class in the dependant jars gets picked up as a simple bean, which obviously wreaks havoc.

> We had this working properly, just passing in the classes to scan in the past using bootstrap.

Not sure what you mean, but if it's easier I'm all ears :).

> All of this stuff you are accessing is internal impl detail in Weld, it is *not* part of the Weld SPI...

Yeah I know but since this part of Weld SE and doesn't need to be portable I just went with the easiest classes to work with. If I need to continue down this path I'll hit you up for some pointers.

Pete.



> 
> On 29 Nov 2009, at 23:21, Peter Royle wrote:
> 
>> Hi,
>> 
>> I've got this extension which I'm using to explicitly register all of the managed beans used by Weld Java SE:
>> 
>> public class WeldSEBeanRegistrant implements Extension
>> {
>> 
>>   private final ClassTransformer transformer = new ClassTransformer(new TypeStore());
>> 
>>   public void registerWeldSEBeans(@Observes AfterBeanDiscovery event, BeanManagerImpl beanManager)
>>   {
>>       addBean(ShutdownManager.class, beanManager, event);
>>       addBean(ParametersFactory.class, beanManager, event);
>>   }
>> 
>>   private void addBean(final Class<?> klass, BeanManagerImpl beanManager, AfterBeanDiscovery event)
>>   {
>>       WeldClass<?> weldClass = WeldClassImpl.of(klass, transformer);
>>       ManagedBean<?> bean = ManagedBean.of(weldClass, beanManager);
>>       event.addBean(bean);
>>       bean.initialize( ___environment___);
>>   }
>> }
>> 
>> My question is: where should I get the value for ___environment___ from? Is there common idiom for this? 
>> 
>> I feel like if I could get access to the 'parent' variable at WeldBootstrap:199 I could call it.getBeanDeployer().getEnvironment() ... but I could be way off!
>> 
>> Cheers,
>> 
>> Pete.
>> 
>> 
>> 
>> _______________________________________________
>> weld-dev mailing list
>> weld-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/weld-dev
> 




More information about the weld-dev mailing list