From efea8eba9594196d8a84e47979890752ee149a68 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Thu, 7 Mar 2019 08:54:19 -0500 Subject: [PATCH] Fix new Sonar issues --- .../RateLimiterRequestHandlerAdvice.java | 3 +- .../RateLimiterRequestHandlerAdviceTests.java | 3 +- .../config/FileListFilterFactoryBean.java | 2 + .../file/filters/CompositeFileListFilter.java | 4 +- .../AbstractInboundFileSynchronizer.java | 53 ++++++++++--------- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdvice.java index 5ad9118659..82f38c4e28 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdvice.java @@ -34,6 +34,7 @@ import io.vavr.control.Try; * Resilience4j. * * @author Artem Bilan + * @author Gary Russell * * @since 5.2 */ @@ -126,7 +127,7 @@ public class RateLimiterRequestHandlerAdvice extends AbstractRequestHandlerAdvic } @Override - protected Object doInvoke(ExecutionCallback callback, Object target, Message message) throws Exception { + protected Object doInvoke(ExecutionCallback callback, Object target, Message message) { CheckedFunction0 restrictedCall = RateLimiter.decorateCheckedSupplier(this.rateLimiter, callback::execute); try { diff --git a/spring-integration-core/src/test/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdviceTests.java b/spring-integration-core/src/test/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdviceTests.java index 75c05d71f0..f4473e971a 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdviceTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/handler/advice/RateLimiterRequestHandlerAdviceTests.java @@ -21,6 +21,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.time.Duration; import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; import org.junit.jupiter.api.Test; @@ -65,7 +66,7 @@ public class RateLimiterRequestHandlerAdviceTests { this.requestChannel.send(testMessage); assertThatExceptionOfType(MessagingException.class) - .isThrownBy(() -> this.requestChannel.send(testMessage)) + .isThrownBy(() -> IntStream.range(0, 10).forEach(i -> this.requestChannel.send(testMessage))) .withCauseInstanceOf(RequestNotPermitted.class) .withMessageContaining("Rate limit exceeded for: "); diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java index 0e4bf75deb..c5a7eea05b 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java @@ -28,6 +28,7 @@ import org.springframework.integration.file.filters.FileListFilter; import org.springframework.integration.file.filters.IgnoreHiddenFileListFilter; import org.springframework.integration.file.filters.RegexPatternFileListFilter; import org.springframework.integration.file.filters.SimplePatternFileListFilter; +import org.springframework.lang.NonNull; /** * @author Mark Fisher @@ -91,6 +92,7 @@ public class FileListFilterFactoryBean implements FactoryBean getObject() { if (this.result == null) { synchronized (this.monitor) { diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/filters/CompositeFileListFilter.java b/spring-integration-file/src/main/java/org/springframework/integration/file/filters/CompositeFileListFilter.java index c3dce5e3bc..caaf2cc694 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/filters/CompositeFileListFilter.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/filters/CompositeFileListFilter.java @@ -116,7 +116,9 @@ public class CompositeFileListFilter } } this.fileFilters.addAll(filtersToAdd); - this.allSupportAccept &= filtersToAdd.stream().allMatch(FileListFilter::supportsSingleFileFiltering); + if (this.allSupportAccept) { + this.allSupportAccept = filtersToAdd.stream().allMatch(FileListFilter::supportsSingleFileFiltering); + } return this; } diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizer.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizer.java index 4ed6b2f6a0..49eaab4a95 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizer.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizer.java @@ -334,7 +334,7 @@ public abstract class AbstractInboundFileSynchronizer for (F file : filteredFiles) { if (filteringOneByOne) { - if ((maxFetchSize < 0 || accepted < maxFetchSize) && this.filter.accept(file)) { + if ((maxFetchSize < 0 || accepted < maxFetchSize) && this.filter.accept(file)) { // NOSONAR never null accepted++; } else { @@ -342,21 +342,7 @@ public abstract class AbstractInboundFileSynchronizer copied--; } } - try { - if (file != null && !copyFileToLocalDirectory(this.evaluatedRemoteDirectory, file, - localDirectory, session)) { - copied--; - } - } - catch (RuntimeException | IOException e1) { - if (filteringOneByOne) { - resetFilterIfNecessary(file); - } - else { - rollbackFromFileToListEnd(filteredFiles, file); - } - throw e1; - } + copied = copyIfNotNull(localDirectory, session, filteringOneByOne, filteredFiles, copied, file); } return copied; } @@ -365,6 +351,27 @@ public abstract class AbstractInboundFileSynchronizer } } + private int copyIfNotNull(File localDirectory, Session session, boolean filteringOneByOne, List filteredFiles, + int copied, F file) throws IOException { + + try { + if (file != null && !copyFileToLocalDirectory(this.evaluatedRemoteDirectory, file, + localDirectory, session)) { + copied--; + } + } + catch (RuntimeException | IOException e1) { + if (filteringOneByOne) { + resetFilterIfNecessary(file); + } + else { + rollbackFromFileToListEnd(filteredFiles, file); + } + throw e1; + } + return copied; + } + private List applyFilter(F[] files, boolean haveFilter, boolean filteringOneByOne, int maxFetchSize) { List filteredFiles; if (!filteringOneByOne && haveFilter) { @@ -373,15 +380,13 @@ public abstract class AbstractInboundFileSynchronizer else { filteredFiles = Arrays.asList(files); } - if (maxFetchSize >= 0 && filteredFiles.size() > maxFetchSize) { - if (!filteringOneByOne) { - if (haveFilter) { - rollbackFromFileToListEnd(filteredFiles, filteredFiles.get(maxFetchSize)); - } - filteredFiles = filteredFiles.stream() - .limit(maxFetchSize) - .collect(Collectors.toList()); + if (maxFetchSize >= 0 && filteredFiles.size() > maxFetchSize && !filteringOneByOne) { + if (haveFilter) { + rollbackFromFileToListEnd(filteredFiles, filteredFiles.get(maxFetchSize)); } + filteredFiles = filteredFiles.stream() + .limit(maxFetchSize) + .collect(Collectors.toList()); } return filteredFiles; }