fixed NotificationListenerBean assertion in constructor (SPR-8091)

This commit is contained in:
Juergen Hoeller 2011-11-28 22:47:48 +00:00
parent c2eafdb2fb
commit 9f3e333084
2 changed files with 28 additions and 21 deletions

View File

@ -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);
} }

View File

@ -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",