Hi this is an openwebbeans bug, you can open an issue
Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau 2014-05-13 16:19 GMT+02:00 Markus F. Frisch <[email protected]>: > I get a DefinitionException when trying to iterate over an instance of > org.apache.webbeans.inject.instance.InstanceImpl in the current snapshot of > TomEE+ (i.e. in own 1.2.4). > > What I am trying to do is: > > ————————8<————————>8———————— > @Stateless > public class JobOperator { > > @Inject > private Instance<MyBatchJob> batchJobs; > > … > > private MyBatchJob findMatchingJob(String jobName) { > MyBatchJob batchJob = null; > for (MyBatchJob job : batchJobs) { > if (job.getName().equalsIgnoreCase(jobName)) { > batchJob = job; > break; > } > } > if (batchJob == null) > throw new RuntimeException("There ain’t no Job named '" + jobName > + "'."); > return batchJob; > } > ————————8<————————>8———————— > MyBatchJob is a common interface implemented by all my BatchJobs. > > When this code is running I get the following Exception: > > ————————8<————————>8———————— > org.apache.webbeans.exception.inject.DefinitionException: Unsupported type > null > at org.apache.webbeans.util.ClassUtil.getClazz(ClassUtil.java:950) > at > org.apache.webbeans.container.BeanManagerImpl.getEjbOrJmsProxyReference(BeanManagerImpl.java:804) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:740) > at > org.apache.webbeans.inject.instance.InstanceImpl.iterator(InstanceImpl.java:270) > at > de.nobiscum.rs7030.batch.boundary.JobOperator.findMatchingJob(JobOperator.java:162) > ————————8<————————>8———————— > > I took a look at org.apache.webbeans.inject.instance.InstanceImpl<T> and > found the following: > > ————————8<————————>8———————— > public Iterator<T> iterator() > { > Set<Bean<?>> beans = resolveBeans(); > List<T> instances = new ArrayList<T>(); > parentCreationalContext.putInjectionPoint(injectionPoint); > try > { > for(Bean<?> bean : beans) > { > T instance = (T) > webBeansContext.getBeanManagerImpl().getReference(bean,null, > parentCreationalContext); > ————————8<————————>8———————— > > It looks like this function is passing null as the beanType to getReference() > which in gets handed down to ClassUtil.getClazz() which chokes on that. > > Am I doing something that is not supposed to work here? Or is this a bug? > Should I file a bug report. > > Thanks for your help, > Markus Frisch > > -- > Markus Frisch > [Prokurist / Authorized Representative] > nobisCum Deutschland GmbH > > [T] +49 9302 / 987 97 - 2633 > [M] +49 173 / 91 88 058 > [@] [email protected]<mailto:[email protected]> > [URL] http://www.nobisCum.de > > [Anschrift] Ostring 2-4, 97228 Rottendorf, Germany > [Registergericht] Würzburg, HRB 5159 > [Geschäftsführer] Herbert Stieglitz, Hans-Peter Holl > > > > > > > > > >
