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 = [:]