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 10:02:21 UTC

[groovy] branch GROOVY_3_0_X updated (a7d258c -> 7c46b70)

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

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


    from a7d258c  Trival refactoring: replace 'for' loop with enhanced 'for' loop
     new ebf421e  GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
     new 7c46b70  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.


Summary of changes:
 .../main/groovy/groovy/jmx/builder/JmxMetaMapBuilder.groovy |  9 ++++++---
 .../groovy/groovy/jmx/builder/JmxMetaMapBuilderTest.groovy  |  5 ++++-
 .../src/test/java/groovy/jmx/builder/MockManagedObject.java | 13 ++++++++++---
 3 files changed, 20 insertions(+), 7 deletions(-)


[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 GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

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

    GROOVY-9657: JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
    
    (cherry picked from commit b1b00935a212ba9261694259045f80379759df79)
---
 .../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;
+    }
 }


[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 GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 7c46b70ae33501a7b66beef807622ba6f1eb07a7
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)
    
    (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 = [:]