diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/stream/SimpleStreamManager.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/stream/SimpleStreamManager.java index d115714dc..34e85c776 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/stream/SimpleStreamManager.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/stream/SimpleStreamManager.java @@ -102,7 +102,7 @@ public class SimpleStreamManager implements StreamManager { for (Iterator iterator = context.entrySet().iterator(); iterator.hasNext();) { Entry entry = (Entry) iterator.next(); String contextKey = prefix + entry.getKey(); - result.putString(contextKey, entry.getValue().toString()); + result.put(contextKey, entry.getValue()); } } }); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/stream/SimpleStreamManagerTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/stream/SimpleStreamManagerTests.java index 655ab46e8..52da77670 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/stream/SimpleStreamManagerTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/stream/SimpleStreamManagerTests.java @@ -15,8 +15,11 @@ */ package org.springframework.batch.item.stream; +import java.io.Serializable; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Map.Entry; import junit.framework.TestCase; @@ -234,6 +237,29 @@ public class SimpleStreamManagerTests extends TestCase { assertEquals(0, list.size()); } + /** + * Make sure the values from registered stream are present in + * manager's execution context. + */ + public void testGetExecutionContextPreservesValues() { + stream = new ItemStreamAdapter() { + public ExecutionContext getExecutionContext() { + ExecutionContext ctx = new ExecutionContext(); + ctx.putString("string", "testString"); + ctx.putDouble("double", 5.5); + ctx.putLong("long", 7); + return ctx; + } + }; + manager.register("foo", stream); + ExecutionContext streamContext = stream.getExecutionContext(); + ExecutionContext managerContext = manager.getExecutionContext("foo"); + for (Iterator it = streamContext.entrySet().iterator(); it.hasNext();) { + Entry entry = (Entry) it.next(); + assertTrue(managerContext.containsValue(entry.getValue())); + } + + } private final class ItemStreamAdapterExtension extends ItemStreamAdapter { public ExecutionContext getExecutionContext() { return new ExecutionContext(PropertiesConverter.stringToProperties("foo=bar"));