beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alejandro Ramirez (JIRA)" <...@beehive.apache.org>
Subject [jira] Closed: (BEEHIVE-1087) Controls with simple name conflicts not resolved correctly
Date Tue, 25 Jul 2006 15:28:14 GMT
     [ http://issues.apache.org/jira/browse/BEEHIVE-1087?page=all ]

Alejandro Ramirez closed BEEHIVE-1087.
--------------------------------------

    Assignee:     (was: Jacob Danner)

> Controls with simple name conflicts not resolved correctly
> ----------------------------------------------------------
>
>                 Key: BEEHIVE-1087
>                 URL: http://issues.apache.org/jira/browse/BEEHIVE-1087
>             Project: Beehive
>          Issue Type: Bug
>          Components: Controls
>    Affects Versions: 1.0.1
>            Reporter: Jess Garms
>             Fix For: v.next
>
>         Attachments: wrong_control_selected.zip
>
>
> I have two controls, both called FooControl, in separate packages. If I then refer to
one of them via their generated Bean class in a Controller, the annotation processor doesn't
always use the correct one. I'll attach source code that exhibits this problem, where a reference
to b.FooControlBean becomes a reference to a.FooControlBean in the generated code.
> This occurs because during a clean build the generated Bean class has not yet been generated,
so the annotation processor searches for all types that are annotated with @ControlInterface,
and looks for one with a matching simple name, ignoring the package. In this case, there are
two such types with matching simple names in different packages, and the annotation processor
cannot differentiate between the two, as APT provides no means for examining imports or resolving
the fully-qualified name of a type that has not been generated (in this case the Bean).
> A possible fix: add an optional value to the Control annotation like so:
> public @interface Control {
>     Class<?> interfaceClass default Object.class;
> }
> Then if @Control is used on a generated Bean class, the user could indicate what the
interface is (from the example I'll be attaching):
> ...
> import b.*;
> ...
> @Control(FooControl.class)
> private FooControlBean fooControl;
> ...
> This change is binary- and source-compatible with previous releases, as the new value
is optional.
> When processing the use of the control, the annotation processor could use the interfaceClass
value to determine which interface to use for the Bean instance.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message