Rafael, I saw that page about CODI @Advanced. :)
I tried CODI @Advanced, but CDI managed bean was not injected voa @Inject, and then I tried to inject Stateless EJB via @Inject, and that stateless EJB was not injected either. Thanks, Howard On Tue, Nov 20, 2012 at 9:02 AM, Rafael Pestano <rmpest...@yahoo.com.br>wrote: > you can also use CODI @Advanced and then inject "anything" in the > converter, see [1]. > > i hope it helps. > > [1]: > https://cwiki.apache.org/EXTCDI/jsf-usage.html#JSFUsage-DependencyInjection > > > Att, > > Rafael M. Pestano > > Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul > Graduando em Ciência da Computação UFRGS > http://conventionsframework.org > > http://rpestano.wordpress.com/ > @realpestano > > > ________________________________ > De: "Howard W. Smith, Jr." <smithh032...@gmail.com> > Para: Mark Struberg <strub...@yahoo.de>; MyFaces Discussion < > users@myfaces.apache.org> > Cc: "us...@openejb.apache.org" <us...@openejb.apache.org> > Enviadas: Terça-feira, 20 de Novembro de 2012 11:37 > Assunto: Re: Migrating to CDI: injecting stateless/facade in Converter via > facescontext > > Interesting and noted, thanks. Yes, I did hear JSF 2.2 will allow CDI in > facesconverter. Thanks. > On Nov 20, 2012 8:34 AM, "Mark Struberg" <strub...@yahoo.de> wrote: > > > you could also have used CODI BeanManagerProvider#getReference to get > > access to the bean. > > > > The support you need out of the box will come in JSF-2.2. > > > > > > LieGrue, > > strub > > > > > > > > ----- Original Message ----- > > > From: "Howard W. Smith, Jr." <smithh032...@gmail.com> > > > To: us...@openejb.apache.org; MyFaces Discussion < > > users@myfaces.apache.org> > > > Cc: > > > Sent: Tuesday, November 20, 2012 1:56 PM > > > Subject: Re: Migrating to CDI: injecting stateless/facade in Converter > > via facescontext > > > > > >T he goal was to inject bean in facesconverter via CDI, but I don't have > > > this need anymore, since faces converter is not an eligible injection > > > point, so I opted to use request scoped JSF managed beans that have > > > facesconverter defined within the bean. That's working fine. Thanks. > > > > > > Okay, I can cc myfaces user group as well, going forward. :-) > > > On Nov 20, 2012 7:37 AM, "Romain Manni-Bucau" > > > <rmannibu...@gmail.com> > > > wrote: > > > > > >> i'm still not clear about your goal and where you need injection > > >> > > >> maybe share a (runnable) sample to show us what you are talking about > > >> > > >> side note: myfaces list can help you a lot about it too > > >> > > >> *Romain Manni-Bucau* > > >> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* > > >> *Blog: **http://rmannibucau.wordpress.com/*< > > >> http://rmannibucau.wordpress.com/> > > >> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* > > >> *Github: https://github.com/rmannibucau* > > >> > > >> > > >> > > >> > > >> 2012/11/20 Howard W. Smith, Jr. <smithh032...@gmail.com> > > >> > > >> > Interesting, that will allow you to get instance of beans, if > already > > >> > instantiated, and that could have helped in converter, only if > beans > > >> > already injected earlier? > > >> > On Nov 20, 2012 7:11 AM, "Romain Manni-Bucau" > > > <rmannibu...@gmail.com> > > >> > wrote: > > >> > > > >> > > was thinking to > > >> > > > > >> > > > >> > > > http://docs.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html > > >> > > getAttributes() > > >> > > method (depend a bit on your real need) > > >> > > > > >> > > *Romain Manni-Bucau* > > >> > > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* > > >> > > *Blog: **http://rmannibucau.wordpress.com/*< > > >> > > http://rmannibucau.wordpress.com/> > > >> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* > > >> > > *Github: https://github.com/rmannibucau* > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > 2012/11/20 Howard W. Smith, Jr. <smithh032...@gmail.com> > > >> > > > > >> > > > Faces context? Please explain. > > >> > > > On Nov 20, 2012 1:56 AM, "Romain Manni-Bucau" > > > < > > >> rmannibu...@gmail.com> > > >> > > > wrote: > > >> > > > > > >> > > > > You cant use faces context? > > >> > > > > Le 20 nov. 2012 03:01, "Howard W. Smith, Jr." > > > < > > >> > smithh032...@gmail.com> > > >> > > a > > >> > > > > écrit : > > >> > > > > > > >> > > > > > For minimal changes, I'm adding FacesConverter > > > to JSF > > >> requestscoped > > >> > > > > > managedBean's as per the Stackoverflow answer > > > below: > > >> > > > > > > > >> > > > > > How can I inject in @FacesConverter?< > > >> > > > > > http://stackoverflow.com/a/13156834/933054> > > >> > > > > > > > >> > > > > > Yes, this means more classes in the project, but > > > honestly, I have > > >> > not > > >> > > > had > > >> > > > > > to spend much time 'maintaining' my > > > Converter classes at all. I > > >> > just > > >> > > > > tested > > >> > > > > > this concept, and I'm not experiencing this > > > exceptioin any more. > > >> > > > > > > > >> > > > > > While testing the above, I see more exceptions to > > > resolve related > > >> > to > > >> > > > > > migrating to CDI. Will let you all know, if I have > > > any more > > >> > > questions. > > >> > > > > > > > >> > > > > > Thanks for all the responses/help, so far. :) > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > On Mon, Nov 19, 2012 at 7:20 PM, Romain > > > Manni-Bucau > > >> > > > > > <rmannibu...@gmail.com>wrote: > > >> > > > > > > > >> > > > > > > If it is a nested class you need it otherwise > > > (class foo in > > >> > > foo.java > > >> > > > > > file) > > >> > > > > > > you dont need it > > >> > > > > > > Le 20 nov. 2012 01:16, "Howard W. Smith, > > > Jr." < > > >> > > > smithh032...@gmail.com> > > >> > > > > a > > >> > > > > > > écrit : > > >> > > > > > > > > >> > > > > > > > Good question. I removed > > > 'static', because I didn't see it in > > >> > the > > >> > > > > code > > >> > > > > > at > > >> > > > > > > > following URLs: > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-DependencyInjection > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > http://stackoverflow.com/questions/7531449/cdi-injection-into-a-facesconverter > > >> > > > > > > > > > >> > > > > > > > > > > https://issues.apache.org/jira/browse/EXTCDI-127 > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > On Mon, Nov 19, 2012 at 4:30 PM, Romain > > > Manni-Bucau > > >> > > > > > > > <rmannibu...@gmail.com>wrote: > > >> > > > > > > > > > >> > > > > > > > > Why removing static? It means it is > > > no more manageable by > > >> cdi > > >> > > > (cdi > > >> > > > > > cant > > >> > > > > > > > do > > >> > > > > > > > > a new on it) > > >> > > > > > > > > Le 19 nov. 2012 22:13, "Howard > > > W. Smith, Jr." < > > >> > > > > > smithh032...@gmail.com> > > >> > > > > > > a > > >> > > > > > > > > écrit : > > >> > > > > > > > > > > >> > > > > > > > > > @Advanced was found in the > > > following: > > >> > > > > > > > > > > > >> > > > > > > > > > import > > >> org.apache.myfaces.extensions.cdi.core.api.Advanced; > > >> > > > > > > > > > > > >> > > > > > > > > > After some tinkering, I > > > removed 'static' from the > > >> following > > >> > > > > > > definition, > > >> > > > > > > > > > > > >> > > > > > > > > > public static class > > > AddressTypeControllerConverter > > >> > implements > > >> > > > > > > > Converter { > > >> > > > > > > > > > > > >> > > > > > > > > > I also added @Advanced to the > > > FacesConverter/Converter, > > >> and > > >> > > > > latest > > >> > > > > > > > error > > >> > > > > > > > > is > > >> > > > > > > > > > the following: > > >> > > > > > > > > > > > >> > > > > > > > > > Nov 19, 2012 4:08:21 PM > > >> > > > > > javax.faces.component._ExternalSpecifications > > >> > > > > > > > > > isBeanValidationAvailable > > >> > > > > > > > > > INFO: MyFaces Bean Validation > > > support enabled > > >> > > > > > > > > > Nov 19, 2012 4:08:21 PM > > >> > > > > > > > > > org.apache.myfaces.application.ApplicationImpl > > >> > > > > > > > > > internalCreateConverter > > >> > > > > > > > > > SEVERE: Could not instantiate > > > converter class > > >> > > > > > > > > > > > >> > > > > > > > jsf.address.pf_AddressTypeController$AddressTypeControllerConverter > > >> > > > > > > > > > > > > java.lang.InstantiationException: > > >> > > > > > > > > > > > >> > > > > > > > jsf.address.pf_AddressTypeController$AddressTypeControllerConverter > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > On Mon, Nov 19, 2012 at 3:07 > > > PM, Howard W. Smith, Jr. < > > >> > > > > > > > > > smithh032...@gmail.com> > > > wrote: > > >> > > > > > > > > > > > >> > > > > > > > > > > I searched google, found > > > the following: > > >> > > > > > > > > > > > > >> > > > > > > > > > > CDI Injection into a > > > FacesConverter< > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > http://stackoverflow.com/questions/7531449/cdi-injection-into-a-facesconverter > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > which lead me to: > > >> > > > > > > > > > > > > >> > > > > > > > > > > MyFaces Extensions CDI > > >> JSF Usage > Dependency > > >> > Injection< > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-DependencyInjection > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > but I don't which > > > library to import for @Advanced. > > >> > > > > > > > > > > > > >> > > > > > > > > > > If @Advanced can be used > > > (since I am using CODI), then > > >> > this > > >> > > > > would > > >> > > > > > > be > > >> > > > > > > > > > great. > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > On Mon, Nov 19, 2012 at > > > 2:56 PM, Romain Manni-Bucau < > > >> > > > > > > > > > rmannibu...@gmail.com > > >> > > > > > > > > > > > wrote: > > >> > > > > > > > > > > > > >> > > > > > > > > > >> Maybe use > > > BeanProvider of deltaspike > > >> > > > > > > > > > >> Le 19 nov. 2012 > > > 20:50, "Howard W. Smith, Jr." < > > >> > > > > > > > smithh032...@gmail.com > > >> > > > > > > > > > > > >> > > > > > > > > > a > > >> > > > > > > > > > >> écrit : > > >> > > > > > > > > > >> > > >> > > > > > > > > > >> > Hmmm... after > > > thinking about it, I remembered to use > > >> > > > @Inject > > >> > > > > > on > > >> > > > > > > > the > > >> > > > > > > > > > bean > > >> > > > > > > > > > >> > which I want to > > > inject. So, I did the following: > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > > > @FacesConverter(forClass = AddressType.class) > > >> > > > > > > > > > >> > public > > > static class > > >> AddressTypeControllerConverter > > >> > > > > > > implements > > >> > > > > > > > > > >> Converter > > >> > > > > > > > > > >> > { > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > @Inject > > >> > > > > > > > > > >> > private > > > pf_AddressTypeController controller; > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > public > > > Object getAsObject(FacesContext > > >> > > > facesContext, > > >> > > > > > > > > > UIComponent > > >> > > > > > > > > > >> > component, > > > String value) { > > >> > > > > > > > > > >> > if > > > (value == null || value.length() == > > >> 0) > > >> > { > > >> > > > > > > > > > >> > > > > return null; > > >> > > > > > > > > > >> > } > > >> > > > > > > > > > >> > > > > return > > >> > > > controller.ejbFacade.find(getKey(value)); > > >> > > > > > > > > > >> > } > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > but > > > 'controller' is still not being injected. I even > > >> > > tried > > >> > > > > the > > >> > > > > > > > same > > >> > > > > > > > > > for > > >> > > > > > > > > > >> the > > >> > > > > > > > > > >> > actual > > > 'ejbFacade' (which is a stateless bean), but > > >> > > that, > > >> > > > > too, > > >> > > > > > > > > > resulted > > >> > > > > > > > > > >> in > > >> > > > > > > > > > >> > a > > > NullPointerException, which tells me that @Inject > > >> is > > >> > > not > > >> > > > > > > > injecting > > >> > > > > > > > > > >> > > > > pf_AddressTypeController (@sessionscoped bean) OR > > >> > > > ejbFacade > > >> > > > > > > > > > (@Stateless > > >> > > > > > > > > > >> > bean instance of > > > AddressTypeFacade). > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > Is there a > > > general practice used for injecting beans > > >> > in > > >> > > > > > > > Converters.. > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > On Mon, Nov 19, > > > 2012 at 2:38 PM, Romain Manni-Bucau > > >> > > > > > > > > > >> > > > > <rmannibu...@gmail.com>wrote: > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > Can you > > > reproduce it in a sample? What is on the > > >> npe > > >> > > > line? > > >> > > > > > > > > > >> > > Le 19 nov. > > > 2012 20:25, "Howard W. Smith, Jr." < > > >> > > > > > > > > > smithh032...@gmail.com> > > >> > > > > > > > > > >> a > > >> > > > > > > > > > >> > > écrit : > > >> > > > > > > > > > >> > > > > >> > > > > > > > > > >> > > > I am > > > still migrating my app from JSF Managed > > >> beans > > >> > > to > > >> > > > > CDI > > >> > > > > > > > > managed > > >> > > > > > > > > > >> > beans, > > >> > > > > > > > > > >> > > so > > >> > > > > > > > > > >> > > > I am > > > (regression) testing, and I came across the > > >> > > > > exception > > >> > > > > > > > below > > >> > > > > > > > > > >> when > > >> > > > > > > > > > >> > > > > > > attempting to add a record into the database on > > >> > one > > >> > > of > > >> > > > > the > > >> > > > > > > > xhtml > > >> > > > > > > > > > >> pages. > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > Caused > > > by: java.lang.NullPointerException > > >> > > > > > > > > > >> > > > > > > at > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > jsf.address.pf_AddressTypeController$AddressTypeControllerConverter.getAsObject(pf_AddressTypeController.java:283) > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > The > > > exception is caused by this line below. > > >> > > > *ejbFacade* > > >> > > > > > is a > > >> > > > > > > > > > >> stateless > > >> > > > > > > > > > >> > > bean > > >> > > > > > > > > > >> > > > > > > injected by @Inject. > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > return > > >> > > > > > > controller.*ejbFacade*.find(getKey(value)); > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > The > > > code below is as-is using JSF Managed Beans. > > >> > > > Please > > >> > > > > > > advise > > >> > > > > > > > > on > > >> > > > > > > > > > >> how I > > >> > > > > > > > > > >> > > > should > > > update the following code, so it will > > >> work > > >> > > well > > >> > > > > > with > > >> > > > > > > > CDI. > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > @FacesConverter(forClass = > > >> AddressType.class) > > >> > > > > > > > > > >> > > > > > > public static class > > >> > > AddressTypeControllerConverter > > >> > > > > > > > > implements > > >> > > > > > > > > > >> > > Converter > > >> > > > > > > > > > >> > > > { > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > public Object getAsObject(FacesContext > > >> > > > > > facesContext, > > >> > > > > > > > > > >> > UIComponent > > >> > > > > > > > > > >> > > > > > > component, String value) { > > >> > > > > > > > > > >> > > > > > > if (value == null || value.length() > > >> == > > >> > > 0) > > >> > > > { > > >> > > > > > > > > > >> > > > > > > return null; > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > > pf_AddressTypeController controller > > >> = > > >> > > > > > > > > > >> > > > > > > (pf_AddressTypeController) > > >> > > > > > > > > > >> > > > > facesContext.getApplication().getELResolver(). > > >> > > > > > > > > > >> > > > > > >> > > > > getValue(facesContext.getELContext(), > > >> > > > > > > > null, > > >> > > > > > > > > > >> > > > > > > "pf_addressTypeController"); > > >> > > > > > > > > > >> > > > > > > return > > >> > > > > > controller.ejbFacade.find(getKey(value)); > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > java.lang.Integer getKey(String value) { > > >> > > > > > > > > > >> > > > > > > java.lang.Integer key; > > >> > > > > > > > > > >> > > > > > > key = Integer.valueOf(value); > > >> > > > > > > > > > >> > > > > > > return key; > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > String getStringKey(java.lang.Integer > > >> > > value) { > > >> > > > > > > > > > >> > > > > > > StringBuffer sb = new > > >> StringBuffer(); > > >> > > > > > > > > > >> > > > > > > sb.append(value); > > >> > > > > > > > > > >> > > > > > > return sb.toString(); > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > > > public String getAsString(FacesContext > > >> > > > > > facesContext, > > >> > > > > > > > > > >> > UIComponent > > >> > > > > > > > > > >> > > > > > > component, Object object) { > > >> > > > > > > > > > >> > > > > > > if (object == null) { > > >> > > > > > > > > > >> > > > > > > return null; > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > > if (object instanceof AddressType) { > > >> > > > > > > > > > >> > > > > > > AddressType o = (AddressType) > > >> > > object; > > >> > > > > > > > > > >> > > > > > > return > > >> > > > > getStringKey(o.getAddressTypeId()); > > >> > > > > > > > > > >> > > > > > > } else { > > >> > > > > > > > > > >> > > > > > > throw new > > >> > > > > IllegalArgumentException("object > > >> > > > > > > " + > > >> > > > > > > > > > >> object > > >> > > > > > > > > > >> > + " > > >> > > > > > > > > > >> > > > is of > > > type " + object.getClass().getName() + "; > > >> > > > expected > > >> > > > > > > type: > > >> > > > > > > > > " + > > >> > > > > > > > > > >> > > > > > > pf_AddressTypeController.class.getName()); > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > > > > } > > >> > > > > > > > > > >> > > > } > > >> > > > > > > > > > >> > > > } > > >> > > > > > > > > > >> > > > > > >> > > > > > > > > > >> > > > > >> > > > > > > > > > >> > > > >> > > > > > > > > > >> > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > >