SimpleApplicationEventMulticaster defensively handles ClassCastException without message
Issue: SPR-15145
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 the original author or authors.
|
* Copyright 2002-2017 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.
|
||||||
@@ -18,6 +18,7 @@ package org.springframework.context.event;
|
|||||||
|
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
@@ -166,9 +167,13 @@ public class SimpleApplicationEventMulticaster extends AbstractApplicationEventM
|
|||||||
listener.onApplicationEvent(event);
|
listener.onApplicationEvent(event);
|
||||||
}
|
}
|
||||||
catch (ClassCastException ex) {
|
catch (ClassCastException ex) {
|
||||||
if (ex.getMessage().startsWith(event.getClass().getName())) {
|
String msg = ex.getMessage();
|
||||||
|
if (msg != null && msg.startsWith(event.getClass().getName())) {
|
||||||
// Possibly a lambda-defined listener which we could not resolve the generic event type for
|
// Possibly a lambda-defined listener which we could not resolve the generic event type for
|
||||||
LogFactory.getLog(getClass()).debug("Non-matching event type for listener: " + listener, ex);
|
Log logger = LogFactory.getLog(getClass());
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Non-matching event type for listener: " + listener, ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw ex;
|
throw ex;
|
||||||
|
|||||||
Reference in New Issue
Block a user