diff --git a/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnnotationMetadataAssemblerTests.java b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnnotationMetadataAssemblerTests.java
index 8eb3068983a..0f841bf7142 100644
--- a/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnnotationMetadataAssemblerTests.java
+++ b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnnotationMetadataAssemblerTests.java
@@ -1,17 +1,17 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2002-2016 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
+ * 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.
+ * 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;
@@ -58,6 +58,30 @@ public class AnnotationMetadataAssemblerTests extends AbstractMetadataAssemblerT
assertNotNull(op);
}
+ @Test
+ public void testRegistrationOnInterface() throws Exception {
+ Object bean = getContext().getBean("testInterfaceBean");
+ ModelMBeanInfo inf = getAssembler().getMBeanInfo(bean, "bean:name=interfaceTestBean");
+ assertNotNull(inf);
+ assertEquals("My Managed Bean", inf.getDescription());
+
+ ModelMBeanOperationInfo op = inf.getOperation("foo");
+ assertNotNull("foo operation not exposed", op);
+ assertEquals("invoke foo", op.getDescription());
+
+ assertNull("doNotExpose operation should not be exposed", inf.getOperation("doNotExpose"));
+
+ ModelMBeanAttributeInfo attr = inf.getAttribute("Bar");
+ assertNotNull("bar attribute not exposed", attr);
+ assertEquals("Bar description", attr.getDescription());
+
+ ModelMBeanAttributeInfo attr2 = inf.getAttribute("CacheEntries");
+ assertNotNull("cacheEntries attribute not exposed", attr2);
+ assertEquals("Metric Type should be COUNTER", "COUNTER",
+ attr2.getDescriptor().getFieldValue("metricType"));
+ }
+
+
@Override
protected JmxAttributeSource getAttributeSource() {
return new AnnotationJmxAttributeSource();
diff --git a/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBean.java b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBean.java
new file mode 100644
index 00000000000..59d084f414d
--- /dev/null
+++ b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBean.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2002-2016 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;
+
+import org.springframework.jmx.support.MetricType;
+
+/**
+ * @author Stephane Nicoll
+ */
+@ManagedResource(objectName = "bean:name=interfaceTestBean", description = "My Managed Bean")
+public interface AnotherAnnotationTestBean {
+
+ @ManagedOperation(description = "invoke foo")
+ void foo();
+
+ @ManagedAttribute(description = "Bar description")
+ String getBar();
+
+ void setBar(String bar);
+
+ @ManagedMetric(description = "a metric", metricType = MetricType.COUNTER)
+ int getCacheEntries();
+
+}
diff --git a/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBeanImpl.java b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBeanImpl.java
new file mode 100644
index 00000000000..1acaefb0328
--- /dev/null
+++ b/spring-context/src/test/java/org/springframework/jmx/export/annotation/AnotherAnnotationTestBeanImpl.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2002-2016 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 Stephane Nicoll
+ */
+class AnotherAnnotationTestBeanImpl implements AnotherAnnotationTestBean {
+
+ private String bar;
+
+ @Override
+ public void foo() {
+ }
+
+ public void doNotExpose() {
+
+ }
+
+ @Override
+ public String getBar() {
+ return this.bar;
+ }
+
+ @Override
+ public void setBar(String bar) {
+ this.bar = bar;
+ }
+
+ @Override
+ public int getCacheEntries() {
+ return 42;
+ }
+
+}
diff --git a/spring-context/src/test/resources/org/springframework/jmx/export/annotation/annotations.xml b/spring-context/src/test/resources/org/springframework/jmx/export/annotation/annotations.xml
index c9c15cf7714..0124173f05c 100644
--- a/spring-context/src/test/resources/org/springframework/jmx/export/annotation/annotations.xml
+++ b/spring-context/src/test/resources/org/springframework/jmx/export/annotation/annotations.xml
@@ -20,26 +20,22 @@
-
- TEST
-
-
- 100
-
+
+
+
+
+
+
-
-
-
+
-
-
-
+