I think it's this bug: https://issues.apache.org/jira/browse/OWB-888
> From: [email protected] > Date: Tue, 13 May 2014 16:40:41 +0200 > Subject: Re: Problem with OpenWebbeans when Iterating over > javax.enterprise.inject.Instance<T> > To: [email protected] > > 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 > > > > > > > > > > > > > > > > > > > >
