Resolve "polymorphic method binding"
The client is now able to distinguish overloaded functions. It is not perfect as there is limited type information passed along in a json request.
ConcreteServiceExecutor
now orders and filters out functions before
checking the parameters of a function it is trying to match to.
Params.match
now checks more than just the number of parameters. It
checks the types to see what function it should try to match to. The
ordering imposed by ConcreteServiceExecutor
is important to this
function since match
will return the first function that it is able
to match with.
JsonRPCRequest
no longer checks the visibility of a function and
matchesMethod
has been split into separate functions.
String
s are now ranked above BigDecimal
functions.
List
s, Array
s and Map
s are now ranked to provide a deterministic
ordering for class functions.
As of now, Array
s will always be ranked lower than List
s and
therefore List
s will always be chosen over Array
s when a function is
available.
On all Params
functions take in KFunction
s instead of Method
s.
With this change, the client is now able to call nullable functions
without issue. By using KFunction
s and KParameter
s it is possible
to determine if a type is nullable or not so when matching null
values
the correct function is chosen.
Closes #55 (closed)