Upgrade to Spring Integration 1.0.1 (still broken).

This commit is contained in:
dsyer
2008-12-18 16:21:41 +00:00
parent b23dad77f2
commit 561b57e628
9 changed files with 162 additions and 61 deletions

View File

@@ -62,6 +62,10 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.apache.log4j</groupId>
<artifactId>com.springsource.org.apache.log4j</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.runtime
@@ -126,6 +130,6 @@
</dependency>
</dependencies>
<properties>
<spring.integration.version>1.0.0.RC2</spring.integration.version>
<spring.integration.version>1.0.1.RELEASE</spring.integration.version>
</properties>
</project>

View File

@@ -8,6 +8,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
@@ -15,10 +16,7 @@ import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.Lifecycle;
import org.springframework.integration.annotation.ChannelAdapter;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.Poller;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -31,23 +29,22 @@ public class RepeatTransactionalPollingIntegrationTests implements ApplicationCo
private Log logger = LogFactory.getLog(getClass());
private List<String> processed = new ArrayList<String>();
private static List<String> processed = new ArrayList<String>();
private List<String> expected;
private static List<String> expected;
private List<String> handled = new ArrayList<String>();
private static List<String> handled = new ArrayList<String>();
private List<String> list = new ArrayList<String>();
private static List<String> list = new ArrayList<String>();
private Lifecycle bus;
private volatile int count = 0;
private volatile static int count = 0;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
bus = (Lifecycle) applicationContext;
}
@ServiceActivator(inputChannel = "requests", outputChannel = "replies")
public String process(String message) {
String result = message + ": " + count;
logger.debug("Handling: " + message);
@@ -61,8 +58,6 @@ public class RepeatTransactionalPollingIntegrationTests implements ApplicationCo
return result;
}
@ChannelAdapter("requests")
@Poller(interval=10,adviceChain={"txAdvice","repeatAdvice"})
public String input() {
logger.debug("Polling: " + count);
if (list.isEmpty()) {
@@ -71,12 +66,19 @@ public class RepeatTransactionalPollingIntegrationTests implements ApplicationCo
return list.remove(0);
}
@ChannelAdapter("replies")
public void output(String message) {
handled.add(message);
logger.debug("Handled: " + message);
}
@Before
public void clearLists() {
list.clear();
handled.clear();
processed.clear();
count = 0;
}
@Test
@DirtiesContext
public void testSunnyDay() throws Exception {

View File

@@ -8,6 +8,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
@@ -16,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.Lifecycle;
import org.springframework.integration.annotation.ChannelAdapter;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.Poller;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -31,7 +30,7 @@ public class RetryRepeatTransactionalPollingIntegrationTests implements Applicat
private Log logger = LogFactory.getLog(getClass());
private List<String> list = new ArrayList<String>();
private static List<String> list = new ArrayList<String>();
@Autowired
private SimpleRecoverer recoverer;
@@ -45,10 +44,14 @@ public class RetryRepeatTransactionalPollingIntegrationTests implements Applicat
bus = (Lifecycle) applicationContext;
}
private volatile int count = 0;
private static volatile int count = 0;
@ChannelAdapter("requests")
@Poller(interval=10,adviceChain={"txAdvice","repeatAdvice"})
@Before
public void clearLists() {
list.clear();
count = 0;
}
public String input() {
logger.debug("Polling: " + count);
if (list.isEmpty()) {
@@ -57,7 +60,6 @@ public class RetryRepeatTransactionalPollingIntegrationTests implements Applicat
return list.remove(0);
}
@ChannelAdapter("replies")
public void output(String message) {
count++;
logger.debug("Handled: " + message);

View File

@@ -8,6 +8,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
@@ -16,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.Lifecycle;
import org.springframework.integration.annotation.ChannelAdapter;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.Poller;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -31,7 +30,7 @@ public class RetryTransactionalPollingIntegrationTests implements ApplicationCon
private Log logger = LogFactory.getLog(getClass());
private List<String> list = new ArrayList<String>();
private static List<String> list = new ArrayList<String>();
@Autowired
private SimpleRecoverer recoverer;
@@ -45,10 +44,14 @@ public class RetryTransactionalPollingIntegrationTests implements ApplicationCon
bus = (Lifecycle) applicationContext;
}
private volatile int count = 0;
private static volatile int count = 0;
@Before
public void clearLists() {
list.clear();
count = 0;
}
@ChannelAdapter("requests")
@Poller(interval=10, transactionManager="transactionManager")
public String input() {
logger.debug("Polling: " + count);
if (list.isEmpty()) {
@@ -57,7 +60,6 @@ public class RetryTransactionalPollingIntegrationTests implements ApplicationCon
return list.remove(0);
}
@ChannelAdapter("replies")
public void output(String message) {
count++;
logger.debug("Handled: " + message);
@@ -86,7 +88,7 @@ public class RetryTransactionalPollingIntegrationTests implements ApplicationCon
.commaDelimitedListToStringArray("a,b,fail,fail,d,e")));
service.setExpected(expected);
waitForResults(bus, expected.size(), 60);
waitForResults(bus, 6, 100); // (a,b), (fail), (fail), ([fail],d), (e,f)
waitForResults(bus, 6, 100); // a, b, (fail, fail, [fail]), d, e
assertEquals(6,service.getProcessed().size()); // a,b,fail,fail,d,e
assertEquals(1,recoverer.getRecovered().size()); // fail
assertEquals(expected, service.getProcessed());

View File

@@ -8,6 +8,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
@@ -15,9 +16,7 @@ import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.Lifecycle;
import org.springframework.integration.annotation.ChannelAdapter;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.Poller;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
@@ -31,13 +30,13 @@ public class TransactionalPollingIntegrationTests implements ApplicationContextA
private Log logger = LogFactory.getLog(getClass());
private List<String> processed = new ArrayList<String>();
private List<String> handled = new ArrayList<String>();
private List<String> expected;
private static List<String> processed = new ArrayList<String>();
private List<String> list = new ArrayList<String>();
private static List<String> handled = new ArrayList<String>();
private static List<String> expected = new ArrayList<String>();
private static List<String> list = new ArrayList<String>();
private Lifecycle bus;
@@ -45,14 +44,14 @@ public class TransactionalPollingIntegrationTests implements ApplicationContextA
bus = (Lifecycle) applicationContext;
}
private volatile int count = 0;
private volatile static int count = 0;
@ServiceActivator(inputChannel = "requests", outputChannel = "replies")
public String process(String message) {
String result = message + ": " + count;
logger.debug("Handling: " + message);
if (count<expected.size()) {
processed.add(message);
if (count < expected.size()) {
processed.add(message);
count++;
}
if ("fail".equals(message)) {
@@ -60,21 +59,26 @@ public class TransactionalPollingIntegrationTests implements ApplicationContextA
}
return result;
}
@ChannelAdapter("requests")
@Poller(interval=10,transactionManager="transactionManager")
public String input() {
logger.debug("Polling: " + count);
logger.debug("Polling: " + count + " of " + list.size());
if (list.isEmpty()) {
return null;
}
return list.remove(0);
}
@ChannelAdapter("replies")
public void output(String message) {
public void output(String message) {
handled.add(message);
logger.debug("Handled: " + message);
logger.debug("Handled: " + message);
}
@Before
public void clearLists() {
list.clear();
handled.clear();
processed.clear();
count = 0;
}
@Test
@@ -82,10 +86,9 @@ public class TransactionalPollingIntegrationTests implements ApplicationContextA
public void testSunnyDay() throws Exception {
list = TransactionAwareProxyFactory.createTransactionalList(Arrays.asList(StringUtils
.commaDelimitedListToStringArray("a,b,c,d,e,f,g,h,j,k")));
expected = Arrays.asList(StringUtils
.commaDelimitedListToStringArray("a,b,c,d"));
expected = Arrays.asList(StringUtils.commaDelimitedListToStringArray("a,b,c,d"));
waitForResults(bus, 4, 60);
assertEquals(expected,processed);
assertEquals(expected, processed);
}
@Test
@@ -93,10 +96,9 @@ public class TransactionalPollingIntegrationTests implements ApplicationContextA
public void testRollback() throws Exception {
list = TransactionAwareProxyFactory.createTransactionalList(Arrays.asList(StringUtils
.commaDelimitedListToStringArray("a,b,fail,d,e,f,g,h,j,k")));
expected = Arrays.asList(StringUtils
.commaDelimitedListToStringArray("a,b,fail,fail"));
expected = Arrays.asList(StringUtils.commaDelimitedListToStringArray("a,b,fail,fail"));
waitForResults(bus, 4, 30);
assertEquals(expected,processed);
assertEquals(expected, processed);
assertEquals(2, handled.size()); // a,b
}

View File

@@ -9,7 +9,33 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<import resource="TransactionalPollingIntegrationTests-context.xml"/>
<integration:annotation-config />
<integration:channel id="requests" />
<integration:channel id="replies" />
<integration:service-activator ref="testCase" input-channel="requests" output-channel="replies" method="process"/>
<integration:inbound-channel-adapter
ref="testCase" method="input" channel="requests">
<integration:poller>
<integration:interval-trigger interval="10" />
<integration:advice-chain>
<ref bean="txAdvice"/>
<ref bean="repeatAdvice"/>
</integration:advice-chain>
</integration:poller>
</integration:inbound-channel-adapter>
<integration:outbound-channel-adapter
ref="testCase" method="output" channel="replies" />
<bean id="testCase"
class="org.springframework.batch.integration.retry.RepeatTransactionalPollingIntegrationTests" />
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<tx:advice id="txAdvice">
<tx:attributes><tx:method name="*"/></tx:attributes>
</tx:advice>

View File

@@ -10,7 +10,30 @@
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<import resource="TransactionalPollingIntegrationTests-context.xml"/>
<integration:annotation-config />
<integration:channel id="requests" />
<integration:channel id="replies" />
<integration:inbound-channel-adapter
ref="testCase" method="input" channel="requests">
<integration:poller>
<integration:interval-trigger interval="10" />
<integration:advice-chain>
<ref bean="txAdvice"/>
<ref bean="repeatAdvice"/>
</integration:advice-chain>
</integration:poller>
</integration:inbound-channel-adapter>
<integration:outbound-channel-adapter
ref="testCase" method="output" channel="replies" />
<bean id="testCase"
class="org.springframework.batch.integration.retry.RetryRepeatTransactionalPollingIntegrationTests" />
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="*" />

View File

@@ -10,7 +10,27 @@
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<import resource="TransactionalPollingIntegrationTests-context.xml" />
<integration:annotation-config />
<integration:channel id="requests" />
<integration:channel id="replies" />
<integration:inbound-channel-adapter
ref="testCase" method="input" channel="requests">
<integration:poller>
<integration:interval-trigger interval="10" />
<integration:transactional />
</integration:poller>
</integration:inbound-channel-adapter>
<integration:outbound-channel-adapter
ref="testCase" method="output" channel="replies" />
<bean id="testCase"
class="org.springframework.batch.integration.retry.RetryTransactionalPollingIntegrationTests" />
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<bean id="service" class="org.springframework.batch.integration.retry.SimpleService" />
<bean id="recoverer" class="org.springframework.batch.integration.retry.SimpleRecoverer" />
<bean id="retryAdvice" class="org.springframework.batch.retry.interceptor.StatefulRetryOperationsInterceptor">

View File

@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:integration="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:integration="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
@@ -9,8 +11,26 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<integration:annotation-config/>
<integration:channel id="requests"/>
<integration:annotation-config />
<integration:channel id="requests" />
<integration:channel id="replies" />
<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<integration:inbound-channel-adapter
ref="testCase" method="input" channel="requests">
<integration:poller>
<integration:interval-trigger interval="10" />
<integration:transactional />
</integration:poller>
</integration:inbound-channel-adapter>
<integration:outbound-channel-adapter
ref="testCase" method="output" channel="replies" />
<bean id="testCase"
class="org.springframework.batch.integration.retry.TransactionalPollingIntegrationTests" />
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
</beans>