OPEN - issue BATCH-243: Register Job twice if beanName property is used to define a job name

http://opensource.atlassian.com/projects/spring/browse/BATCH-243

Added test case for double registration.
This commit is contained in:
dsyer
2007-12-11 11:46:56 +00:00
parent 7424eedae3
commit 622e27de9c
3 changed files with 71 additions and 3 deletions

View File

@@ -15,14 +15,15 @@
*/
package org.springframework.batch.execution.configuration;
import java.util.Collection;
import junit.framework.TestCase;
import org.springframework.batch.core.configuration.DuplicateJobConfigurationException;
import org.springframework.batch.core.configuration.JobConfiguration;
import org.springframework.batch.core.configuration.NoSuchJobConfigurationException;
import org.springframework.batch.execution.configuration.JobConfigurationRegistryBeanPostProcessor;
import org.springframework.batch.execution.configuration.MapJobConfigurationRegistry;
import org.springframework.beans.FatalBeanException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author Dave Syer
@@ -91,4 +92,16 @@ public class JobConfigurationRegistryBeanPostProcessorTests extends TestCase {
// expected
}
}
public void testExecutionWithApplicationContext() throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test-context.xml", getClass());
MapJobConfigurationRegistry registry = (MapJobConfigurationRegistry) context.getBean("registry");
Collection configurations = registry.getJobConfigurations();
assertEquals(6, configurations.size());
assertNotNull(registry.getJobConfiguration("test-job"));
assertEquals(context.getBean("test-job-with-name"), registry.getJobConfiguration("foo"));
assertEquals(context.getBean("test-job-with-bean-name"), registry.getJobConfiguration("bar"));
assertEquals(context.getBean("test-job-with-parent-and-name"), registry.getJobConfiguration("spam"));
assertEquals(context.getBean("test-job-with-parent-and-bean-name"), registry.getJobConfiguration("bucket"));
}
}

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 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.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean class="org.springframework.batch.execution.configuration.JobConfigurationRegistryBeanPostProcessor">
<property name="jobConfigurationRegistry" ref="registry"/>
</bean>
<bean id="registry" class="org.springframework.batch.execution.configuration.MapJobConfigurationRegistry"/>
<bean id="test-job" class="org.springframework.batch.core.configuration.JobConfiguration">
<property name="steps">
<bean id="step1" class="org.springframework.batch.execution.step.SimpleStepConfiguration">
<constructor-arg>
<bean
class="org.springframework.batch.execution.tasklet.ItemProviderProcessTasklet">
<property name="itemProvider">
<bean
class="org.springframework.batch.item.provider.ListItemProvider">
<constructor-arg value="foo,bar,spam"/>
</bean>
</property>
<property name="itemProcessor">
<bean class="org.springframework.batch.execution.launch.EmptyItemProcessor"/>
</property>
</bean>
</constructor-arg>
</bean>
</property>
</bean>
<bean id="test-job-with-name" class="org.springframework.batch.core.configuration.JobConfiguration">
<property name="name" value="foo"/>
</bean>
<bean id="test-job-with-bean-name" class="org.springframework.batch.core.configuration.JobConfiguration">
<property name="beanName" value="bar"/>
</bean>
<bean id="abstract-job" class="org.springframework.batch.core.configuration.JobConfiguration" abstract="true"/>
<bean id="test-job-with-parent" parent="abstract-job"/>
<bean id="test-job-with-parent-and-name" parent="abstract-job" p:name="spam"/>
<bean id="test-job-with-parent-and-bean-name" parent="abstract-job" p:beanName="bucket"/>
</beans>