Lets ignore the @Inject @Named for a minute, as I think it is distracting
from the main issue of the producer methods default name.
If I have a bean with a producer field:
@Produces @Named Products getProducts()
You would agree its el-name should be "products" and I should be able to
reference it in a EL-expression as "products". For example
<h:outputText value="#{products"/>?
I'll give this a try later today to be sure it works.
Sincerely,
Joe
On Tue, Jan 19, 2010 at 2:33 AM, Gurkan Erdogdu <[email protected]>wrote:
> As specified in specification, this is solely used for integration with
> legacy code that uses @Named annotation as differentiating beans with
> strings. For example,if you use JSR-330 impl and @Named(value), to
> differentiate beans, you could resolve those beans with JSR-299 using
> @Named(value). So using value annotation member is required for injection
> points that use @Named annotation as qualifiers
>
> I have also tried this via Weld, it does not work with too. But if you add
> @Named("products") into producer method, it works like in OWB!
>
> Thanks;
>
> --Gurkan
>
>
> 2010/1/19 Gurkan Erdogdu <[email protected]>
>
> > Joe, you are right that producer method name is getting from method name
> > if there is no Named(value).
> >
> > In the example, default name of the producer bean is "products." There is
> > no problem in this. The problem is how to resolve this producer method.
> In
> > the example, tried with qualifiers, public @Inject @Named("products")
> String
> > N3;. This does not work because there is no bean with qualifier
> > @Named("products"). In other words, this producer method has a Qualifier
> > "@Named(value=)" and name is "products".
> >
> > If you get producer method bean with name, as such,
> > BeanManager.getBeans("products"), it works!
> >
> > Thanks;
> >
> > 2010/1/18 Joseph Bergmark <[email protected]>
> >
> > While I agree that injecting using the @Name with the String value isn't
> >> recommended, it works right now.
> >>
> >> That said, section 3.3.8 seems to clearly indicate that the @Named
> >> qualifier
> >> for a producer method should provide a default value that follows
> JavaBean
> >> property getter names. IE a method named getProducts() should get the
> >> default name (if annotated with @Named) of "products" and not
> >> "getProducts"
> >> which appears to be what is happening now.
> >>
> >> I do not believe this Issue is invalid, but perhaps I am misreading
> 3.3.8?
> >>
> >> Sincerely,
> >>
> >> Joe
> >>
> >> On Mon, Jan 18, 2010 at 4:10 PM, Gurkan Erdogdu (JIRA) <[email protected]
> >> >wrote:
> >>
> >> >
> >> > [
> >> >
> >>
> https://issues.apache.org/jira/browse/OWB-239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> >> ]
> >> >
> >> > Gurkan Erdogdu closed OWB-239.
> >> > ------------------------------
> >> >
> >> > Resolution: Invalid
> >> >
> >> > This is true action. @Named is a qualifier. You have to give it a
> >> > @Named(value) in producer method. So you have to define producer
> method
> >> as
> >> >
> >> > @Produces
> >> > @Named("products")
> >> > public String getProducts()
> >> > {
> >> > return "Sucess from getProducts";
> >> > }
> >> >
> >> > @Named value does not get producer method name automatically.
> >> >
> >> > Also using @Named with string members are not recommended usage. See
> >> > specification 3.11. The qualifier @Named at injection points
> >> >
> >> >
> >> > > JavaBeans property getter naming convention with Producer Methods
> >> gives
> >> > UnsatisfiedResolutionException
> >> > >
> >> >
> >>
> ------------------------------------------------------------------------------------------------------
> >> > >
> >> > > Key: OWB-239
> >> > > URL: https://issues.apache.org/jira/browse/OWB-239
> >> > > Project: OpenWebBeans
> >> > > Issue Type: Bug
> >> > > Components: Injection and Lookup
> >> > > Affects Versions: M3
> >> > > Environment: Windows, Eclipse running Jetty
> >> > > Reporter: Bill Wigger
> >> > > Assignee: Gurkan Erdogdu
> >> > > Fix For: M3
> >> > >
> >> > >
> >> > > Problem:
> >> > > JavaBeans property getter naming convention with Producer Methods
> >> gives
> >> > UnsatisfiedResolutionException
> >> > > Injection in class X:
> >> > > @Produces @Named public String getProducts() {
> >> > > return "Sucess from getProducts";
> >> > > }
> >> > > Injection Point in Y:
> >> > > public @Inject @Named("products") String N3;
> >> > > public String getTestNamed3() {
> >> > > String y = N3;
> >> > > return y;
> >> > > }
> >> > > Actual Results when getTestNamed3 is called from a JSP:
> >> > > javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >> > [java.lang.String] is not found with the qualifiers
> >> > [[email protected](value=products)]
> >> > > at
> >> >
> >>
> org.apache.webbeans.container.ResolutionUtil.checkResolvedBeans(ResolutionUtil.java:93)
> >> > > at
> >> >
> >>
> org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(InjectionResolver.java:232)
> >> > > at
> >> >
> >>
> org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:90)
> >> > > etc....
> >> > >
> >> > > Desired Results:
> >> > > "Sucess from getProducts"
> >> >
> >> > --
> >> > This message is automatically generated by JIRA.
> >> > -
> >> > You can reply to this email to add a comment to the issue online.
> >> >
> >> >
> >>
> >
> >
> >
> > --
> > Gurkan Erdogdu
> > http://gurkanerdogdu.blogspot.com
> >
>
>
>
> --
> Gurkan Erdogdu
> http://gurkanerdogdu.blogspot.com
>