[ https://issues.apache.org/jira/browse/JXPATH-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12839842#action_12839842
]
Robert Ross commented on JXPATH-129:
------------------------------------
Yes, you are forgetting the standard method of invoking static methods: http://commons.apache.org/jxpath/users-guide.html#Standard_Extension_Functions.
I was using function call JXpath syntax like this:
"com.dsci.util.FormatUtils.isoDateFormat(date)"
Where date is a Calendar instance or date is a Date instance.
This isn't just observational either. I traced this by stepping all the way into the code
until I could see where the Calendar was converted to a Date and then the error was thrown.
This is also the same class file where the spelling errors were noticed. This bug was logged
about a year ago so perhaps it has been fixed already? I'm not in a position to test it at
this point.
Robert A. Ross
Senior Software Developer
DSCI Inc.
609.509.5139 - Mobile
609.702.8114 - Home
> MethodLookupUtils#matchType uses TypeUtils#canConvert which causes "Ambiguous method
call" exception.
> -----------------------------------------------------------------------------------------------------
>
> Key: JXPATH-129
> URL: https://issues.apache.org/jira/browse/JXPATH-129
> Project: Commons JXPath
> Issue Type: Bug
> Environment: Not relevant.
> Reporter: Robert Ross
> Fix For: 1.4
>
> Attachments: MethodLookupTest.java
>
>
> MethodLookupUtils#matchParameterTypes calls MethodUtils#matchType.
> MethodLookupUtils#matchType includes this:
> if (TypeUtils.canConvert(object, expected)) {
> return APPROXIMATE_MATCH;
> }
> This goes through a whole process of attempting to convert types using JXPath-specific
conversion routines. However, this is not valid logic when attempting to find matching Methods
since overloaded functions with "convertable" parameters would still have different function
signatures.
> An example:
> abstract class ExampleClass
> {
> static final String formatISO(Calendar calendar) { return ""};
> static final String formatISO(Date date) { return ""};
> }
> If referenced from JXPath with "ExampleClass.formatISO(pathToDateObject)", these two
functions would trigger JXPathException("lookupMethod() Ambiguous method call: " + name) because
apparently TypeUtils is able to convert a Calendar to a Date and vice-versa.
> When attempting to retrieve a function via signature, is it not irrelevant whether JXPath
is able to convert a parameter's type or not? Is there a way to change this behavior or provide
a way to toggle this behavior similar to the setLenient() method.
> Also, the word "Ambiguous" is spelled incorrectly as "Ambigous" three times in MethodLookupUtils.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|