From a46766bd0b14def1a80c1616911f9e500ef1cd4b Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 19 Jul 2016 10:34:20 +0100 Subject: [PATCH] Remove commons-io dependency --- pom.xml | 5 ---- .../stubrunner/StubConfiguration.java | 3 --- .../StubRunnerRibbonBeanPostProcessor.java | 2 +- .../StubRunnerRuleCustomPortJUnitTest.java | 9 ++++--- .../junit/StubRunnerRuleJUnitTest.java | 9 ++++--- .../RecursiveFilesConverterSpec.groovy | 23 +++++++++------- .../pom.xml | 4 --- .../verifier/file/ContractFileScanner.groovy | 26 +++++++++++++++---- 8 files changed, 46 insertions(+), 35 deletions(-) diff --git a/pom.xml b/pom.xml index e9f00ca59d..949063d377 100644 --- a/pom.xml +++ b/pom.xml @@ -46,11 +46,6 @@ cglib 3.2.4 - - commons-io - commons-io - 2.0 - org.apache.commons commons-lang3 diff --git a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubConfiguration.java b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubConfiguration.java index 098ee6b49c..f20f244b9b 100644 --- a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubConfiguration.java +++ b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubConfiguration.java @@ -16,9 +16,6 @@ package org.springframework.cloud.contract.stubrunner; -import java.util.Arrays; -import java.util.List; - import org.springframework.util.StringUtils; /** diff --git a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/ribbon/StubRunnerRibbonBeanPostProcessor.java b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/ribbon/StubRunnerRibbonBeanPostProcessor.java index 9ba1002603..147f23ccc4 100644 --- a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/ribbon/StubRunnerRibbonBeanPostProcessor.java +++ b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/ribbon/StubRunnerRibbonBeanPostProcessor.java @@ -67,7 +67,7 @@ class StubRunnerRibbonBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof ServerList && !(bean instanceof StubRunnerRibbonServerList)) { - return new StubRunnerRibbonServerList(stubFinder(), stubMapperProperties(), clientConfig(), (ServerList) bean); + return new StubRunnerRibbonServerList(stubFinder(), stubMapperProperties(), clientConfig(), (ServerList) bean); } return bean; } diff --git a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java index 42843de0b9..2cbfa95bfe 100644 --- a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java +++ b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java @@ -16,17 +16,18 @@ package org.springframework.cloud.contract.stubrunner.junit; +import static org.assertj.core.api.BDDAssertions.then; + import java.io.InputStream; import java.net.URI; +import java.nio.charset.Charset; -import org.apache.commons.io.IOUtils; import org.assertj.core.api.BDDAssertions; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; - -import static org.assertj.core.api.BDDAssertions.then; +import org.springframework.util.StreamUtils; /** * @author Marcin Grzejszczak @@ -79,7 +80,7 @@ public class StubRunnerRuleCustomPortJUnitTest { private String httpGet(String url) throws Exception { try(InputStream stream = URI.create(url).toURL().openStream()) { - return IOUtils.toString(stream); + return StreamUtils.copyToString(stream, Charset.forName("UTF-8")); } } } diff --git a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java index 41cd3e9c85..96f8153a18 100644 --- a/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java +++ b/spring-cloud-contract-stub-runner/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java @@ -16,17 +16,18 @@ package org.springframework.cloud.contract.stubrunner.junit; +import static org.assertj.core.api.BDDAssertions.then; + import java.io.InputStream; import java.net.URI; +import java.nio.charset.Charset; -import org.apache.commons.io.IOUtils; import org.assertj.core.api.BDDAssertions; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; - -import static org.assertj.core.api.BDDAssertions.then; +import org.springframework.util.StreamUtils; /** * @author Marcin Grzejszczak @@ -75,7 +76,7 @@ public class StubRunnerRuleJUnitTest { private String httpGet(String url) throws Exception { try(InputStream stream = URI.create(url).toURL().openStream()) { - return IOUtils.toString(stream); + return StreamUtils.copyToString(stream, Charset.forName("UTF-8")); } } } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy index 0e3de65413..1cbf02f327 100755 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy @@ -16,16 +16,19 @@ package org.springframework.cloud.contract.verifier.wiremock -import org.apache.commons.io.FileUtils -import org.apache.commons.io.filefilter.TrueFileFilter +import groovy.io.FileType + +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths + import org.junit.Rule import org.junit.rules.TemporaryFolder import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties import org.springframework.cloud.contract.verifier.converter.SingleFileConverter -import spock.lang.Specification +import org.springframework.util.FileSystemUtils -import java.nio.file.Path -import java.nio.file.Paths +import spock.lang.Specification class RecursiveFilesConverterSpec extends Specification { @@ -41,7 +44,7 @@ class RecursiveFilesConverterSpec extends Specification { File originalSourceRootDirectory = new File(this.getClass().getResource("/converter/source").toURI()) properties.contractsDslDir = tmpFolder.newFolder("source") properties.stubsOutputDir = tmpFolder.newFolder("target") - FileUtils.copyDirectory(originalSourceRootDirectory, properties.contractsDslDir) + FileSystemUtils.copyRecursively(originalSourceRootDirectory, properties.contractsDslDir) and: def singleFileConverterStub = Stub(SingleFileConverter) singleFileConverterStub.canHandleFileName(_) >> { String fileName -> fileName.endsWith(".groovy") } @@ -52,7 +55,8 @@ class RecursiveFilesConverterSpec extends Specification { when: recursiveFilesConverter.processFiles() then: - Collection createdFiles = FileUtils.listFiles(properties.stubsOutputDir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE) + Collection createdFiles = [] as List + properties.stubsOutputDir.eachFileRecurse(FileType.FILES) {it -> createdFiles << it} Set relativizedCreatedFiles = getRelativePathsForFilesInDirectory(createdFiles, properties.stubsOutputDir) EXPECTED_TARGET_FILES == relativizedCreatedFiles and: @@ -66,7 +70,7 @@ class RecursiveFilesConverterSpec extends Specification { properties.contractsDslDir = tmpFolder.newFolder("source") properties.stubsOutputDir = tmpFolder.newFolder("target") properties.excludedFiles = ["dir1/**"] - FileUtils.copyDirectory(originalSourceRootDirectory, properties.contractsDslDir) + FileSystemUtils.copyRecursively(originalSourceRootDirectory, properties.contractsDslDir) and: def singleFileConverterStub = Stub(SingleFileConverter) singleFileConverterStub.canHandleFileName(_) >> { String fileName -> fileName.endsWith(".groovy") } @@ -77,7 +81,8 @@ class RecursiveFilesConverterSpec extends Specification { when: recursiveFilesConverter.processFiles() then: - Collection createdFiles = FileUtils.listFiles(properties.stubsOutputDir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE) + Collection createdFiles = [] as List + properties.stubsOutputDir.eachFileRecurse(FileType.FILES) {it -> createdFiles << it} Set relativizedCreatedFiles = getRelativePathsForFilesInDirectory(createdFiles, properties.stubsOutputDir) [Paths.get("dslRoot.json"), Paths.get("dir2/dsl2.json")] as Set == relativizedCreatedFiles as Set and: diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/pom.xml b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/pom.xml index 7e682bd0e0..10414853ec 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/pom.xml +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/pom.xml @@ -21,10 +21,6 @@ org.springframework.cloud spring-cloud-contract-verifier-testing-utils - - commons-io - commons-io - org.apache.commons commons-lang3 diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/file/ContractFileScanner.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/file/ContractFileScanner.groovy index 7b7ad47618..e1af75de6a 100755 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/file/ContractFileScanner.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/file/ContractFileScanner.groovy @@ -16,11 +16,7 @@ package org.springframework.cloud.contract.verifier.file -import com.google.common.collect.ArrayListMultimap -import com.google.common.collect.ListMultimap import groovy.transform.CompileStatic -import org.apache.commons.io.FilenameUtils -import org.apache.commons.lang3.SystemUtils import java.nio.file.FileSystem import java.nio.file.FileSystems @@ -28,6 +24,11 @@ import java.nio.file.Path import java.nio.file.PathMatcher import java.util.regex.Pattern +import org.apache.commons.lang3.SystemUtils + +import com.google.common.collect.ArrayListMultimap +import com.google.common.collect.ListMultimap + /** * Scans the provided file path for the DSLs. There's a possibility to provide * inclusion and exclusion filters. @@ -107,6 +108,21 @@ class ContractFileScanner { } private boolean isContractFile(File file) { - return file.isFile() && FilenameUtils.getExtension(file.toString()).equalsIgnoreCase("groovy") + return file.isFile() && getFilenameExtension(file.toString())?.equalsIgnoreCase("groovy") + } + + private static String getFilenameExtension(String path) { + if (path == null) { + return null; + } + int extIndex = path.lastIndexOf('.'); + if (extIndex == -1) { + return null; + } + int folderIndex = path.lastIndexOf('/'); + if (folderIndex > extIndex) { + return null; + } + return path.substring(extIndex + 1); } }