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());
>>  > > > > > > > > > >> > > >        
>      }
>>  > > > > > > > > > >> > > >        
> }
>>  > > > > > > > > > >> > > >     }
>>  > > > > > > > > > >> > > > }
>>  > > > > > > > > > >> > > >
>>  > > > > > > > > > >> > >
>>  > > > > > > > > > >> >
>>  > > > > > > > > > >>
>>  > > > > > > > > > >
>>  > > > > > > > > > >
>>  > > > > > > > > >
>>  > > > > > > > >
>>  > > > > > > >
>>  > > > > > >
>>  > > > > >
>>  > > > >
>>  > > >
>>  > >
>>  >
>> 
>

Reply via email to