Hi, uploaded to https://github.com/lordofthejars/bjugbank you can see the producer at https://github.com/lordofthejars/bjugbank/blob/master/src/main/java/com/lordofthejars/bank/util/DataSourceProducer.javaand both different DAOs https://github.com/lordofthejars/bjugbank/blob/master/src/main/java/com/lordofthejars/bank/account/control/JpaAccountRepository.javaand https://github.com/lordofthejars/bjugbank/blob/master/src/main/java/com/lordofthejars/bank/customer/control/JpaCustomerRepository.javaand of course a test https://github.com/lordofthejars/bjugbank/blob/master/src/test/java/com/lordofthejars/bank/account/WhenACustomerTransferMoney.java
For example if you put a debug point to the producer you will see that is called twice (one for each DAO). Thank you so much for your help, Alex. 2014-04-10 9:16 GMT+02:00 Alex Soto <[email protected]>: > Yes I will publish it this afternoon and I send you the link so you can > check it. Thank you so much, > > > 2014-04-10 9:11 GMT+02:00 Romain Manni-Bucau <[email protected]>: > > do you have the setup i can clone to check it? Managed EM are >> something different than normal beans btw (it works for it) >> Romain Manni-Bucau >> Twitter: @rmannibucau >> Blog: http://rmannibucau.wordpress.com/ >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >> Github: https://github.com/rmannibucau >> >> >> >> 2014-04-10 8:56 GMT+02:00 Alex Soto <[email protected]>: >> > Hi Romain, >> > >> > thank you so much for your quick answer. I am not an expert in CDI but I >> > think that this should be changed, to a more strict mode, let me show an >> > example that this could confuse people: >> > >> > Let's suppose we have two classes which each one produces same interface >> > (but different implementation) with different qualifier: >> > >> > class A { >> > >> > @Produces >> > @MyQualifier1 >> > public C build() { >> > .... >> > } >> > >> > and: >> > >> > >> > class B { >> > >> > @Produces >> > @MyQualifier2 >> > public C build() { >> > ... >> > } >> > >> > } >> > >> > >> > Than I could write an Arquillian test and miss to add one of those >> classes >> > (the A or the B) then when I run the test I could being inject an >> instance >> > which is not the required one, and having a failing test (or even worse >> a >> > fail pass test) which will be only noticed when the real code was used. >> > >> > So IMO I think that would be better to inject nothing and throw an error >> > but of course I understand that this is a CDI spec problem, not a TomEE >> > problem, so maybe from the point of view of TomEE a warning or something >> > similar could be written. >> > >> > WDYT? >> > >> > >> > >> > 2014-04-09 16:31 GMT+02:00 Romain Manni-Bucau <[email protected]>: >> > >> >> Hmm, IIRC it injects by type if the qualifier doesn't matches. >> >> Romain Manni-Bucau >> >> Twitter: @rmannibucau >> >> Blog: http://rmannibucau.wordpress.com/ >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >> >> Github: https://github.com/rmannibucau >> >> >> >> >> >> >> >> 2014-04-09 15:23 GMT+02:00 Alex Soto <[email protected]>: >> >> > Hello, >> >> > >> >> > Currently I am developing a demo application I have start playing >> with >> >> > @Produces method and Entity Manager. Let me show the code: >> >> > >> >> > @ApplicationScoped >> >> > >> >> > public class DataSourceProducer { >> >> > >> >> > @PersistenceContext(unitName = "bank") >> >> > >> >> > EntityManager em; >> >> > >> >> > @Produces @BankEntityManager EntityManager entityManager() { >> >> > >> >> > return this.em; >> >> > >> >> > } >> >> > >> >> > } >> >> > >> >> > >> >> > As you can see I have annotated the produced method with a qualifier. >> >> > >> >> > >> >> > Then I have two Stateless "DAOs": >> >> > >> >> > One that inject entitymanager as: >> >> > >> >> > @Inject >> >> > >> >> > @BankEntityManager >> >> > >> >> > EntityManager em; >> >> > >> >> > and another one that injects as: >> >> > >> >> > @Inject >> >> > >> >> > @MyEnum >> >> > >> >> > EntityManager em; >> >> > >> >> > Notice that the qualifier is different, but when I run the test the >> >> entity >> >> > manager is injected inside DAO in both cases. I don't understand why >> this >> >> > happens if @MyEnum annotation is not used as qualifier in any other >> place >> >> > nor in conjunction with @Produces. >> >> > >> >> > Any idea why this happens? >> >> > >> >> > Thank you so much. >> >> >> > >> > >> > >> > -- >> > +----------------------------------------------------------+ >> > Alex Soto Bueno - Computer Engineer >> > www.lordofthejars.com >> > +----------------------------------------------------------+ >> > > > > -- > +----------------------------------------------------------+ > Alex Soto Bueno - Computer Engineer > www.lordofthejars.com > +----------------------------------------------------------+ > -- +----------------------------------------------------------+ Alex Soto Bueno - Computer Engineer www.lordofthejars.com +----------------------------------------------------------+
