Polishing
This commit is contained in:
@@ -26,7 +26,6 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanInitializationException;
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@@ -72,11 +71,19 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
|
||||
|
||||
private boolean contextRefreshed;
|
||||
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
public void setApplicationContext(ApplicationContext applicationContext) {
|
||||
this.applicationContext = applicationContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
if (event.getApplicationContext() == this.applicationContext) {
|
||||
this.contextRefreshed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the {@link MessageListenerContainer} with the specified id or
|
||||
@@ -107,7 +114,6 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
|
||||
return Collections.unmodifiableCollection(this.listenerContainers.values());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a message listener container for the given {@link JmsListenerEndpoint}.
|
||||
* <p>This create the necessary infrastructure to honor that endpoint
|
||||
@@ -129,8 +135,9 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
|
||||
String id = endpoint.getId();
|
||||
Assert.notNull(id, "Endpoint id must not be null");
|
||||
synchronized (this.listenerContainers) {
|
||||
Assert.state(!this.listenerContainers.containsKey(id),
|
||||
"Another endpoint is already registered with id '" + id + "'");
|
||||
if (this.listenerContainers.containsKey(id)) {
|
||||
throw new IllegalStateException("Another endpoint is already registered with id '" + id + "'");
|
||||
}
|
||||
MessageListenerContainer container = createListenerContainer(endpoint, factory);
|
||||
this.listenerContainers.put(id, container);
|
||||
if (startImmediately) {
|
||||
@@ -181,28 +188,6 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
for (MessageListenerContainer listenerContainer : getListenerContainers()) {
|
||||
if (listenerContainer instanceof DisposableBean) {
|
||||
try {
|
||||
((DisposableBean) listenerContainer).destroy();
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
logger.warn("Failed to destroy message listener container", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
if (event.getApplicationContext().equals(this.applicationContext)) {
|
||||
this.contextRefreshed = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Delegating implementation of SmartLifecycle
|
||||
|
||||
@Override
|
||||
@@ -259,6 +244,20 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
for (MessageListenerContainer listenerContainer : getListenerContainers()) {
|
||||
if (listenerContainer instanceof DisposableBean) {
|
||||
try {
|
||||
((DisposableBean) listenerContainer).destroy();
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
logger.warn("Failed to destroy message listener container", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class AggregatingCallback implements Runnable {
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ public class EnableJmsTests extends AbstractJmsAnnotationDrivenTests {
|
||||
@SuppressWarnings("resource")
|
||||
public void unknownFactory() {
|
||||
thrown.expect(BeanCreationException.class);
|
||||
thrown.expectMessage("customFactory"); // Not found
|
||||
thrown.expectMessage("customFactory"); // not found
|
||||
new AnnotationConfigApplicationContext(EnableJmsSampleConfig.class, CustomBean.class);
|
||||
}
|
||||
|
||||
@@ -199,11 +199,11 @@ public class EnableJmsTests extends AbstractJmsAnnotationDrivenTests {
|
||||
context.getBean("jmsListenerContainerFactory", JmsListenerContainerTestFactory.class);
|
||||
assertEquals(0, defaultFactory.getListenerContainers().size());
|
||||
|
||||
context.getBean(LazyBean.class); // trigger lazy resolution
|
||||
context.getBean(LazyBean.class); // trigger lazy resolution
|
||||
assertEquals(1, defaultFactory.getListenerContainers().size());
|
||||
MessageListenerTestContainer container = defaultFactory.getListenerContainers().get(0);
|
||||
assertTrue("Should have been started " + container, container.isStarted());
|
||||
context.close(); // Close and stop the listeners
|
||||
context.close(); // close and stop the listeners
|
||||
assertTrue("Should have been stopped " + container, container.isStopped());
|
||||
}
|
||||
|
||||
@@ -339,6 +339,7 @@ public class EnableJmsTests extends AbstractJmsAnnotationDrivenTests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableJms
|
||||
static class EnableJmsAutoStartupFalseConfig implements JmsListenerConfigurer {
|
||||
@@ -378,6 +379,7 @@ public class EnableJmsTests extends AbstractJmsAnnotationDrivenTests {
|
||||
String concurrency() default "";
|
||||
}
|
||||
|
||||
|
||||
@JmsListener(destination = "billingQueue")
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
private @interface BillingQueueListener {
|
||||
@@ -389,6 +391,7 @@ public class EnableJmsTests extends AbstractJmsAnnotationDrivenTests {
|
||||
String concurrency() default "";
|
||||
}
|
||||
|
||||
|
||||
@Component
|
||||
static class ComposedJmsListenersBean {
|
||||
|
||||
|
||||
@@ -31,10 +31,12 @@ public class JmsListenerContainerTestFactory implements JmsListenerContainerFact
|
||||
private final Map<String, MessageListenerTestContainer> listenerContainers =
|
||||
new LinkedHashMap<>();
|
||||
|
||||
|
||||
public void setAutoStartup(boolean autoStartup) {
|
||||
this.autoStartup = autoStartup;
|
||||
}
|
||||
|
||||
|
||||
public List<MessageListenerTestContainer> getListenerContainers() {
|
||||
return new ArrayList<>(this.listenerContainers.values());
|
||||
}
|
||||
|
||||
@@ -26,8 +26,7 @@ import org.springframework.jms.support.destination.DestinationResolver;
|
||||
/**
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class MessageListenerTestContainer
|
||||
implements MessageListenerContainer, InitializingBean, DisposableBean {
|
||||
public class MessageListenerTestContainer implements MessageListenerContainer, InitializingBean, DisposableBean {
|
||||
|
||||
private final JmsListenerEndpoint endpoint;
|
||||
|
||||
@@ -41,10 +40,12 @@ public class MessageListenerTestContainer
|
||||
|
||||
private boolean destroyInvoked;
|
||||
|
||||
|
||||
MessageListenerTestContainer(JmsListenerEndpoint endpoint) {
|
||||
this.endpoint = endpoint;
|
||||
}
|
||||
|
||||
|
||||
public void setAutoStartup(boolean autoStartup) {
|
||||
this.autoStartup = autoStartup;
|
||||
}
|
||||
@@ -133,8 +134,7 @@ public class MessageListenerTestContainer
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (!stopInvoked) {
|
||||
throw new IllegalStateException("Stop should have been invoked before " +
|
||||
"destroy on " + this);
|
||||
throw new IllegalStateException("Stop should have been invoked before " + "destroy on " + this);
|
||||
}
|
||||
destroyInvoked = true;
|
||||
}
|
||||
@@ -150,4 +150,5 @@ public class MessageListenerTestContainer
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user