[ 
https://issues.apache.org/jira/browse/OPENJPA-1928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rick Curtis reassigned OPENJPA-1928:
------------------------------------

    Assignee: Rick Curtis

> Resolving factory method does not allow method overriding
> ---------------------------------------------------------
>
>                 Key: OPENJPA-1928
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1928
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.2.1, 2.0.1
>            Reporter: Edward Sargisson
>            Assignee: Rick Curtis
>            Priority: Minor
>         Attachments: OPENJPA-1928-1.2.1.patch, OPENJPA-1928-r1061099.patch
>
>
> If a get method is annotated with @Factory then the method cannot be 
> overridden with a method which take different parameters. The system randomly 
> selects one of the several methods with the same name which may or may not 
> take the type which will be provided.
> For example:
>         @Persistent(optional = false)
>       @Column(name = "STATUS")
>       @Externalizer("getName")
>       @Factory("valueOf")
>       public OrderStatus getStatus() {
>               return this.status;
>       }
> public class OrderStatus {
>    public static OrderStatus valueOf(final int ordinal) {
>         return valueOf(ordinal, OrderStatus.class);
>     }
>     
>     public static OrderStatus valueOf(final String name) {
>         return valueOf(name, OrderStatus.class);
>     }
> }
> Actual results:
> valueOf(String) may or may not be selected.
> Expected results:
> valueOf(String) should always be selected.
> The provided patches fix this defect by applying the method invocation 
> conversion rules from the Java Language Specification, 3rd Ed. This means 
> that widening primitive, boxing and unboxing conversions are all respected.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to