On 6/18/15 7:16 PM, Jaroslav Bachorik wrote:
On 18.6.2015 18:47, Daniel Fuchs wrote:
Hi Jaroslav,
I haven't looked at the code, but if I understand well,
that would be a spec change.
Attribute names are case sensitive in JMX.
getFoo() => attribute named "Foo"
getfoo() => attribute named "foo"
Are you proposing to change that?
In this case it is an even bigger mess. This would work as long as you
don't go through the JavaBeans introspector. The property descriptor
generated for the "getFoo" method will be named "foo" and it is
indistinguishable from "getfoo". Therefore, when you are trying to
reach this attribute as "Foo" the JavaBeans introspector will not
resolve the getter name. The SimpleIntrospector, on the other hand, will.
I am proposing to change the SimpleIntrospector so it behaves exactly
as the JavaBeans introspector. But it seems that even that might be
considered a specification change :/
In the JMX 1.4 specification - section 2.2.2.3:
https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/JMX_1_4_specification.pdf
<<
2.2.2.3 Case Sensitivity
All attribute and operation names derived from these design patterns are
case-
sensitive. For example, this means that the methods 'getstate' and
'setState'
define two attributes, one called 'state' that is read-only, and one called
'State' that is write-only.
While case sensitivity applies directly to component names of standard
MBeans, it is
also applicable to all component names of all types of MBeans, standard
or dynamic.
In general, all names of classes, attributes, operations, methods, and
internal
elements defined in the JMX specification are case sensitive, whether
they appear as
data or as functional code when they are manipulated by management
operations.
>>
-- daniel
-JB-
best regards,
-- daniel
On 18/06/15 18:39, Jaroslav Bachorik wrote:
Please, review the following change
Issue : https://bugs.openjdk.java.net/browse/JDK-8129215
Webrev: http://cr.openjdk.java.net/~jbachorik/8129215/webrev.00
The JMX Introspector will try to use the JavaBeans introspector
whenever
possible, delegating the requests for the property getter/setter
methods. However, when the JavaBeans introspector is not available
(modules) the JMX Introspector falls back to its own simple, reflection
based, algorithm.
The simple algorithm does not enforce the rule of property names
starting with a lower-case letter. This might lead to situations when
the simple introspector provides the getter method for an attribute the
JavaBeans introspector would not (eg. 'Attribute' attribute)
This patch changes the simple introspector behaviour to conform to the
one of the JavaBeans introspector. Also, it makes the simple
introspector called only when the JavaBeans introspector is not
available - and not when the JavaBeans introspector fails to resolve a
property getter.
Thanks,
-JB-