fixed NotificationListenerBean assertion in constructor (SPR-8091)
This commit is contained in:
parent
c2eafdb2fb
commit
9f3e333084
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2011 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -20,6 +20,7 @@ import javax.management.NotificationListener;
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.jmx.support.NotificationListenerHolder;
|
import org.springframework.jmx.support.NotificationListenerHolder;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper class that aggregates a {@link javax.management.NotificationListener},
|
* Helper class that aggregates a {@link javax.management.NotificationListener},
|
||||||
|
|
@ -55,6 +56,7 @@ public class NotificationListenerBean extends NotificationListenerHolder impleme
|
||||||
* @param notificationListener the encapsulated listener
|
* @param notificationListener the encapsulated listener
|
||||||
*/
|
*/
|
||||||
public NotificationListenerBean(NotificationListener notificationListener) {
|
public NotificationListenerBean(NotificationListener notificationListener) {
|
||||||
|
Assert.notNull(notificationListener, "NotificationListener must not be null");
|
||||||
setNotificationListener(notificationListener);
|
setNotificationListener(notificationListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,19 +75,13 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
try {
|
try {
|
||||||
exporter.setNotificationListenerMappings(listeners);
|
exporter.setNotificationListenerMappings(listeners);
|
||||||
fail("Must have thrown a ClassCastException when registering a non-NotificationListener instance as a NotificationListener.");
|
fail("Must have thrown a ClassCastException when registering a non-NotificationListener instance as a NotificationListener.");
|
||||||
} catch (ClassCastException expected) {
|
}
|
||||||
|
catch (ClassCastException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note that @Ignore has no effect for JUnit 3.8 TestCase-based tests,
|
|
||||||
// but we leave it here to allow developers to easily search for ignored
|
|
||||||
// tests. As a work-around, the method is prefixed with "ignore"
|
|
||||||
// instead of "test" as required by JUnit 3.x.
|
|
||||||
//
|
|
||||||
// See: https://jira.springsource.org/browse/SPR-8091
|
|
||||||
@Ignore("[SPR-8091] NotificationListenerBean constructor does not throw the expected IllegalArgumentException")
|
|
||||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||||
public void ignoreTestRegisterNullNotificationListenerType() throws Exception {
|
public void testRegisterNullNotificationListenerType() throws Exception {
|
||||||
Map listeners = new HashMap();
|
Map listeners = new HashMap();
|
||||||
// put null in as a value...
|
// put null in as a value...
|
||||||
listeners.put("*", null);
|
listeners.put("*", null);
|
||||||
|
|
@ -95,7 +89,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
try {
|
try {
|
||||||
exporter.setNotificationListenerMappings(listeners);
|
exporter.setNotificationListenerMappings(listeners);
|
||||||
fail("Must have thrown an IllegalArgumentException when registering a null instance as a NotificationListener.");
|
fail("Must have thrown an IllegalArgumentException when registering a null instance as a NotificationListener.");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,7 +111,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
try {
|
try {
|
||||||
exporter.afterPropertiesSet();
|
exporter.afterPropertiesSet();
|
||||||
fail("Must have thrown an MBeanExportException when registering a NotificationListener on a non-existent MBean.");
|
fail("Must have thrown an MBeanExportException when registering a NotificationListener on a non-existent MBean.");
|
||||||
} catch (MBeanExportException expected) {
|
}
|
||||||
|
catch (MBeanExportException expected) {
|
||||||
assertTrue(expected.contains(InstanceNotFoundException.class));
|
assertTrue(expected.contains(InstanceNotFoundException.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -473,7 +469,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectMode(-1);
|
exporter.setAutodetectMode(-1);
|
||||||
fail("Must have failed when supplying an invalid negative out-of-range autodetect mode");
|
fail("Must have failed when supplying an invalid negative out-of-range autodetect mode");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -482,7 +479,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectMode(5);
|
exporter.setAutodetectMode(5);
|
||||||
fail("Must have failed when supplying an invalid positive out-of-range autodetect mode");
|
fail("Must have failed when supplying an invalid positive out-of-range autodetect mode");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -491,7 +489,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectModeName(null);
|
exporter.setAutodetectModeName(null);
|
||||||
fail("Must have failed when supplying a null autodetect mode name");
|
fail("Must have failed when supplying a null autodetect mode name");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -500,7 +499,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectModeName("");
|
exporter.setAutodetectModeName("");
|
||||||
fail("Must have failed when supplying an empty autodetect mode name");
|
fail("Must have failed when supplying an empty autodetect mode name");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -509,7 +509,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectModeName(" \t");
|
exporter.setAutodetectModeName(" \t");
|
||||||
fail("Must have failed when supplying a whitespace-only autodetect mode name");
|
fail("Must have failed when supplying a whitespace-only autodetect mode name");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -518,7 +519,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
MBeanExporter exporter = new MBeanExporter();
|
MBeanExporter exporter = new MBeanExporter();
|
||||||
exporter.setAutodetectModeName("That Hansel is... *sssooo* hot right now!");
|
exporter.setAutodetectModeName("That Hansel is... *sssooo* hot right now!");
|
||||||
fail("Must have failed when supplying a whitespace-only autodetect mode name");
|
fail("Must have failed when supplying a whitespace-only autodetect mode name");
|
||||||
} catch (IllegalArgumentException expected) {
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -530,7 +532,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
exporter.setBeans(beans);
|
exporter.setBeans(beans);
|
||||||
exporter.afterPropertiesSet();
|
exporter.afterPropertiesSet();
|
||||||
fail("Expecting exception because MBeanExporter is not running in a BeanFactory and was passed bean name to (lookup and then) export");
|
fail("Expecting exception because MBeanExporter is not running in a BeanFactory and was passed bean name to (lookup and then) export");
|
||||||
} catch (MBeanExportException expected) {
|
}
|
||||||
|
catch (MBeanExportException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -540,7 +543,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
exporter.setAutodetectMode(MBeanExporter.AUTODETECT_ALL);
|
exporter.setAutodetectMode(MBeanExporter.AUTODETECT_ALL);
|
||||||
exporter.afterPropertiesSet();
|
exporter.afterPropertiesSet();
|
||||||
fail("Expecting exception because MBeanExporter is not running in a BeanFactory and was configured to autodetect beans");
|
fail("Expecting exception because MBeanExporter is not running in a BeanFactory and was configured to autodetect beans");
|
||||||
} catch (MBeanExportException expected) {
|
}
|
||||||
|
catch (MBeanExportException expected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -634,7 +638,8 @@ public final class MBeanExporterTests extends AbstractMBeanServerTests {
|
||||||
try {
|
try {
|
||||||
exporter.afterPropertiesSet();
|
exporter.afterPropertiesSet();
|
||||||
fail("Must have failed during creation of RuntimeExceptionThrowingConstructorBean");
|
fail("Must have failed during creation of RuntimeExceptionThrowingConstructorBean");
|
||||||
} catch (RuntimeException expected) {
|
}
|
||||||
|
catch (RuntimeException expected) {
|
||||||
}
|
}
|
||||||
|
|
||||||
assertIsNotRegistered("Must have unregistered all previously registered MBeans due to RuntimeException",
|
assertIsNotRegistered("Must have unregistered all previously registered MBeans due to RuntimeException",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue