This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 7c46b70ae33501a7b66beef807622ba6f1eb07a7
Author: Daniel Sun <sun...@apache.org>
AuthorDate: Sat Jul 25 17:41:24 2020 +0800

    Minor tweak for "GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw 
StringIndexOutOfBoundsException" (closes #1323)
    
    (cherry picked from commit 7dadce0ac9ddaab381f23e25ff341b33130ed316)
---
 .../src/main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy     | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/subprojects/groovy-jmx/src/main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy
 
b/subprojects/groovy-jmx/src/main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy
index bfbb155..b64d9ba 100644
--- 
a/subprojects/groovy-jmx/src/main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy
+++ 
b/subprojects/groovy-jmx/src/main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy
@@ -402,7 +402,11 @@ class JmxMetaMapBuilder {
             // avoid picking up extra methods from parents
             if ((declaredMethods.contains(method.name) && 
!OPS_EXCEPTION_LIST.contains(method.name)) || 
(!OPS_EXCEPTION_LIST.contains(method.name))) {
                 String mName = method.name
-                MetaProperty prop = (mName.startsWith("get") || 
mName.startsWith("set")) ? 
object.metaClass.getMetaProperty(JmxBuilderTools.uncapitalize(mName.length() == 
3 ? mName : mName[3..-1])) : null
+                MetaProperty prop =
+                        (mName.length() > 3 && (mName.startsWith("get") || 
mName.startsWith("set")) ||
+                                mName.length() > 2 && mName.startsWith("is"))
+                                ? 
object.metaClass.getMetaProperty(JmxBuilderTools.uncapitalize(mName[(mName.startsWith("is")
 ? 2 : 3)..-1]))
+                                : null
                 // skip exporting getters/setters to avoid dbl exposure.  They 
are exported differently.
                 if (!prop) {
                     def map = [:]

Reply via email to