You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/11/28 02:52:23 UTC

[groovy] branch GROOVY_2_5_X updated: GROOVY-9832: JmxBuilder export bean:specifying MBean ObjectName support GString (port to 2_5_X)

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

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


The following commit(s) were added to refs/heads/GROOVY_2_5_X by this push:
     new 8a44524  GROOVY-9832: JmxBuilder export bean:specifying MBean ObjectName support GString (port to 2_5_X)
8a44524 is described below

commit 8a44524d84ce08a852be97dccf145c9dc650bdfe
Author: hdfg159 <hd...@126.com>
AuthorDate: Fri Nov 27 21:40:56 2020 +0800

    GROOVY-9832: JmxBuilder export bean:specifying MBean ObjectName support GString (port to 2_5_X)
---
 .../groovy/jmx/builder/JmxMetaMapBuilder.groovy    |  4 +-
 .../jmx/builder/JmxMetaMapBuilderTest.groovy       | 60 +++++++++++++---------
 2 files changed, 38 insertions(+), 26 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..dd42150 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
@@ -172,8 +172,8 @@ class JmxMetaMapBuilder {
     private static ObjectName getObjectName(def map) {
         if (!map) return null
         def jmxName
-        if (map.name instanceof String) {
-            jmxName = new ObjectName(map.name)
+        if (map.name instanceof CharSequence) {
+            jmxName = new ObjectName(map.name.toString())
         } else if (map.name instanceof ObjectName) {
             jmxName = map.name
         }
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 a1209dd..3bc21b5 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
@@ -133,11 +133,11 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         assert attribs.Available.setMethod == null
     }
 
-    void testbuildObjectWithNameOnly() {
+    void testBuildObjectWithNameOnly() {
         def object = new MockManagedObject()
         def map = JmxMetaMapBuilder.buildObjectMapFrom(object, [
                 target: object,
-                name: "jmx.builder:type=TestObject"
+                name  : "jmx.builder:type=TestObject"
         ])
 
         assert map
@@ -179,12 +179,24 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         assert ops."doSomethingElse".params."java.lang.String".displayName
     }
 
+    void testBuildObjectWithGStringJmxName() {
+        def object = new MockManagedObject()
+        def name = "jmx.builder:type=TestObject@${object.hashCode()}"
+        def map = JmxMetaMapBuilder.buildObjectMapFrom(object, [
+                target: object,
+                name  : name
+        ])
+
+        assert map
+        assert map.jmxName.toString() == name
+    }
+
     void testBuildAttributeMapFromDescriptorMap() {
         def object = new MockManagedObject()
         def attribs = JmxMetaMapBuilder.buildAttributeMapFrom(object, [
-                something: "*",
+                something    : "*",
                 somethingElse: [desc: "somethingElse", readable: false, writable: true],
-                available: [desc: "availability", readable: true, writable: true]
+                available    : [desc: "availability", readable: true, writable: true]
         ])
 
         assert attribs
@@ -274,8 +286,8 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         map = JmxMetaMapBuilder.buildConstructorMapFrom(object, [
                 "ctor1": [],
                 "ctor2": [desc: "Ctor2 description", params: ["java.lang.String", "int"]],
-                "ctor3": [desc: "Ctor3 description",
-                        params: ["java.lang.String": [name: "quantity", "desc": "Initial Value"]]
+                "ctor3": [desc  : "Ctor3 description",
+                          params: ["java.lang.String": [name: "quantity", "desc": "Initial Value"]]
                 ]
         ])
         assert map
@@ -286,8 +298,8 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
 
         map = JmxMetaMapBuilder.buildConstructorMapFrom(object, [
                 "ctor2": [desc: "Ctor2 description", params: ["java.lang.String": "*", "int": "*"]],
-                "ctor3": [desc: "Ctor3 description",
-                        params: ["java.lang.String": [name: "quantity", "desc": "Initial Value"]]
+                "ctor3": [desc  : "Ctor3 description",
+                          params: ["java.lang.String": [name: "quantity", "desc": "Initial Value"]]
                 ]
         ])
 
@@ -333,12 +345,12 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         assert map."doSomethingElse".params
 
         map = JmxMetaMapBuilder.buildOperationMapFrom(object, [
-                "doSomething": "*",
-                "dontDoThis": ["java.lang.Object"],
+                "doSomething"    : "*",
+                "dontDoThis"     : ["java.lang.Object"],
                 "doSomethingElse": [
-                        desc: "This is doSomethingElse",
+                        desc  : "This is doSomethingElse",
                         params: [
-                                "int": [desc: "Quantity"],
+                                "int"   : [desc: "Quantity"],
                                 "String": "*"
                         ]
                 ]
@@ -355,7 +367,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
     void testBuildParameterMapFromConstructor() {
         def object = new MockManagedObject()
         def ctor
-        object.class.getDeclaredConstructors().each {c ->
+        object.class.getDeclaredConstructors().each { c ->
             if (c.getParameterTypes().size() == 2) {
                 ctor = c
             }
@@ -366,7 +378,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         def map = JmxMetaMapBuilder.buildParameterMapFrom(ctor)
         assert map
         assert map.keySet().size() == 2
-        ctor.getParameterTypes().each {c ->
+        ctor.getParameterTypes().each { c ->
             assert map."${c.name}"
             assert map."${c.name}".name == c.name
             assert map."${c.name}".displayName
@@ -374,7 +386,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
 
         map = JmxMetaMapBuilder.buildParameterMapFrom(ctor, [
                 "java.lang.String": [name: "place", desc: "the location to execute"],
-                "int": "*"
+                "int"             : "*"
         ])
 
         assert map
@@ -401,7 +413,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
     void testBuildParameterMapFromMethod() {
         def object = new MockManagedObject()
         def method
-        object.metaClass.getMethods().each {m ->
+        object.metaClass.getMethods().each { m ->
             if (m.getParameterTypes().size() == 2) {
                 method = m
             }
@@ -412,14 +424,14 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
 
         assert map."java.lang.String"
         assert map.keySet().size() == 2
-        method.getParameterTypes().each {c ->
+        method.getParameterTypes().each { c ->
             assert map."${c.name}"
             assert map."${c.name}".name == c.name
             assert map."${c.name}".displayName
         }
 
         map = JmxMetaMapBuilder.buildParameterMapFrom(method, [
-                "int": "*",
+                "int"             : "*",
                 "java.lang.String": [name: "What to do", desc: "the location to execute"],
         ])
 
@@ -448,10 +460,10 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         def map
 
         map = JmxMetaMapBuilder.buildAttributeMapFrom(object, [
-                "something": "*",
+                "something"  : "*",
                 somethingElse: [
-                        desc: "somethingElse", readable: true, writable: true,
-                        onChange: {-> "event block"}
+                        desc    : "somethingElse", readable: true, writable: true,
+                        onChange: { -> "event block" }
                 ]
         ])
 
@@ -471,7 +483,7 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
         map = JmxMetaMapBuilder.buildOperationMapFrom(object, [
                 "doSomething": [
                         params: [],
-                        onCall: {-> "event block"}
+                        onCall: { -> "event block" }
                 ]
         ])
 
@@ -484,8 +496,8 @@ class JmxMetaMapBuilderTest extends GroovyTestCase {
     void testBuildListenerMap() {
         def map = JmxMetaMapBuilder.buildListenerMapFrom(
                 [
-                        heartbeat: [event: "event.heartbeat", from: "some:type=object", call: {-> "event block"}],
-                        timer: [event: "event.timer", from: "some:type=object", call: {-> "event block"}]
+                        heartbeat: [event: "event.heartbeat", from: "some:type=object", call: { -> "event block" }],
+                        timer    : [event: "event.timer", from: "some:type=object", call: { -> "event block" }]
                 ]
         )
         assert map