diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java index 2ba1277d2..1f505a918 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java @@ -177,7 +177,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I BeanWrapper wrapper = new BeanWrapperImpl(contextFactory.getContext()); if (wrapper.isReadableProperty(key)) { Object property = wrapper.getPropertyValue(key); - if (requiredType.isAssignableFrom(property.getClass())) { + if (property==null || requiredType.isAssignableFrom(property.getClass())) { result = property; } } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java index d04be4dcf..88400f186 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java @@ -38,6 +38,10 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport { @Qualifier("withDate") private PlaceholderTargetSource withDate; + @Autowired + @Qualifier("withNull") + private PlaceholderTargetSource withNull; + @Autowired @Qualifier("compound") private PlaceholderTargetSource compound; @@ -82,6 +86,10 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport { return date; } + public String getGarbage() { + return null; + } + @Test public void testAfterPropertiesSet() throws Exception { PlaceholderTargetSource targetSource = new PlaceholderTargetSource(); @@ -143,6 +151,13 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport { assertEquals("bar-#{date}", target.getName()); } + @Test + public void testGetNull() { + Node target = (Node) withNull.getTarget(); + // Remains unconverted because null is explicitly excluded + assertEquals("bar-#{garbage}", target.getName()); + } + public static interface Node { String getName(); diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml index 79d0b987a..6d0750d7b 100644 --- a/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml @@ -104,6 +104,18 @@ + + + + + + + + +