[seam-issues] [JBoss JIRA] (SOLDER-331) @Exact does not do what its name implies/JavaDoc states

Richard Kennard (JIRA) jira-events at lists.jboss.org
Tue Jun 5 19:39:17 EDT 2012

Richard Kennard created SOLDER-331:

             Summary: @Exact does not do what its name implies/JavaDoc states
                 Key: SOLDER-331
                 URL: https://issues.jboss.org/browse/SOLDER-331
             Project: Solder
          Issue Type: Bug
          Components: Core
    Affects Versions: 3.1.0.Final
            Reporter: Richard Kennard

The Solder annotation @Exact is poorly defined, IMHO, because it does not do what its name implies/JavaDoc states:

"An injection point qualifier that may be used to select the exact bean to be injected, by specifying its implementation class."

In the test suite it tests:

{{@Inject @Exact(Greyhound.class) private Dog dog;}}

But all @Exact does behind the scenes (in CoreExtension.java) is:

{{if (f.isAnnotationPresent(Exact.class)) { ... builder.overrideFieldType(f, type);}}

So whilst you can make Dog 'exact' into Greyhound, if there exists another class BetterGreyhound:

{{package org.jboss.solder.test.core; public class BetterGreyhound extends Greyhound { }}}

You *cannot* make BetterGreyhound into Greyhound. If BetterGreyhound exists and you try:

{{@Inject @Exact(Greyhound.class) private Dog dog;}}

You'll get:

WELD-001409 Ambiguous dependencies for type [Greyhound] with qualifiers [@Default] at injection point [[field] @Exact @Inject private org.jboss.solder.test.core.RaceTrack.dog]. Possible dependencies [[Managed Bean [class org.jboss.solder.test.core.Greyhound] with qualifiers [@Any @Default @Named], Managed Bean [class org.jboss.solder.test.core.BetterGreyhound] with qualifiers [@Any @Default @Named]]]

I think @Exact either:

* needs to be a @Qualifier (which it used to be, and which its JavaDoc states it still is); or
* needs to be renamed to @AtLeast; or
* needs its JavaDoc fixed to clarify that it can only resolve ambiguious superclasses, not subclasses

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the seam-issues mailing list