RESOLVED - issue BATCH-1219: JmsItemReader and -Writer should check for proper settings on JmsTemplate

This commit is contained in:
dsyer
2009-04-29 14:49:34 +00:00
parent 8dc6bc1091
commit 1de9c71647
4 changed files with 88 additions and 2 deletions

View File

@@ -51,6 +51,17 @@ public class JmsItemReader<T> implements ItemReader<T> {
*/
public void setJmsTemplate(JmsOperations jmsTemplate) {
this.jmsTemplate = jmsTemplate;
if (jmsTemplate instanceof JmsTemplate) {
JmsTemplate template = (JmsTemplate) jmsTemplate;
Assert
.isTrue(
template.getReceiveTimeout() != JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT,
"JmsTemplate must have a receive timeout!");
Assert
.isTrue(template.getDefaultDestination() != null
|| template.getDefaultDestinationName() != null,
"JmsTemplate must have a defaultDestination or defaultDestinationName!");
}
}
/**

View File

@@ -23,11 +23,13 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemWriter;
import org.springframework.jms.core.JmsOperations;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.util.Assert;
/**
* An {@link ItemWriter} for JMS using a {@link JmsTemplate}. The template
* should have a default destination, which will be used to send items in
* {@link #write(List)}.<br/><br/>
* {@link #write(List)}.<br/>
* <br/>
*
* The implementation is thread safe after its properties are set (normal
* singleton behavior).
@@ -44,10 +46,18 @@ public class JmsItemWriter<T> implements ItemWriter<T> {
/**
* Setter for JMS template.
*
* @param jmsTemplate a {@link JmsOperations} instance
* @param jmsTemplate
* a {@link JmsOperations} instance
*/
public void setJmsTemplate(JmsOperations jmsTemplate) {
this.jmsTemplate = jmsTemplate;
if (jmsTemplate instanceof JmsTemplate) {
JmsTemplate template = (JmsTemplate) jmsTemplate;
Assert
.isTrue(template.getDefaultDestination() != null
|| template.getDefaultDestinationName() != null,
"JmsTemplate must have a defaultDestination or defaultDestinationName!");
}
}
/**