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: 2.0.1, 1.2.1
            Reporter: Edward Sargisson
            Priority: Minor


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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to