From 22d769afdd06ae2caa273c46b5839f539bff1b98 Mon Sep 17 00:00:00 2001 From: dsyer Date: Tue, 11 Dec 2007 12:39:30 +0000 Subject: [PATCH] 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 additional test cases and comments in test. --- ...urationRegistryBeanPostProcessorTests.java | 52 ++++++++++++++----- .../execution/configuration/test-context.xml | 8 +++ 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/configuration/JobConfigurationRegistryBeanPostProcessorTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/configuration/JobConfigurationRegistryBeanPostProcessorTests.java index e7b26a593..ebc24ecef 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/configuration/JobConfigurationRegistryBeanPostProcessorTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/configuration/JobConfigurationRegistryBeanPostProcessorTests.java @@ -37,8 +37,7 @@ public class JobConfigurationRegistryBeanPostProcessorTests extends TestCase { try { processor.afterPropertiesSet(); fail("Expected IllegalArgumentException"); - } - catch (IllegalArgumentException e) { + } catch (IllegalArgumentException e) { // expected assertTrue(e.getMessage().indexOf("JobConfigurationRegistry") >= 0); } @@ -46,12 +45,14 @@ public class JobConfigurationRegistryBeanPostProcessorTests extends TestCase { public void testBeforeInitialization() throws Exception { // should be a no-op - assertEquals("foo", processor.postProcessAfterInitialization("foo", "bar")); + assertEquals("foo", processor.postProcessAfterInitialization("foo", + "bar")); } public void testAfterInitializationWithWrongType() throws Exception { // should be a no-op - assertEquals("foo", processor.postProcessAfterInitialization("foo", "bar")); + assertEquals("foo", processor.postProcessAfterInitialization("foo", + "bar")); } public void testAfterInitializationWithCorrectType() throws Exception { @@ -59,7 +60,8 @@ public class JobConfigurationRegistryBeanPostProcessorTests extends TestCase { processor.setJobConfigurationRegistry(registry); JobConfiguration configuration = new JobConfiguration(); configuration.setBeanName("foo"); - assertEquals(configuration, processor.postProcessAfterInitialization(configuration, "bar")); + assertEquals(configuration, processor.postProcessAfterInitialization( + configuration, "bar")); assertEquals(configuration, registry.getJobConfiguration("foo")); } @@ -83,7 +85,8 @@ public class JobConfigurationRegistryBeanPostProcessorTests extends TestCase { processor.setJobConfigurationRegistry(registry); JobConfiguration configuration = new JobConfiguration(); configuration.setBeanName("foo"); - assertEquals(configuration, processor.postProcessAfterInitialization(configuration, "bar")); + assertEquals(configuration, processor.postProcessAfterInitialization( + configuration, "bar")); processor.destroy(); try { assertEquals(null, registry.getJobConfiguration("foo")); @@ -92,16 +95,37 @@ 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"); + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "test-context.xml", getClass()); + MapJobConfigurationRegistry registry = (MapJobConfigurationRegistry) context + .getBean("registry"); Collection configurations = registry.getJobConfigurations(); - assertEquals(6, configurations.size()); + // System.err.println(configurations); + String[] names = context.getBeanNamesForType(JobConfiguration.class); + int count = names.length; + // Each concrete bean of type JobConfiguration is registered... + assertEquals(count, configurations.size()); + // N.B. there is a failure / wonky mode where a parent bean is given an + // explicit name or beanName (using property setter): in this case then + // child beans will have the same name and will be re-registered (and + // override, if the registry supports that). 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")); + 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")); + assertEquals(context.getBean("test-job-with-concrete-parent"), registry + .getJobConfiguration("maps")); + assertEquals(context.getBean("test-job-with-concrete-parent-and-name"), + registry.getJobConfiguration("oof")); + assertEquals(context + .getBean("test-job-with-concrete-parent-and-bean-name"), + registry.getJobConfiguration("rab")); } } diff --git a/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml b/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml index 33d001bac..345a8b28d 100644 --- a/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml +++ b/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml @@ -50,4 +50,12 @@ + + + + + + + +