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