From a0cad5c48f4ebed90a18c7c4e428d16baa375ad2 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Fri, 8 Jul 2016 17:19:48 +0200 Subject: [PATCH] Use streams and lambdas in spring-test where feasible Issue: SPR-13188 --- .../jdbc/SqlScriptsTestExecutionListener.java | 11 +++-------- .../TransactionalTestExecutionListener.java | 13 +++++-------- .../context/util/TestContextResourceUtils.java | 17 +++++++++-------- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index c58867eb8b..f2400357f4 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -40,10 +40,8 @@ import org.springframework.test.context.transaction.TestContextTransactionUtils; import org.springframework.test.context.util.TestContextResourceUtils; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; -import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.interceptor.DefaultTransactionAttribute; import org.springframework.transaction.interceptor.TransactionAttribute; -import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; @@ -244,12 +242,9 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen TransactionAttribute transactionAttribute = TestContextTransactionUtils.createDelegatingTransactionAttribute( testContext, new DefaultTransactionAttribute(propagation)); - new TransactionTemplate(transactionManager, transactionAttribute).execute(new TransactionCallbackWithoutResult() { - - @Override - public void doInTransactionWithoutResult(TransactionStatus status) { - populator.execute(finalDataSource); - } + new TransactionTemplate(transactionManager, transactionAttribute).execute(status -> { + populator.execute(finalDataSource); + return null; }); } } diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java index b532336991..62a40d1807 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java @@ -19,9 +19,10 @@ package org.springframework.test.context.transaction; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -442,13 +443,9 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis * as well as annotated interface default methods */ private List getAnnotatedMethods(Class clazz, Class annotationType) { - List methods = new ArrayList<>(4); - for (Method method : ReflectionUtils.getUniqueDeclaredMethods(clazz)) { - if (AnnotationUtils.getAnnotation(method, annotationType) != null) { - methods.add(method); - } - } - return methods; + return Arrays.stream(ReflectionUtils.getUniqueDeclaredMethods(clazz)) + .filter(method -> AnnotatedElementUtils.hasAnnotation(method, annotationType)) + .collect(Collectors.toList()); } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/util/TestContextResourceUtils.java b/spring-test/src/main/java/org/springframework/test/context/util/TestContextResourceUtils.java index dcb866c7f8..eb1cba86a0 100644 --- a/spring-test/src/main/java/org/springframework/test/context/util/TestContextResourceUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/util/TestContextResourceUtils.java @@ -16,8 +16,10 @@ package org.springframework.test.context.util; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; @@ -98,8 +100,7 @@ public abstract class TestContextResourceUtils { * @see #convertToClasspathResourcePaths */ public static Resource[] convertToResources(ResourceLoader resourceLoader, String... paths) { - List list = convertToResourceList(resourceLoader, paths); - return list.toArray(new Resource[list.size()]); + return stream(resourceLoader, paths).toArray(Resource[]::new); } /** @@ -114,11 +115,11 @@ public abstract class TestContextResourceUtils { * @see #convertToClasspathResourcePaths */ public static List convertToResourceList(ResourceLoader resourceLoader, String... paths) { - List list = new ArrayList<>(); - for (String path : paths) { - list.add(resourceLoader.getResource(path)); - } - return list; + return stream(resourceLoader, paths).collect(Collectors.toList()); + } + + private static Stream stream(ResourceLoader resourceLoader, String... paths) { + return Arrays.stream(paths).map(resourceLoader::getResource); } }