You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/07/25 09:41:49 UTC

[groovy] branch pull/1323 created (now 587cd58)

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

sunlan pushed a change to branch pull/1323
in repository https://gitbox.apache.org/repos/asf/groovy.git.


      at 587cd58  Minor tweak for "GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException" (closes #1323)

This branch includes the following new commits:

     new 18b9fd6  GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
     new 587cd58  Minor tweak for "GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException" (closes #1323)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[groovy] 02/02: Minor tweak for "GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException" (closes #1323)

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 587cd585a6cf6549bfd4b77d894d587705bd5204
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Jul 25 17:41:24 2020 +0800

    Minor tweak for "GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException" (closes #1323)
---
 .../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 = [:]


[groovy] 01/02: GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 18b9fd6f78f0838db332899e53f3146f4ebee06c
Author: hdfg159 <hd...@126.com>
AuthorDate: Sat Jul 25 17:17:46 2020 +0800

    GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
---
 .../main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy |  5 ++---
 .../groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy  |  5 ++++-
 .../src/test/java/groovy/jmx/builder/MockManagedObject.java | 13 ++++++++++---
 3 files changed, 16 insertions(+), 7 deletions(-)

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 814f6c0..bfbb155 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,8 +402,7 @@ 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[3..-1])) : null
+                MetaProperty prop = (mName.startsWith("get") || mName.startsWith("set")) ? object.metaClass.getMetaProperty(JmxBuilderTools.uncapitalize(mName.length() == 3 ? mName : mName[3..-1])) : null
                 // skip exporting getters/setters to avoid dbl exposure.  They are exported differently.
                 if (!prop) {
                     def map = [:]
@@ -499,7 +498,7 @@ class JmxMetaMapBuilder {
      * to create a map object of the meta data provided with defaults where necessary.
      * @param method - the method being described
      * @param descriptor - the meta data collected from JmxBuilder.bean()
-     * @return fully-normalized meta map 
+     * @return fully-normalized meta map
      */
     private static Map createOperationMap(object, method, descriptor) {
         def desc = (descriptor && descriptor instanceof Map) ? descriptor : [:]
diff --git a/subprojects/groovy-jmx/src/test/groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy b/subprojects/groovy-jmx/src/test/groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy
index 88f1a5d..16e3fb5 100644
--- a/subprojects/groovy-jmx/src/test/groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy
+++ b/subprojects/groovy-jmx/src/test/groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy
@@ -301,7 +301,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
     void testBuildOperationMapFromObject() {
         def object = new MockManagedObject()
         def map = JmxMetaMapBuilder.buildOperationMapFrom(object)
-
+    
         assert map
         assert map."doSomethingElse".name == "doSomethingElse"
         assert map."doSomethingElse".displayName
@@ -311,6 +311,9 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         assert map."doSomethingElse".params."int".displayName
         assert map."doSomethingElse".params."java.lang.String".name == "java.lang.String"
         assert map."doSomethingElse".params."java.lang.String".displayName
+    
+        assert map."get".name == "get"
+        assert map."set".name == "set"
     }
 
     void testBuildOperationFromDescriptorMap() {
diff --git a/subprojects/groovy-jmx/src/test/java/groovy/jmx/builder/MockManagedObject.java b/subprojects/groovy-jmx/src/test/java/groovy/jmx/builder/MockManagedObject.java
index 3109ee6..090e68d 100644
--- a/subprojects/groovy-jmx/src/test/java/groovy/jmx/builder/MockManagedObject.java
+++ b/subprojects/groovy-jmx/src/test/java/groovy/jmx/builder/MockManagedObject.java
@@ -69,13 +69,20 @@ public class MockManagedObject {
     public void dontDoThis(Object param) {
         logger.log(Level.FINER, "Jmx Invoke - method dontDoThis() with param : " + param);
     }
-
+    
     public void setAvailable(boolean flag) {
         avail = flag;
     }
-
+    
     public boolean isAvailable() {
         return avail;
     }
-
+    
+    public String get(String str) {
+        return str;
+    }
+    
+    public String set(String str) {
+        return str;
+    }
 }