[SPR-3635] [SPR-5039] [SPR-5813] JMX annotation inheritance fixed

This commit is contained in:
Rob Harrop
2009-09-08 21:37:02 +00:00
parent 7f7173f790
commit 8f6a42bf64
10 changed files with 177 additions and 11 deletions

View File

@@ -16,17 +16,32 @@
package org.springframework.jmx.export.annotation;
import javax.management.modelmbean.ModelMBeanInfo;
import javax.management.modelmbean.ModelMBeanAttributeInfo;
import javax.management.modelmbean.ModelMBeanOperationInfo;
import org.springframework.jmx.IJmxTestBean;
import org.springframework.jmx.export.assembler.AbstractMetadataAssemblerTests;
import org.springframework.jmx.export.metadata.JmxAttributeSource;
/**
* @author Rob Harrop
*/
/** @author Rob Harrop */
public class AnnotationMetadataAssemblerTests extends AbstractMetadataAssemblerTests {
private static final String OBJECT_NAME = "bean:name=testBean4";
public void testAttributeFromInterface() throws Exception {
ModelMBeanInfo inf = getMBeanInfoFromAssembler();
ModelMBeanAttributeInfo attr = inf.getAttribute("Colour");
assertTrue("The name attribute should be writable", attr.isWritable());
assertTrue("The name attribute should be readable", attr.isReadable());
}
public void testOperationFromInterface() throws Exception {
ModelMBeanInfo inf = getMBeanInfoFromAssembler();
ModelMBeanOperationInfo op = inf.getOperation("fromInterface");
assertNotNull(op);
}
protected JmxAttributeSource getAttributeSource() {
return new AnnotationJmxAttributeSource();
}
@@ -36,11 +51,20 @@ public class AnnotationMetadataAssemblerTests extends AbstractMetadataAssemblerT
}
protected IJmxTestBean createJmxTestBean() {
return new AnnotationTestBean();
return new AnnotationTestSubBean();
}
protected String getApplicationContextPath() {
return "org/springframework/jmx/export/annotation/annotations.xml";
}
@Override
protected int getExpectedAttributeCount() {
return super.getExpectedAttributeCount() + 1;
}
@Override
protected int getExpectedOperationCount() {
return super.getExpectedOperationCount() + 3;
}
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright 2002-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.jmx.export.annotation;
/**
* @author Rob Harrop
*/
public class AnnotationTestSubBean extends AnnotationTestBean implements IAnnotationTestBean {
private String colour;
@Override
public long myOperation() {
return 123L;
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
public int getAge() {
return super.getAge();
}
public String getColour() {
return this.colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public void fromInterface() {
}
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright 2002-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.jmx.export.annotation;
/**
* @author Rob Harrop
*/
public interface IAnnotationTestBean {
@ManagedAttribute
String getColour();
@ManagedAttribute
void setColour(String colour);
@ManagedOperation
void fromInterface();
}

View File

@@ -19,7 +19,7 @@
</property>
</bean>
<bean id="testBean" class="org.springframework.jmx.export.annotation.AnnotationTestBean">
<bean id="testBean" class="org.springframework.jmx.export.annotation.AnnotationTestSubBean">
<property name="name">
<value>TEST</value>
</property>

View File

@@ -18,6 +18,7 @@ package org.springframework.jmx.export.assembler;
import java.util.HashMap;
import java.util.Map;
import java.util.Arrays;
import javax.management.Descriptor;
import javax.management.MBeanInfo;