INT-1735 changed the way ExpressionControlBusFactoryBean validates Lifecycle methods
This commit is contained in:
@@ -27,12 +27,14 @@ import org.springframework.integration.handler.ServiceActivatingHandler;
|
||||
import org.springframework.jmx.export.annotation.ManagedAttribute;
|
||||
import org.springframework.jmx.export.annotation.ManagedOperation;
|
||||
import org.springframework.util.CustomizableThreadCreator;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
/**
|
||||
* FactoryBean for creating {@link MessageHandler} instances to handle a message as a SpEL expression.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Mark Fisher
|
||||
* @author Oleg Zhurakousky
|
||||
* @since 2.0
|
||||
*/
|
||||
public class ExpressionControlBusFactoryBean extends AbstractSimpleMessageHandlerFactoryBean {
|
||||
@@ -69,10 +71,11 @@ public class ExpressionControlBusFactoryBean extends AbstractSimpleMessageHandle
|
||||
return supportedMethods;
|
||||
}
|
||||
|
||||
private boolean accept(Method method) {
|
||||
if (method.getDeclaringClass().equals(Lifecycle.class)) {
|
||||
private boolean accept(Method method) {
|
||||
if (ReflectionUtils.findMethod(Lifecycle.class, method.getName(), method.getParameterTypes()) != null){
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CustomizableThreadCreator.class.isAssignableFrom(method.getDeclaringClass())
|
||||
&& (method.getName().startsWith("get")
|
||||
|| method.getName().startsWith("set")
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans:beans xmlns="http://www.springframework.org/schema/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:groovy="http://www.springframework.org/schema/integration/groovy"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration-2.0.xsd
|
||||
http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
|
||||
|
||||
<control-bus input-channel="inputChannel" auto-startup="true"/>
|
||||
|
||||
<inbound-channel-adapter id="adapter" channel="outputChannel" auto-startup="false" >
|
||||
<poller fixed-rate="1000"/>
|
||||
<beans:bean class="org.springframework.integration.config.xml.ControlBusTests.AdapterService"/>
|
||||
|
||||
</inbound-channel-adapter>
|
||||
|
||||
|
||||
|
||||
<channel id="outputChannel">
|
||||
<queue/>
|
||||
</channel>
|
||||
|
||||
</beans:beans>
|
||||
@@ -16,15 +16,22 @@
|
||||
|
||||
package org.springframework.integration.config.xml;
|
||||
|
||||
import static junit.framework.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.MessageChannel;
|
||||
import org.springframework.integration.core.MessageSource;
|
||||
import org.springframework.integration.core.PollableChannel;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.jmx.export.annotation.ManagedOperation;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -51,6 +58,17 @@ public class ControlBusTests {
|
||||
assertEquals("catbar", output.receive(0).getPayload());
|
||||
assertNull(output.receive(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLifecycleMethods() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ControlBusLifecycleTests-context.xml", this.getClass());
|
||||
MessageChannel inputChannel = context.getBean("inputChannel", MessageChannel.class);
|
||||
PollableChannel outputChannel = context.getBean("outputChannel", PollableChannel.class);
|
||||
assertNull(outputChannel.receive(1000));
|
||||
Message<?> message = MessageBuilder.withPayload("@adapter.start()").build();
|
||||
inputChannel.send(message);
|
||||
assertNotNull(outputChannel.receive(1000));
|
||||
}
|
||||
|
||||
|
||||
public static class Service {
|
||||
@@ -60,5 +78,18 @@ public class ControlBusTests {
|
||||
return "cat";
|
||||
}
|
||||
}
|
||||
|
||||
public static class AdapterService implements MessageSource<String>{
|
||||
|
||||
// public String produceDate() {
|
||||
// System.out.println("Producing Date");
|
||||
// return new Date().toString();
|
||||
// }
|
||||
|
||||
public Message<String> receive() {
|
||||
System.out.println("Producing Date");
|
||||
return new GenericMessage<String>(new Date().toString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user