tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: Problem with OpenWebbeans when Iterating over javax.enterprise.inject.Instance<T>
Date Tue, 13 May 2014 14:40:41 GMT
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 <markus.frisch@nobiscum.de>:
> 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
> [@] Markus.Frisch@nobisCum.de<mailto:Markus.Frisch@nobisCum.de>
> [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
>
>
>
>
>
>
>
>
>
>

Mime
View raw message