diff --git a/subprojects/spring-batch-redis-core/src/main/java/com/redis/spring/batch/gen/ItemToKeyValueFunction.java b/subprojects/spring-batch-redis-core/src/main/java/com/redis/spring/batch/gen/ItemToKeyValueFunction.java index 55b42dcd..c803338c 100644 --- a/subprojects/spring-batch-redis-core/src/main/java/com/redis/spring/batch/gen/ItemToKeyValueFunction.java +++ b/subprojects/spring-batch-redis-core/src/main/java/com/redis/spring/batch/gen/ItemToKeyValueFunction.java @@ -1,16 +1,23 @@ package com.redis.spring.batch.gen; import java.util.function.Function; +import java.util.function.Supplier; import com.redis.spring.batch.KeyValue; import com.redis.spring.batch.KeyValue.DataType; import com.redis.spring.batch.gen.Item.Type; -public class ItemToKeyValueFunction implements Function> { +public class ItemToKeyValueFunction> implements Function { + + private final Supplier factory; + + public ItemToKeyValueFunction(Supplier factory) { + this.factory = factory; + } @Override - public KeyValue apply(Item item) { - KeyValue kv = new KeyValue<>(); + public T apply(Item item) { + T kv = factory.get(); kv.setKey(item.getKey()); kv.setTtl(item.getTtl()); kv.setType(toRedisTypeString(item.getType())); diff --git a/subprojects/spring-batch-redis-test/src/main/java/com/redis/spring/batch/test/AbstractTestBase.java b/subprojects/spring-batch-redis-test/src/main/java/com/redis/spring/batch/test/AbstractTestBase.java index f6e884af..604363fc 100644 --- a/subprojects/spring-batch-redis-test/src/main/java/com/redis/spring/batch/test/AbstractTestBase.java +++ b/subprojects/spring-batch-redis-test/src/main/java/com/redis/spring/batch/test/AbstractTestBase.java @@ -82,7 +82,7 @@ public abstract class AbstractTestBase { public static final Duration DEFAULT_AWAIT_TIMEOUT = Duration.ofSeconds(3); protected static final ItemProcessor> genItemProcessor = new FunctionItemProcessor<>( - new ItemToKeyValueFunction()); + new ItemToKeyValueFunction<>(KeyValue::new)); private int chunkSize = DEFAULT_CHUNK_SIZE; private Duration idleTimeout = DEFAULT_IDLE_TIMEOUT;