package org.springframework.batch.integration.retry;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.ServiceActivator;
@MessageEndpoint
public class SimpleService implements Service {
private Log logger = LogFactory.getLog(getClass());
private List<String> processed = new CopyOnWriteArrayList<String>();
private List<String> expected = new ArrayList<String>();
private int count = 0;
public void setExpected(List<String> expected) {
this.expected = expected;
}
/**
* Public getter for the processed.
* @return the processed
*/
public List<String> getProcessed() {
return processed;
}
@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 ("fail".equals(message)) {
throw new RuntimeException("Planned failure");
}
return result;
}
}