RESOLVED - issue BATCH-1219: JmsItemReader and -Writer should check for proper settings on JmsTemplate
This commit is contained in:
@@ -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!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,6 +27,7 @@ import javax.jms.Message;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.Test;
|
||||
import org.springframework.jms.core.JmsOperations;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
|
||||
public class JmsItemReaderTests {
|
||||
|
||||
@@ -105,4 +106,18 @@ public class JmsItemReaderTests {
|
||||
EasyMock.verify(jmsTemplate);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testTemplateWithNoDefaultDestination() throws Exception {
|
||||
JmsTemplate jmsTemplate = new JmsTemplate();
|
||||
jmsTemplate.setReceiveTimeout(100L);
|
||||
itemReader.setJmsTemplate(jmsTemplate);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testTemplateWithNoTimeout() throws Exception {
|
||||
JmsTemplate jmsTemplate = new JmsTemplate();
|
||||
jmsTemplate.setDefaultDestinationName("foo");
|
||||
itemReader.setJmsTemplate(jmsTemplate);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2006-2007 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.batch.item.jms;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.Test;
|
||||
import org.springframework.jms.core.JmsOperations;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
|
||||
public class JmsItemWriterTests {
|
||||
|
||||
JmsItemWriter<String> itemWriter = new JmsItemWriter<String>();
|
||||
|
||||
@Test
|
||||
public void testNoItemTypeSunnyDay() throws Exception {
|
||||
JmsOperations jmsTemplate = EasyMock.createMock(JmsOperations.class);
|
||||
jmsTemplate.convertAndSend("foo");
|
||||
EasyMock.expectLastCall();
|
||||
jmsTemplate.convertAndSend("bar");
|
||||
EasyMock.expectLastCall();
|
||||
EasyMock.replay(jmsTemplate);
|
||||
|
||||
itemWriter.setJmsTemplate(jmsTemplate);
|
||||
itemWriter.write(Arrays.asList("foo", "bar"));
|
||||
EasyMock.verify(jmsTemplate);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testTemplateWithNoDefaultDestination() throws Exception {
|
||||
JmsTemplate jmsTemplate = new JmsTemplate();
|
||||
itemWriter.setJmsTemplate(jmsTemplate);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user