Skip to content

[ji] deterministic Java bean-style method aliases#4435

Merged
kares merged 2 commits intojruby:masterfrom
kares:test-ji-is3
Jan 17, 2017
Merged

[ji] deterministic Java bean-style method aliases#4435
kares merged 2 commits intojruby:masterfrom
kares:test-ji-is3

Conversation

@kares
Copy link
Member

@kares kares commented Jan 11, 2017

discovered during the investigation of #4432 (this addresses a different issue)

turns out the priority logic for setting up Java methods into Ruby land did not handle potential alias-ing conflicts for getters (same priority).

this test would periodically fail (more on travis-ci than locally always using the same JVM installation) ... JRuby already dealt with the non-determinstic case get/is issue before while generating wrappers: #3470

here we're making sure we always do the same setup for (unusual) cases with multiple getters for the same property e.g. getFoo() and isFoo() :

  • foo is aliased to getFoo() (current state is that this is not always true and might point to isFoo())
  • foo alias would point to isFoo() only if the getFoo() is not present

currently we're nondeterministic and depend on reflected method order

foo -> getFoo method shall always win, since foo? is there for isFoo
in case both getFoo and isFoo are specified

the update should align nicely with expectations in jruby#3470

due compatibility we can not fix jruby#4432
isAnnotation() + getAnnotation(param) case is different since the get
method isn't a (real) getter (and we're avoding a clash due jruby#3262)
@kares kares merged commit 11c23a9 into jruby:master Jan 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant