[cdi-dev] Question about section 4.2
John D. Ament
john.d.ament at gmail.com
Thu Jul 4 08:21:35 EDT 2013
Yep, I realized that after I sent the example. I'll have to wait to get
back to work to get the full example down to demo.
On Thu, Jul 4, 2013 at 4:39 AM, Martin Kouba <mkouba at redhat.com> wrote:
> John, in fact the "HandlerTest" deployment archive is not a CDI
> deployment (final WAR does not contain a beans.xml file in its WEB-INF)
> and so the Weld is not started at all and CDIInjectionEnricher just
> fails (no BeanManager available).
>
> Also I wouldn't use the ShrinkWrap JavaArchive (return type of
> @Deployment method) if the default Arquillian protocol is "Servlet 3.0"
> and the resulting deployment will surely be WebArchive - IMHO it's not
> entirely clear what the structure of the resulting test deployment
> should be (in your test case the deployment is added to the WEB-INF/lib
> of the final deployment) and moreover Arquillian must do some more
> "magic" (e.g. for WebArchive the BeansXMLProtocolProcessor adds empty
> beans.xml to WEB-INF if the test deployment contains beans.xml but is
> not WebArchive).
>
> And finally I would also use
> ManifestContainer.addAsServiceProvider(Class<?>, Class<?>...) instead of
> addAsManifestResource() to add CDI extension...
>
> M
>
> Dne 4.7.2013 02:42, John D. Ament napsal(a):
> > Ok, so I was able to reproduce my issue, but it doesn't match Aslak's
> case.
> >
> > https://github.com/johnament/cdifoo
> >
> > It's a very simple project. I used AS7 as my deployment container.
> >
> > In one test, I use beans.xml to autoregister the archive.
> > That passes fine.
> >
> > In the other test, I don't use a beans.xml, instead I use
> >
> > public void addHandlers(@Observes BeforeBeanDiscovery bbd,BeanManager
> > beanManager) {
> >
> > to register the classes in my archive. I even go the extra step of
> > registering my interface and test case, just in case.
> >
> > Could you take a look at the project and let me know if you see
> > something I did wrong?
> >
> > - John
> >
> >
> > On Tue, Jul 2, 2013 at 9:46 AM, John D. Ament <john.d.ament at gmail.com
> > <mailto:john.d.ament at gmail.com>> wrote:
> >
> > Yeah... Aslak's the one who brought this to my attention. It was
> > something I saw happening in AS7 as well. Let me see if I can
> > create a simple project that demos this.
> >
> >
> > On Tue, Jul 2, 2013 at 9:18 AM, Pete Muir <pmuir at redhat.com
> > <mailto:pmuir at redhat.com>> wrote:
> >
> > Yes, if you use @EJB, all bets are off :-) I was assuming John
> > had an EJB that he wanted to @Inject.
> >
> > On 2 Jul 2013, at 14:13, Romain Manni-Bucau
> > <rmannibucau at gmail.com <mailto:rmannibucau at gmail.com>> wrote:
> >
> > > Hi
> > >
> > > i think @EJB Foo<Bar> ignores Bar (or at least the ejb spec
> doesnt define it)
> > >
> > > Romain Manni-Bucau
> > > Twitter: @rmannibucau
> > > Blog: http://rmannibucau.wordpress.com/
> > > LinkedIn: http://fr.linkedin.com/in/rmannibucau
> > > Github: https://github.com/rmannibucau
> > >
> > >
> > >
> > > 2013/7/2 Pete Muir <pmuir at redhat.com <mailto:pmuir at redhat.com
> >>
> > >
> > > On 2 Jul 2013, at 11:28, John D. Ament <john.d.ament at gmail.com<mailto:
> john.d.ament at gmail.com>> wrote:
> > >
> > > > Hi all
> > > >
> > > > In section 4.2 of the CDI spec (both 1.0 and 1.1) there are
> references to injection around generic types. I was wondering if someone
> could clarify this case?
> > > >
> > > > I have an interface:
> > > >
> > > > public interface Handler<? extends Foo> { ... }
> > > >
> > > > and then I have two implementations
> > > >
> > > > public class FarlowHandler implements Handler<Farlow> { .. }
> > > >
> > > > public class BagelHandler implements Handler<Bagel> { ... }
> > > >
> > > > Is it expected that I should be able to inject references to
> these by doing:
> > > >
> > > > @Inject
> > > > private Handler<Farlow> fHandler;
> > > >
> > > > @Inject
> > > > private Handler<Bagel> bHandler;
> > >
> > > Yes.
> > >
> > > >
> > > > ? Is there any expected difference when using EJBs?
> > >
> > > Assuming the interface is part of the local client view of the
> EJB, then no. Obviously, if EJB has any rules around declaring generic
> types in local interfaces, then you need to respect those (IIRC, it
> doesn't).
> > >
> > >
> > > _______________________________________________
> > > cdi-dev mailing list
> > > cdi-dev at lists.jboss.org <mailto:cdi-dev at lists.jboss.org>
> > > https://lists.jboss.org/mailman/listinfo/cdi-dev
> > >
> >
> >
> >
> >
> >
> > _______________________________________________
> > cdi-dev mailing list
> > cdi-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/cdi-dev
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/cdi-dev/attachments/20130704/7f5722b7/attachment-0001.html
More information about the cdi-dev
mailing list