From c5d3456d3aa07d51c60d1b0cd0135537d2e3f69c Mon Sep 17 00:00:00 2001 From: Anatolii Zhmaiev Date: Thu, 20 Aug 2020 19:13:24 +0300 Subject: [PATCH] Convert groovy to java (spring-cloud-contract-verifier module) (#1476) * Convert groovy to java (gh-1470) Co-authored-by: Anatolii Zhmaiev --- .../cloud/contract/verifier/FileSaver.groovy | 68 ----- .../contract/verifier/TestGenerator.groovy | 197 ------------- .../verifier/builder/BlockBuilder.groovy | 254 ----------------- .../builder/imports/BaseImportProvider.groovy | 85 ------ .../builder/imports/HttpImportProvider.groovy | 113 -------- .../config/framework/TestNGDefinition.groovy | 85 ------ .../HandlebarsTemplateProcessor.groovy | 258 ----------------- .../util/ToFileContractsTransformer.groovy | 107 ------- .../cloud/contract/verifier/FileSaver.java | 75 +++++ .../contract/verifier/TestGenerator.java | 208 ++++++++++++++ .../contract/verifier/builder/Acceptor.java | 0 .../verifier/builder/BaseClassProvider.java | 0 .../verifier/builder/BlockBuilder.java | 248 ++++++++++++++++ .../builder/BodyAssertionLineCreator.java | 0 .../builder/BodyMethodGeneration.java | 0 .../verifier/builder/BodyMethodVisitor.java | 0 .../contract/verifier/builder/BodyParser.java | 0 .../contract/verifier/builder/BodyReader.java | 0 .../contract/verifier/builder/BodyThen.java | 0 .../verifier/builder/ClassAnnotation.java | 0 .../builder/ClassAnnotationsBuilder.java | 0 .../verifier/builder/ClassBodyBuilder.java | 0 .../verifier/builder/ClassMetaData.java | 0 .../verifier/builder/ClassVerifier.java | 0 .../verifier/builder/CommunicationType.java | 0 .../verifier/builder/ComparisonBuilder.java | 0 .../verifier/builder/ContentHelper.java | 0 .../builder/CookieElementProcessor.java | 0 .../verifier/builder/CustomImports.java | 0 .../verifier/builder/CustomStaticImports.java | 0 .../builder/DefaultBaseClassProvider.java | 0 .../builder/DefaultClassMetadata.java | 0 .../verifier/builder/DefaultImports.java | 0 .../builder/DefaultJsonStaticImports.java | 0 .../builder/DefaultStaticImports.java | 0 .../verifier/builder/ExplicitAcceptor.java | 0 .../builder/ExplicitRequestGiven.java | 0 .../builder/ExplicitResponseWhen.java | 0 .../builder/ExplicitRestAssuredImports.java | 0 .../ExplicitRestAssuredStaticImports.java | 0 .../contract/verifier/builder/Field.java | 0 .../verifier/builder/FieldBuilder.java | 0 .../builder/GeneratedClassDataForMethod.java | 0 .../builder/GeneratedClassMetaData.java | 0 .../verifier/builder/GeneratedTestClass.java | 0 .../builder/GeneratedTestClassBuilder.java | 0 .../builder/GenericBinaryBodyThen.java | 0 .../verifier/builder/GenericHttpBodyThen.java | 1 - .../verifier/builder/GenericJsonBodyThen.java | 0 .../verifier/builder/GenericTextBodyThen.java | 0 .../verifier/builder/GenericXmlBodyThen.java | 0 .../contract/verifier/builder/Given.java | 0 .../verifier/builder/GroovyBodyParser.java | 0 .../verifier/builder/GroovyClassMetaData.java | 0 .../builder/GroovyComparisonBuilder.java | 0 .../contract/verifier/builder/Imports.java | 0 .../verifier/builder/ImportsBuilder.java | 0 .../InProgressContractMethodPreProcessor.java | 0 .../verifier/builder/JUnit4IgnoreImports.java | 0 .../builder/JUnit4IgnoreMethodAnnotation.java | 0 .../verifier/builder/JUnit4Imports.java | 0 .../builder/JUnit4MethodAnnotation.java | 0 .../builder/JUnit4OrderClassAnnotation.java | 0 .../verifier/builder/JUnit4OrderImports.java | 0 .../verifier/builder/JUnit5IgnoreImports.java | 0 .../builder/JUnit5IgnoreMethodAnnotation.java | 0 .../verifier/builder/JUnit5Imports.java | 0 .../builder/JUnit5MethodAnnotation.java | 0 .../builder/JUnit5OrderClassAnnotation.java | 0 .../verifier/builder/JUnit5OrderImports.java | 0 .../verifier/builder/JUnitMethodMetadata.java | 0 .../verifier/builder/JavaClassMetaData.java | 0 .../verifier/builder/JavaJaxRsThen.java | 0 .../verifier/builder/JavaJaxRsWhen.java | 0 .../builder/JavaMessagingBodyParser.java | 0 .../verifier/builder/JavaMessagingGiven.java | 0 .../builder/JavaMessagingWithBodyThen.java | 0 .../builder/JavaRestAssuredGiven.java | 0 .../verifier/builder/JavaRestAssuredThen.java | 0 .../verifier/builder/JavaRestAssuredWhen.java | 0 .../verifier/builder/JavaTestGenerator.java | 0 .../verifier/builder/JaxRsAcceptor.java | 0 .../verifier/builder/JaxRsBodyParser.java | 0 .../contract/verifier/builder/JaxRsGiven.java | 0 .../verifier/builder/JaxRsImports.java | 0 .../builder/JaxRsRequestCookiesWhen.java | 0 .../builder/JaxRsRequestHeadersWhen.java | 0 .../builder/JaxRsRequestInvokerWhen.java | 0 .../builder/JaxRsRequestMethodWhen.java | 0 .../verifier/builder/JaxRsRequestWhen.java | 0 .../builder/JaxRsResponseCookiesThen.java | 0 .../builder/JaxRsResponseHeadersThen.java | 0 .../verifier/builder/JaxRsStaticImports.java | 0 .../verifier/builder/JaxRsStatusCodeThen.java | 0 .../contract/verifier/builder/JaxRsThen.java | 0 .../verifier/builder/JaxRsUrlPathWhen.java | 0 .../contract/verifier/builder/JaxRsWhen.java | 0 .../builder/JsonBodyVerificationBuilder.java | 0 .../verifier/builder/JsonPathImports.java | 0 .../builder/MessagingAssertThatThen.java | 0 .../builder/MessagingAssertThatWhen.java | 0 .../verifier/builder/MessagingBodyGiven.java | 0 .../verifier/builder/MessagingBodyParser.java | 0 .../verifier/builder/MessagingBodyThen.java | 0 .../verifier/builder/MessagingBodyWhen.java | 0 .../verifier/builder/MessagingFields.java | 0 .../verifier/builder/MessagingGiven.java | 0 .../builder/MessagingHeadersGiven.java | 0 .../builder/MessagingHeadersThen.java | 0 .../verifier/builder/MessagingImports.java | 0 .../builder/MessagingReceiveMessageThen.java | 0 .../builder/MessagingSpockNoMessageThen.java | 0 .../builder/MessagingStaticImports.java | 0 .../builder/MessagingTriggeredByWhen.java | 0 .../verifier/builder/MessagingWhen.java | 0 .../builder/MessagingWithBodyThen.java | 0 .../verifier/builder/MetaDataBuilder.java | 0 .../verifier/builder/MethodAcceptor.java | 0 .../builder/MethodAnnotationBuilder.java | 0 .../verifier/builder/MethodAnnotations.java | 0 .../verifier/builder/MethodMetadata.java | 0 .../builder/MethodMetadataBuilder.java | 0 .../verifier/builder/MethodPostProcessor.java | 0 .../verifier/builder/MethodPreProcessor.java | 0 .../verifier/builder/MethodVisitor.java | 0 .../verifier/builder/MockMvcAcceptor.java | 0 .../verifier/builder/MockMvcAsyncWhen.java | 0 .../verifier/builder/MockMvcBodyGiven.java | 0 .../verifier/builder/MockMvcCookiesGiven.java | 0 .../verifier/builder/MockMvcHeadersGiven.java | 0 .../builder/MockMvcMultipartGiven.java | 0 .../builder/MockMvcQueryParamsWhen.java | 0 .../verifier/builder/MockMvcRequestGiven.java | 0 .../verifier/builder/MockMvcResponseWhen.java | 0 .../builder/MockMvcRestAssuredImports.java | 0 .../MockMvcRestAssuredStaticImports.java | 0 .../verifier/builder/MockMvcUrlWhen.java | 0 .../verifier/builder/NameProvider.java | 0 .../verifier/builder/OurCallable.java | 0 .../verifier/builder/QueryParamsResolver.java | 0 .../builder/RestAssuredBodyParser.java | 0 .../builder/RestAssuredCookiesThen.java | 0 .../verifier/builder/RestAssuredGiven.java | 0 .../builder/RestAssuredHeadersThen.java | 0 .../builder/RestAssuredStatusCodeThen.java | 0 .../verifier/builder/RestAssuredThen.java | 0 .../verifier/builder/RestAssuredVerifier.java | 0 .../verifier/builder/RestAssuredWhen.java | 0 .../verifier/builder/SingleMethodBuilder.java | 0 .../verifier/builder/SingleTestGenerator.java | 0 .../verifier/builder/SpockIgnoreImports.java | 0 .../builder/SpockIgnoreMethodAnnotation.java | 0 .../verifier/builder/SpockImports.java | 0 .../builder/SpockJaxRsBodyParser.java | 0 .../verifier/builder/SpockJaxRsThen.java | 0 .../verifier/builder/SpockJaxRsWhen.java | 0 .../builder/SpockMessagingBodyParser.java | 0 .../builder/SpockMessagingEmptyThen.java | 0 .../verifier/builder/SpockMessagingGiven.java | 0 .../builder/SpockMessagingWithBodyThen.java | 0 .../verifier/builder/SpockMethodMetadata.java | 0 .../builder/SpockMockMvcMultipartGiven.java | 0 .../builder/SpockMockMvcRequestGiven.java | 0 .../builder/SpockMockMvcResponseWhen.java | 0 .../builder/SpockOrderClassAnnotation.java | 0 .../verifier/builder/SpockOrderImports.java | 0 .../builder/SpockRestAssuredBodyParser.java | 0 .../builder/SpockRestAssuredGiven.java | 0 .../builder/SpockRestAssuredThen.java | 0 .../builder/SpockRestAssuredWhen.java | 0 .../SuppressWarningsClassAnnotation.java | 0 .../TemplateUpdatingMethodPostProcessor.java | 0 .../verifier/builder/TestNGImports.java | 0 .../builder/TestNGMethodAnnotation.java | 0 .../builder/TestSideRequestTemplateModel.java | 0 .../cloud/contract/verifier/builder/Then.java | 0 .../contract/verifier/builder/Visitor.java | 0 .../builder/WebTestClientAcceptor.java | 0 .../builder/WebTestClientRequestGiven.java | 0 .../builder/WebTestClientResponseWhen.java | 0 ...ebTestClientRestAssured3StaticImports.java | 0 .../WebTestClientRestAssuredImports.java | 0 .../cloud/contract/verifier/builder/When.java | 0 .../builder/XmlBodyVerificationBuilder.java | 0 .../contract/verifier/builder/XmlImports.java | 0 .../handlebars/HandlebarsEscapeHelper.java | 0 .../handlebars/HandlebarsJsonPathHelper.java | 0 .../builder/imports/BaseImportProvider.java | 98 +++++++ .../builder/imports/HttpImportProvider.java | 159 +++++++++++ .../builder/imports/ImportDefinitions.java} | 33 ++- .../imports/MessagingImportProvider.java} | 27 +- .../ContractVerifierConfigProperties.java | 0 .../verifier/config/TestFramework.java | 0 .../contract/verifier/config/TestMode.java | 0 .../config/framework/CustomDefinition.java | 0 .../config/framework/JUnit5Definition.java | 0 .../config/framework/JUnitDefinition.java | 0 .../config/framework/SpockDefinition.java | 0 .../framework/TestFrameworkDefinition.java | 0 .../config/framework/TestNGDefinition.java | 87 ++++++ .../verifier/converter/YamlContract.java | 0 .../dsl/wiremock/WireMockExtensions.java | 0 .../dsl/wiremock/WireMockStubMapping.java | 0 .../template/HandlebarsTemplateProcessor.java | 269 ++++++++++++++++++ .../verifier/template/TemplateProcessor.java} | 39 +-- .../contract/verifier/util/AssertionUtil.java | 0 .../contract/verifier/util/CloneUtils.java | 0 .../util/DelegatingJsonVerifiable.java | 0 .../FinishedDelegatingJsonVerifiable.java | 0 .../verifier/util/MethodBuffering.java | 0 .../util/MethodBufferingJsonVerifiable.java | 0 .../verifier/util/ShouldTraverse.java | 0 .../util/ToFileContractsTransformer.java | 112 ++++++++ .../contract/verifier/TestGeneratorTests.java | 7 +- .../assertion/CollectionAssertTests.java | 0 215 files changed, 1314 insertions(+), 1216 deletions(-) delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/FileSaver.groovy delete mode 100755 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/TestGenerator.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BlockBuilder.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.groovy delete mode 100644 spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/FileSaver.java create mode 100755 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/TestGenerator.java rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Acceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BaseClassProvider.java (100%) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BlockBuilder.java rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyAssertionLineCreator.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyMethodGeneration.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyMethodVisitor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyReader.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/BodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ClassAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ClassAnnotationsBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ClassBodyBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ClassMetaData.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ClassVerifier.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/CommunicationType.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ComparisonBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ContentHelper.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/CustomImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/CustomStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/DefaultBaseClassProvider.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/DefaultClassMetadata.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/DefaultImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/DefaultJsonStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/DefaultStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ExplicitAcceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ExplicitRequestGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ExplicitResponseWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Field.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/FieldBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GeneratedClassDataForMethod.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GeneratedClassMetaData.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GeneratedTestClass.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GeneratedTestClassBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GenericBinaryBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java (97%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GenericJsonBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GenericTextBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GenericXmlBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Given.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GroovyBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GroovyClassMetaData.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/GroovyComparisonBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Imports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/ImportsBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/InProgressContractMethodPreProcessor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4Imports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4MethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4OrderClassAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit4OrderImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5Imports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5MethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5OrderClassAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnit5OrderImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JUnitMethodMetadata.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaClassMetaData.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaJaxRsThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaJaxRsWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaMessagingBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaMessagingGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaMessagingWithBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JavaTestGenerator.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsAcceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsRequestCookiesWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsRequestHeadersWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsRequestInvokerWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsRequestMethodWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsRequestWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsResponseCookiesThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsResponseHeadersThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsStatusCodeThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsUrlPathWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JaxRsWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JsonBodyVerificationBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/JsonPathImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingBodyGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingBodyWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingFields.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingHeadersGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingHeadersThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingReceiveMessageThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingSpockNoMessageThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingTriggeredByWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MessagingWithBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MetaDataBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodAcceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodAnnotationBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodAnnotations.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodMetadata.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodMetadataBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodPostProcessor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodPreProcessor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MethodVisitor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcAcceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcCookiesGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcMultipartGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcQueryParamsWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcRequestGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcResponseWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredStaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/MockMvcUrlWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/NameProvider.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/OurCallable.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/QueryParamsResolver.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredCookiesThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredHeadersThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredStatusCodeThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredVerifier.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/RestAssuredWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SingleMethodBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SingleTestGenerator.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockIgnoreImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockJaxRsBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockJaxRsThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockJaxRsWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMessagingBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMessagingEmptyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMessagingGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMessagingWithBodyThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMethodMetadata.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMockMvcMultipartGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMockMvcRequestGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockMockMvcResponseWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockOrderClassAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockOrderImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredBodyParser.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredThen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/SuppressWarningsClassAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/TemplateUpdatingMethodPostProcessor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/TestNGImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/TestNGMethodAnnotation.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/TestSideRequestTemplateModel.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Then.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/Visitor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/WebTestClientAcceptor.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/WebTestClientRequestGiven.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/WebTestClientResponseWhen.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssured3StaticImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssuredImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/When.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/XmlBodyVerificationBuilder.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/XmlImports.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsEscapeHelper.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsJsonPathHelper.java (100%) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.java create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.java rename spring-cloud-contract-verifier/src/main/{groovy/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.groovy => java/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.java} (60%) rename spring-cloud-contract-verifier/src/main/{groovy/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.groovy => java/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.java} (56%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/TestFramework.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/TestMode.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/framework/CustomDefinition.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/framework/JUnit5Definition.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/framework/JUnitDefinition.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/framework/SpockDefinition.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/config/framework/TestFrameworkDefinition.java (100%) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.java rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/converter/YamlContract.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockExtensions.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMapping.java (100%) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.java rename spring-cloud-contract-verifier/src/main/{groovy/org/springframework/cloud/contract/verifier/template/TemplateProcessor.groovy => java/org/springframework/cloud/contract/verifier/template/TemplateProcessor.java} (51%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/AssertionUtil.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/CloneUtils.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/DelegatingJsonVerifiable.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/FinishedDelegatingJsonVerifiable.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/MethodBuffering.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/MethodBufferingJsonVerifiable.java (100%) rename spring-cloud-contract-verifier/src/main/{groovy => java}/org/springframework/cloud/contract/verifier/util/ShouldTraverse.java (100%) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.java rename spring-cloud-contract-verifier/src/test/{groovy => java}/org/springframework/cloud/contract/verifier/assertion/CollectionAssertTests.java (100%) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/FileSaver.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/FileSaver.groovy deleted file mode 100644 index 1c6609cba2..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/FileSaver.groovy +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier - -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths -import java.nio.file.StandardOpenOption - -import groovy.transform.CompileStatic -import groovy.transform.PackageScope -import groovy.util.logging.Commons - -import org.springframework.cloud.contract.verifier.builder.SingleTestGenerator - -import static org.springframework.cloud.contract.verifier.util.NamesUtil.beforeLast -import static org.springframework.cloud.contract.verifier.util.NamesUtil.capitalize -import static org.springframework.cloud.contract.verifier.util.NamesUtil.packageToDirectory - -@CompileStatic -@PackageScope -@Commons -class FileSaver { - - private final File targetDirectory - private final SingleTestGenerator generator - private final String fileExtension - - FileSaver(File targetDirectory, String fileExtension, SingleTestGenerator generator) { - this.targetDirectory = targetDirectory - this.generator = generator - this.fileExtension = fileExtension - } - - void saveClassFile(Path classPath, byte[] classBytes) { - log.info("Creating new class file [$classPath]") - Files. - write(classPath, classBytes, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING) - } - - protected Path pathToClass(Path testBaseDir, String fileName) { - return Paths.get(testBaseDir.toString(), - capitalize(fileName) + fileExtension).toAbsolutePath() - } - - protected Path generateTestBaseDir(String basePackageClass, String includedDirectoryRelativePath) { - Path testBaseDir = Paths. - get(targetDirectory.absolutePath, packageToDirectory(basePackageClass), - beforeLast(includedDirectoryRelativePath, File.separator)) - Files.createDirectories(testBaseDir) - return testBaseDir - } - -} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/TestGenerator.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/TestGenerator.groovy deleted file mode 100755 index 46eb71c7ad..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/TestGenerator.groovy +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier - -import java.nio.charset.StandardCharsets -import java.nio.file.Path -import java.util.concurrent.atomic.AtomicInteger - -import groovy.transform.CompileDynamic -import groovy.transform.CompileStatic -import groovy.transform.PackageScope -import org.apache.commons.logging.Log -import org.apache.commons.logging.LogFactory - -import org.springframework.cloud.contract.spec.ContractVerifierException -import org.springframework.cloud.contract.verifier.builder.JavaTestGenerator -import org.springframework.cloud.contract.verifier.builder.SingleTestGenerator -import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties -import org.springframework.cloud.contract.verifier.file.ContractFileScanner -import org.springframework.cloud.contract.verifier.file.ContractFileScannerBuilder -import org.springframework.cloud.contract.verifier.file.ContractMetadata -import org.springframework.cloud.contract.verifier.util.NamesUtil -import org.springframework.core.io.support.SpringFactoriesLoader -import org.springframework.util.MultiValueMap -import org.springframework.util.StringUtils - -import static org.springframework.cloud.contract.verifier.util.NamesUtil.afterLast -import static org.springframework.cloud.contract.verifier.util.NamesUtil.beforeLast -import static org.springframework.cloud.contract.verifier.util.NamesUtil.convertIllegalPackageChars -import static org.springframework.cloud.contract.verifier.util.NamesUtil.directoryToPackage -import static org.springframework.cloud.contract.verifier.util.NamesUtil.toLastDot -/** - * @author Jakub Kubrynski, codearte.io - */ -@CompileStatic -class TestGenerator { - - private static final String DEFAULT_CLASS_PREFIX = "ContractVerifier" - private static final String DEFAULT_TEST_PACKAGE = "org.springframework.cloud.contract.verifier.tests" - private static final Log log = LogFactory.getLog(TestGenerator) - - private final ContractVerifierConfigProperties configProperties - private AtomicInteger counter = new AtomicInteger() - private SingleTestGenerator generator - private FileSaver saver - private ContractFileScanner contractFileScanner - - TestGenerator(ContractVerifierConfigProperties configProperties) { - this(configProperties, singleTestGenerator(), - new FileSaver(configProperties.generatedTestSourcesDir, configProperties.testFramework.classExtension, - singleTestGenerator())) - } - - private static SingleTestGenerator singleTestGenerator() { - List factories = SpringFactoriesLoader. - loadFactories(SingleTestGenerator, null) - if (factories.empty) { - return new JavaTestGenerator() - } - return factories.first() - } - - TestGenerator(ContractVerifierConfigProperties configProperties, SingleTestGenerator generator, FileSaver saver) { - this.configProperties = configProperties - if (configProperties.contractsDslDir == null) { - throw new ContractVerifierException("Stubs directory not found under " + configProperties.contractsDslDir) - } - this.generator = generator - this.saver = saver - contractFileScanner = new ContractFileScannerBuilder() - .baseDir(configProperties.contractsDslDir) - .excluded(configProperties.excludedFiles as Set) - .ignored(configProperties.ignoredFiles as Set) - .included(configProperties.includedFiles as Set) - .includeMatcher(this.configProperties.includedContracts) - .build() - } - - protected TestGenerator(ContractVerifierConfigProperties configProperties, SingleTestGenerator generator, FileSaver saver, ContractFileScanner contractFileScanner) { - this.configProperties = configProperties - if (configProperties.contractsDslDir == null) { - throw new ContractVerifierException("Stubs directory not found under " + configProperties.contractsDslDir) - } - this.generator = generator - this.saver = saver - this.contractFileScanner = contractFileScanner - } - - int generate() { - generateTestClasses(basePackageName()) - NamesUtil.recrusiveDirectoryToPackage(configProperties.generatedTestSourcesDir) - NamesUtil.recrusiveDirectoryToPackage(configProperties.generatedTestResourcesDir) - return counter.get() - } - - private String basePackageName() { - if (configProperties.basePackageForTests) { - return configProperties.basePackageForTests - } - else if (configProperties.baseClassForTests) { - return toLastDot(configProperties.baseClassForTests) - } - else if (configProperties.packageWithBaseClasses) { - return configProperties.packageWithBaseClasses - } - return DEFAULT_TEST_PACKAGE - } - - @PackageScope - void generateTestClasses(final String basePackageName) { - MultiValueMap contracts = contractFileScanner. - findContractsRecursively() - if (log.isDebugEnabled()) { - log.debug("Found the following contracts " + contracts.keySet()) - } - Set>> inProgress = inProgress(contracts) - if (!inProgress.isEmpty() && configProperties.failOnInProgress) { - throw new IllegalStateException("In progress contracts found in paths [" + inProgress.collect { it.key.toString() }.join(",") + "] and the switch [failOnInProgress] is set to [true]. Either unmark those contracts as in progress, or set the switch to [false].") - } - processAllNotInProgress(contracts,basePackageName) - } - - @CompileDynamic - private Set>> inProgress(MultiValueMap contracts) { - return contracts.entrySet() - .findAll { Map.Entry> entry -> entry.getValue().any { it.anyInProgress() }} - } - - @PackageScope - @CompileDynamic - Set>> processAllNotInProgress(MultiValueMap contracts, String basePackageName) { - contracts.entrySet() - .findAll { Map.Entry> entry -> !entry.value.any { it.anyInProgress() }} - .each { - Map.Entry> entry -> - processIncludedDirectory( - relativizeContractPath(entry), (Collection) entry. - getValue(), basePackageName) - } - } - - private String relativizeContractPath(Map.Entry> entry) { - Path relativePath = configProperties.contractsDslDir.toPath(). - relativize(entry.getKey()) - if (StringUtils.isEmpty(relativePath.toString())) { - return DEFAULT_CLASS_PREFIX - } - return relativePath.toString() - } - - private void processIncludedDirectory( - final String includedDirectoryRelativePath, Collection contracts, final String basePackageNameForClass) { - if (log.isDebugEnabled()) { - log.debug("Collected contracts with metadata ${contracts} relative path is [${includedDirectoryRelativePath}]") - } - if (contracts.size()) { - def className = afterLast(includedDirectoryRelativePath.toString(), File.separator) + resolveNameSuffix() - def convertedClassName = convertIllegalPackageChars(className) - def packageName = - buildPackage(basePackageNameForClass, includedDirectoryRelativePath) - Path dir = saver.generateTestBaseDir(basePackageNameForClass, - convertIllegalPackageChars(includedDirectoryRelativePath.toString())) - Path classPath = saver.pathToClass(dir, convertedClassName) - def classBytes = generator. - buildClass(configProperties, contracts, includedDirectoryRelativePath, - new SingleTestGenerator.GeneratedClassData(convertedClassName, packageName, classPath)). - getBytes(StandardCharsets.UTF_8) - saver.saveClassFile(classPath, classBytes) - counter.incrementAndGet() - } - } - - private String resolveNameSuffix() { - return configProperties.nameSuffixForTests ?: configProperties.testFramework.classNameSuffix - } - - protected static String buildPackage(final String packageNameForClass, final String includedDirectoryRelativePath) { - String directory = beforeLast(includedDirectoryRelativePath, File.separator) - String convertedPackage = "$packageNameForClass.${directoryToPackage(convertIllegalPackageChars(directory))}" - return !directory.empty ? convertedPackage : packageNameForClass - } - -} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BlockBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BlockBuilder.groovy deleted file mode 100644 index 93f6d3110b..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BlockBuilder.groovy +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.builder - - -import groovy.transform.CompileStatic -import groovy.transform.PackageScope - -/** - * Builds a block of code. Allows to start, end, indent etc. pieces of code. - * - * @author Jakub Kubrynski, codearte.io - * - * @since 1.0.0 - */ -@CompileStatic -class BlockBuilder { - - private final StringBuilder builder - private final String spacer - private int indents - private String lineEnding = "" - private String labelPrefix = "" - - /** - * @param spacer - char used for spacing - */ - BlockBuilder(String spacer) { - this.spacer = spacer - builder = new StringBuilder() - } - - /** - * Setup line ending - */ - BlockBuilder setupLineEnding(String lineEnding) { - this.lineEnding = lineEnding - return this - } - - /** - * Setup label prefix - */ - BlockBuilder setupLabelPrefix(String labelPrefix) { - this.labelPrefix = labelPrefix - return this - } - - - String getLineEnding() { - return this.lineEnding - } - - /** - * Adds indents to start a new block - */ - BlockBuilder appendWithLabelPrefix(String label) { - return append(this.labelPrefix).append(label) - } - - /** - * Adds indents to start a new block - */ - BlockBuilder startBlock() { - indents++ - return this - } - - /** - * Ends block by removing indents - */ - BlockBuilder endBlock() { - indents-- - return this - } - - /** - * Creates a block and adds indents - */ - BlockBuilder indent() { - startBlock().startBlock() - return this - } - - /** - * Removes indents and closes the block - */ - BlockBuilder unindent() { - endBlock().endBlock() - return this - } - - BlockBuilder addLine(String line) { - return addIndented(line).append("\n") - } - - BlockBuilder addIndented(String line) { - return addIndentation().append(line) - } - - BlockBuilder addIndented(Runnable runnable) { - addIndentation() - runnable.run() - return this - } - - BlockBuilder addLineWithEnding(String line) { - addIndentation() - append(line).addEndingIfNotPresent().addEmptyLine() - return this - } - - BlockBuilder addEndingIfNotPresent() { - addAtTheEnd(lineEnding) - return this - } - - BlockBuilder addEmptyLine() { - builder << '\n' - return this - } - - BlockBuilder appendWithSpace(String text) { - return addAtTheEnd(" ").append(text) - } - - BlockBuilder appendWithSpace(Runnable runnable) { - addAtTheEnd(" ") - runnable.run() - return this - } - - // synactic sugar - BlockBuilder append(Runnable runnable) { - runnable.run() - return this - } - - BlockBuilder append(String string) { - builder << string - return this - } - - BlockBuilder addIndentation() { - indents.times { - builder << spacer - } - return this - } - - @PackageScope - BlockBuilder inBraces(Runnable runnable) { - builder.append("{\n") - startBlock() - runnable.run() - endBlock() - addAtTheEnd('\n') - addLine("}") - return this - } - - boolean endsWith(String text) { - return builder.toString().endsWith(text) - } - - BlockBuilder addAtTheEndIfEndsWithAChar(String toAdd) { - char lastChar = builder.charAt(builder.length() - 1) - if (Character.isLetter(lastChar)) { - builder.append(toAdd) - } - return this - } - - /** - * Adds the given text at the end of the line - * - * @return updated BlockBuilder - */ - BlockBuilder addAtTheEnd(String toAdd) { - String lastChar = builder.charAt(builder.length() - 1) as String - String secondLastChar = builder.length() >= 2 ? builder. - charAt(builder.length() - 2) as String : "" - boolean isEndWithNewLine = endsWithNewLine(lastChar) - boolean lastCharSpecial = aSpecialSign(lastChar, toAdd) - boolean secondLastCharSpecial = aSpecialSign(secondLastChar, toAdd) - boolean lineEndingToAdd = toAdd == lineEnding - // lastChar = [;] , toAdd = [;] - if (lastChar == toAdd) { - return this - } - // secondLastChar = [ ], lastChar = [{] , toAdd = [;] - else if ((!isEndWithNewLine && lastCharSpecial) && lineEndingToAdd) { - return this - } - // secondLastChar = [{], lastChar = [\n] , toAdd = [;] - else if (isEndWithNewLine && secondLastCharSpecial) { - return this - } - else if (isEndWithNewLine && !secondLastCharSpecial) { - builder.replace(builder.length() - 1, builder.length(), toAdd) - builder << '\n' - } - else { - builder << toAdd - } - return this - } - - private boolean endsWithNewLine(String character) { - return character as String == '\n' - } - - private boolean aSpecialSign(String character, String toAdd) { - if (!character) { - return false - } - return character == "{" || - (character == spacer && toAdd == spacer) || - (character == spacer && toAdd == " ") || - character == toAdd || - (endsWithNewLine(character) && - (toAdd == '\n' || toAdd == " " || toAdd == lineEnding)) - } - - /** - * Updates the current text with the provided one - * - * @param contents - text to replace the current content with - * @return updated Block Builder - */ - BlockBuilder updateContents(String contents) { - this.builder.replace(0, this.builder.length(), contents) - return this - } - - @Override - String toString() { - return builder.toString() - } -} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.groovy deleted file mode 100644 index ede9320fe4..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.groovy +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.builder.imports - -import groovy.transform.CompileStatic - -import org.springframework.cloud.contract.verifier.config.TestFramework - -import static org.springframework.cloud.contract.verifier.config.TestFramework.CUSTOM -import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT -import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT5 -import static org.springframework.cloud.contract.verifier.config.TestFramework.SPOCK -import static org.springframework.cloud.contract.verifier.config.TestFramework.TESTNG - -/** - * Provides imports based on test framework. - * - * @author Olga Maciaszek-Sharma - * - * @since 2.1.0 - * @deprecated - */ -@CompileStatic -@Deprecated -class BaseImportProvider { - - private static final ImportDefinitions GENERAL_IMPORTS = new ImportDefinitions([], [ - 'org.springframework.cloud.contract.verifier.assertion.SpringCloudContractAssertions.assertThat', - 'org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.*' - ]) - - private static - final Map TEST_FRAMEWORK_SPECIFIC_IMPORTS = [ - (JUNIT) : new ImportDefinitions(['org.junit.Test']), - (JUNIT5): new ImportDefinitions(['org.junit.jupiter.api.Test']), - (SPOCK) : new ImportDefinitions([]), - (TESTNG): new ImportDefinitions(['org.testng.annotations.Test']), - (CUSTOM): new ImportDefinitions([])] - - private static final Map RULE_IMPORT = [ - (JUNIT) : 'org.junit.Rule', - (JUNIT5): 'org.junit.jupiter.api.extension.ExtendWith', - (SPOCK) : 'org.junit.Rule', - (TESTNG): 'org.junit.Rule', - (CUSTOM): 'org.junit.Rule' - ] - - /** - * Returns list of imports for provided test framework. - * @param testFramework - * @return list of imports - */ - static List getImports(TestFramework testFramework) { - return GENERAL_IMPORTS.imports + - TEST_FRAMEWORK_SPECIFIC_IMPORTS.get(testFramework).imports - } - - /** - * @param testFramework test framework to pick the static imports for - * @return list of static imports for provided test framework. - */ - static List getStaticImports(TestFramework testFramework) { - return GENERAL_IMPORTS.staticImports + - TEST_FRAMEWORK_SPECIFIC_IMPORTS.get(testFramework).staticImports - } - - static String getRuleImport(TestFramework testFramework) { - return RULE_IMPORT.get(testFramework) - } -} - diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.groovy deleted file mode 100644 index d8c88003b3..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.groovy +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.builder.imports - -import org.springframework.cloud.contract.verifier.config.TestFramework -import org.springframework.cloud.contract.verifier.config.TestMode - -import static org.springframework.cloud.contract.verifier.config.TestFramework.CUSTOM -import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT -import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT5 -import static org.springframework.cloud.contract.verifier.config.TestFramework.SPOCK -import static org.springframework.cloud.contract.verifier.config.TestFramework.TESTNG -import static org.springframework.cloud.contract.verifier.config.TestMode.EXPLICIT -import static org.springframework.cloud.contract.verifier.config.TestMode.JAXRSCLIENT -import static org.springframework.cloud.contract.verifier.config.TestMode.MOCKMVC -import static org.springframework.cloud.contract.verifier.config.TestMode.WEBTESTCLIENT - -/** - * Provides imports based on test framework and test mode. - * - * @author Olga Maciaszek-Sharma - * - * @since 2.1.0 - */ -@Deprecated -class HttpImportProvider { - - private final Map TEST_MODE_SPECIFIC_IMPORTS = [ - (JAXRSCLIENT) : new ImportDefinitions([], ['javax.ws.rs.client.Entity.*']), - (MOCKMVC) : new ImportDefinitions([], ["${restAssuredPackage}.module.mockmvc.RestAssuredMockMvc.*"]), - (EXPLICIT) : new ImportDefinitions([], ["${restAssuredPackage}.RestAssured.*"]), - (WEBTESTCLIENT): new ImportDefinitions([], ['io.restassured.module.webtestclient.RestAssuredWebTestClient.*'])] - - private final Map, ImportDefinitions> FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS = [ - (new Tuple2(JUNIT, JAXRSCLIENT)) : new ImportDefinitions(['javax.ws.rs.core.Response']), - (new Tuple2(JUNIT5, JAXRSCLIENT)) : new ImportDefinitions(['javax.ws.rs.core.Response']), - (new Tuple2(TESTNG, JAXRSCLIENT)) : new ImportDefinitions(['javax.ws.rs.core.Response']), - (new Tuple2(JUNIT, MOCKMVC)) : new ImportDefinitions([ - "${restAssuredPackage}.module.mockmvc.specification.MockMvcRequestSpecification", - "${restAssuredPackage}.response.ResponseOptions"]), - (new Tuple2(JUNIT, WEBTESTCLIENT)) : new ImportDefinitions([ - 'io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification', - 'io.restassured.module.webtestclient.response.WebTestClientResponse']), - (new Tuple2(JUNIT5, MOCKMVC)) : new ImportDefinitions([ - "${restAssuredPackage}.module.mockmvc.specification.MockMvcRequestSpecification", - "${restAssuredPackage}.response.ResponseOptions"]), - (new Tuple2(JUNIT5, WEBTESTCLIENT)): new ImportDefinitions([ - 'io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification', - 'io.restassured.module.webtestclient.response.WebTestClientResponse']), - (new Tuple2(TESTNG, MOCKMVC)) : new ImportDefinitions([ - "${restAssuredPackage}.module.mockmvc.specification.MockMvcRequestSpecification", - "${restAssuredPackage}.response.ResponseOptions"]), - (new Tuple2(TESTNG, WEBTESTCLIENT)): new ImportDefinitions([ - 'io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification', - 'io.restassured.module.webtestclient.response.WebTestClientResponse']), - (new Tuple2(JUNIT, EXPLICIT)) : new ImportDefinitions(["${restAssuredPackage}.specification.RequestSpecification", - "${restAssuredPackage}.response.Response"]), - (new Tuple2(JUNIT5, EXPLICIT)) : new ImportDefinitions(["${restAssuredPackage}.specification.RequestSpecification", - "${restAssuredPackage}.response.Response"]), - (new Tuple2(TESTNG, EXPLICIT)) : new ImportDefinitions(["${restAssuredPackage}.specification.RequestSpecification", - "${restAssuredPackage}.response.Response"]), - (new Tuple2(SPOCK, JAXRSCLIENT)) : new ImportDefinitions([]), - (new Tuple2(CUSTOM, JAXRSCLIENT)) : new ImportDefinitions([]), - (new Tuple2(SPOCK, MOCKMVC)) : new ImportDefinitions([]), - (new Tuple2(CUSTOM, MOCKMVC)) : new ImportDefinitions([]), - (new Tuple2(SPOCK, EXPLICIT)) : new ImportDefinitions([]), - (new Tuple2(CUSTOM, EXPLICIT)) : new ImportDefinitions([]), - (new Tuple2(SPOCK, WEBTESTCLIENT)) : new ImportDefinitions([]), - (new Tuple2(CUSTOM, WEBTESTCLIENT)): new ImportDefinitions([]) - ] - - private final String restAssuredPackage - - HttpImportProvider(String restAssuredPackage) { - this.restAssuredPackage = restAssuredPackage - } - - /** - * Returns list of imports for http test contracts for provided test framework and test mode. - * @param testFramework - * @param testMode - * @return list of imports - */ - List getImports(TestFramework testFramework, TestMode testMode) { - return TEST_MODE_SPECIFIC_IMPORTS.get(testMode).imports + - FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.get(new Tuple2(testFramework, testMode)).imports - } - - /** - * Returns list of static imports for http test contracts for provided test framework and test mode. - * @param testFramework - * @param testMode - * @return list of static imports - */ - List getStaticImports(TestFramework testFramework, TestMode testMode) { - return TEST_MODE_SPECIFIC_IMPORTS.get(testMode).staticImports + - FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.get(new Tuple2(testFramework, testMode)).staticImports - } -} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.groovy deleted file mode 100644 index d149538066..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.groovy +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.config.framework - -import groovy.transform.CompileStatic - -/** - * Defines elements characteristic of TestNG test framework to be used during test class construction. - * - * @author André Hoffmann - * - * @since 2.2.0 - */ -@CompileStatic -class TestNGDefinition implements TestFrameworkDefinition { - - @Override - String getClassModifier() { - return 'public ' - } - - @Override - String getMethodModifier() { - return 'public void ' - } - - @Override - String getLineSuffix() { - return ';' - } - - @Override - String getClassExtension() { - '.java' - } - - @Override - String getClassNameSuffix() { - return 'Test' - } - - @Override - String getIgnoreClass() { - throw new UnsupportedOperationException('There is no @Ignore annotation for TestNG. A test can be disabled directly in the @Test annotation') - } - - @Override - List getOrderAnnotationImports() { - throw new UnsupportedOperationException('Not implemented yet in TestNG') - } - - @Override - String getOrderAnnotation() { - throw new UnsupportedOperationException('Not implemented yet in TestNG') - } - - @Override - String getIgnoreAnnotation() { - throw new UnsupportedOperationException('There is no @Ignore annotation for TestNG. A test can be disabled directly in the @Test annotation') - } - - @Override - boolean annotationLevelRules() { - return false - } - - @Override - String getRuleAnnotation(String annotationValue) { - throw new UnsupportedOperationException('Not available in TestNG.') - } -} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.groovy deleted file mode 100644 index ebc56baf05..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.groovy +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.template - -import java.util.regex.Matcher -import java.util.regex.Pattern - -import com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers -import groovy.transform.CompileStatic -import wiremock.com.github.jknack.handlebars.Handlebars -import wiremock.com.github.jknack.handlebars.Template - -import org.springframework.cloud.contract.spec.ContractTemplate -import org.springframework.cloud.contract.spec.internal.CompositeContractTemplate -import org.springframework.cloud.contract.spec.internal.Request -import org.springframework.cloud.contract.verifier.builder.TestSideRequestTemplateModel -import org.springframework.cloud.contract.verifier.builder.handlebars.HandlebarsJsonPathHelper - -/** - * Default Handlebars template processor - * - * @author Marcin Grzejszczak - * @since 1.1.0 - */ -@CompileStatic -class HandlebarsTemplateProcessor implements TemplateProcessor, ContractTemplate { - - private static final Pattern ESCAPED_LEGACY_JSON_PATH_PATTERN = Pattern. - compile("^.*\\{\\{\\{jsonpath this '(.*)'}}}.*\$") - private static final Pattern ESCAPED_JSON_PATH_PATTERN = Pattern. - compile("^.*\\{\\{\\{jsonPath request.body '(.*)'}}}.*\$") - private static final Pattern LEGACY_JSON_PATH_PATTERN = Pattern. - compile("^.*\\{\\{jsonpath this '(.*)'}}.*\$") - private static final Pattern JSON_PATH_PATTERN = Pattern. - compile("^.*\\{\\{jsonPath request.body '(.*)'}}.*\$") - private static final List PATTERNS = [ESCAPED_LEGACY_JSON_PATH_PATTERN, - ESCAPED_JSON_PATH_PATTERN, LEGACY_JSON_PATH_PATTERN, JSON_PATH_PATTERN] - private static final String LEGACY_JSON_PATH_TEMPLATE_NAME = HandlebarsJsonPathHelper.NAME - private static final String JSON_PATH_TEMPLATE_NAME = WireMockHelpers.jsonPath.name() - - final ContractTemplate contractTemplate = new CompositeContractTemplate() - - @Override - String transform(Request request, String testContents) { - TestSideRequestTemplateModel templateModel = TestSideRequestTemplateModel. - from(request) - Map model = [(HandlebarsJsonPathHelper.REQUEST_MODEL_NAME): templateModel] - Template bodyTemplate = uncheckedCompileTemplate(testContents) - return templatedResponseBody(model, bodyTemplate) - } - - @Override - boolean containsTemplateEntry(String line) { - return (line.contains(contractTemplate.openingTemplate()) - && line.contains(contractTemplate.closingTemplate())) || - (line.contains(contractTemplate.escapedOpeningTemplate()) && - line.contains(contractTemplate.escapedClosingTemplate())) - } - - @Override - boolean containsJsonPathTemplateEntry(String line) { - return line.contains(openingTemplate() + LEGACY_JSON_PATH_TEMPLATE_NAME) || - line.contains(openingTemplate() + JSON_PATH_TEMPLATE_NAME) || - line.contains(escapedOpeningTemplate() + LEGACY_JSON_PATH_TEMPLATE_NAME) || - line.contains(escapedOpeningTemplate() + JSON_PATH_TEMPLATE_NAME) - } - - @Override - String jsonPathFromTemplateEntry(String line) { - if (!containsJsonPathTemplateEntry(line)) { - return "" - } - for (Pattern pattern : PATTERNS) { - Matcher matcher = pattern.matcher(line) - if (matcher.matches()) { - return matcher.group(1) - } - } - return "" - } - - private String templatedResponseBody(Map model, Template bodyTemplate) { - return uncheckedApplyTemplate(bodyTemplate, model) - } - - private String uncheckedApplyTemplate(Template template, Object context) { - try { - return template.apply(context) - } - catch (IOException e) { - throw new RuntimeException(e) - } - } - - private Template uncheckedCompileTemplate(String content) { - try { - Handlebars handlebars = new Handlebars() - handlebars. - registerHelper(HandlebarsJsonPathHelper.NAME, new HandlebarsJsonPathHelper()) - handlebars.registerHelper(WireMockHelpers.jsonPath. - name(), new HandlebarsJsonPathHelper()) - WireMockHelpers.values() - .findAll { it != WireMockHelpers.jsonPath } - .each { WireMockHelpers helper -> - handlebars.registerHelper(helper.name(), helper) - } - return handlebars.compileInline(content) - } - catch (IOException e) { - throw new RuntimeException(e) - } - } - - @Override - boolean startsWithTemplate(String text) { - return this.contractTemplate.startsWithTemplate(text) - } - - @Override - boolean startsWithEscapedTemplate(String text) { - return this.contractTemplate.startsWithEscapedTemplate(text) - } - - @Override - String openingTemplate() { - return this.contractTemplate.openingTemplate() - } - - @Override - String closingTemplate() { - return this.contractTemplate.closingTemplate() - } - - @Override - String escapedOpeningTemplate() { - return this.contractTemplate.escapedOpeningTemplate() - } - - @Override - String escapedClosingTemplate() { - return this.contractTemplate.escapedClosingTemplate() - } - - @Override - String url() { - return this.contractTemplate.url() - } - - @Override - String query(String key) { - return this.contractTemplate.query(key) - } - - @Override - String query(String key, int index) { - return this.contractTemplate.query(key, index) - } - - @Override - String path() { - return this.contractTemplate.path() - } - - @Override - String path(int index) { - return this.contractTemplate.path(index) - } - - @Override - String header(String key) { - return this.contractTemplate.header(key) - } - - @Override - String header(String key, int index) { - return this.contractTemplate.header(key, index) - } - - @Override - String cookie(String key) { - return this.contractTemplate.cookie(key) - } - - @Override - String body() { - return this.contractTemplate.body() - } - - @Override - String body(String jsonPath) { - return this.contractTemplate.body(jsonPath) - } - - @Override - String escapedUrl() { - return this.contractTemplate.escapedUrl() - } - - @Override - String escapedQuery(String key) { - return this.contractTemplate.escapedQuery(key) - } - - @Override - String escapedQuery(String key, int index) { - return this.contractTemplate.escapedQuery(key, index) - } - - @Override - String escapedPath() { - return this.contractTemplate.escapedPath() - } - - @Override - String escapedPath(int index) { - return this.contractTemplate.escapedPath(index) - } - - @Override - String escapedHeader(String key) { - return this.contractTemplate.escapedHeader(key) - } - - @Override - String escapedHeader(String key, int index) { - return this.contractTemplate.escapedHeader(key, index) - } - - @Override - String escapedCookie(String key) { - return this.contractTemplate.escapedCookie(key) - } - - @Override - String escapedBody() { - return this.contractTemplate.escapedBody() - } - - @Override - String escapedBody(String jsonPath) { - return this.contractTemplate.escapedBody(jsonPath) - } -} - diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy deleted file mode 100644 index c7c9e33740..0000000000 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2013-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.contract.verifier.util - -import java.nio.file.Files - -import groovy.transform.CompileStatic -import org.apache.commons.logging.Log -import org.apache.commons.logging.LogFactory - -import org.springframework.cloud.contract.spec.Contract -import org.springframework.cloud.contract.spec.ContractConverter - -/** - * Allows conversion of Contract files to files. - * - * WARNING: This class is incubating and experimental. It might change in the future. - * - * @author Marcin Grzejszczak - * @since 2.1.0 - */ -@CompileStatic -final class ToFileContractsTransformer { - private static final Log log = LogFactory.getLog(ToFileContractsTransformer.class) - - /** - * Dumps contracts as files for the given {@link ContractConverter} - * - * - argument 1 : FQN - fully qualified name of the {@link ContractConverter} [REQUIRED] - * - argument 2 : path - path where the dumped files should be stored [OPTIONAL - defaults to target/converted-contracts] - * - argument 3 : path - path were the contracts should be searched for [OPTIONAL - defaults to src/test/resources/contracts] - */ - static void main(String[] args) { - if (args.length == 0) { - throw new IllegalStateException(exceptionMessage()) - } - log.warn("You're using an incubating feature. Note, that it can be changed / removed in the future") - String fqn = args[0] - String outputPath = args.length >= 2 ? args[1] : "target/converted-contracts" - String path = args.length >= 3 ? args[2] : "src/test/resources/contracts" - new ToFileContractsTransformer().storeContractsAsFiles(path, fqn, outputPath) - } - - private static String exceptionMessage() { - return "Please provide the FQN of the ContractConverter. E.g. [org.springframework.cloud.contract.verifier.converter.YamlContractConverter]" - } - - /** - * - * @param path - path were the contracts should be searched for - * @param fqn - fully qualified name of the {@link ContractConverter} - * @param outputPath - path where the dumped files should be stored - * @return list of dumped files - */ - final List storeContractsAsFiles(String path, String fqn, String outputPath) { - try { - log.info("Input path [" + path + "]") - log.info("FQN of the converter [" + fqn + "]") - log.info("Output path [" + outputPath + "]") - Collection contracts = ContractScanner. - collectContractDescriptors(new File(path)) - log.info("Found [" + contracts.size() + "] contract definition") - Class name = Class.forName(fqn) - ContractConverter contractConverter = (ContractConverter) name. - newInstance() - Collection converted = contractConverter.convertTo(contracts) - log.info("Successfully converted contracts definitions") - Map stored = contractConverter.store(converted) - File outputFolder = new File(outputPath) - outputFolder.mkdirs() - int i = 1 - Set> entries = stored.entrySet() - log.info("Will convert [" + entries.size() + "] contracts") - List files = new ArrayList<>() - for (Map.Entry entry : entries) { - File outputFile = new File(outputFolder, entry.getKey()) - Files.write(outputFile.toPath(), entry.getValue()) - log.info("[" + i + "/" - + entries. - size() - + "] Successfully stored [" - + outputFile.getName() - + "]") - files.add(outputFile) - } - return files - } - catch (Exception ex) { - throw new IllegalStateException(ex) - } - } -} - diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/FileSaver.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/FileSaver.java new file mode 100644 index 0000000000..d8e63ba866 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/FileSaver.java @@ -0,0 +1,75 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static java.nio.file.StandardOpenOption.CREATE; +import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.beforeLast; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.capitalize; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.packageToDirectory; + +class FileSaver { + + private static final Logger log = LoggerFactory.getLogger(FileSaver.class); + + private final File targetDirectory; + private final String fileExtension; + + FileSaver(File targetDirectory, String fileExtension) { + this.targetDirectory = targetDirectory; + this.fileExtension = fileExtension; + } + + public void saveClassFile(Path classPath, byte[] classBytes) { + log.info("Creating new class file [{}]", classPath); + try { + Files.write(classPath, classBytes, CREATE, TRUNCATE_EXISTING); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + protected Path pathToClass(Path testBaseDir, String fileName) { + return Paths.get(testBaseDir.toString(), capitalize(fileName) + fileExtension) + .toAbsolutePath(); + } + + protected Path generateTestBaseDir(String basePackageClass, + String includedDirectoryRelativePath) { + Path testBaseDir = Paths.get(targetDirectory.getAbsolutePath(), + packageToDirectory(basePackageClass), + beforeLast(includedDirectoryRelativePath, File.separator)); + try { + Files.createDirectories(testBaseDir); + } + catch (IOException e) { + throw new RuntimeException(e); + } + return testBaseDir; + } + +} diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/TestGenerator.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/TestGenerator.java new file mode 100755 index 0000000000..f70deed8df --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/TestGenerator.java @@ -0,0 +1,208 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.cloud.contract.spec.ContractVerifierException; +import org.springframework.cloud.contract.verifier.builder.JavaTestGenerator; +import org.springframework.cloud.contract.verifier.builder.SingleTestGenerator; +import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties; +import org.springframework.cloud.contract.verifier.file.ContractFileScanner; +import org.springframework.cloud.contract.verifier.file.ContractFileScannerBuilder; +import org.springframework.cloud.contract.verifier.file.ContractMetadata; +import org.springframework.core.io.support.SpringFactoriesLoader; +import org.springframework.util.MultiValueMap; + +import static org.springframework.cloud.contract.verifier.util.NamesUtil.afterLast; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.beforeLast; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.convertIllegalPackageChars; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.directoryToPackage; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.recrusiveDirectoryToPackage; +import static org.springframework.cloud.contract.verifier.util.NamesUtil.toLastDot; + +/** + * @author Jakub Kubrynski, codearte.io + */ +public class TestGenerator { + + private static final Logger log = LoggerFactory.getLogger(TestGenerator.class); + private static final String DEFAULT_CLASS_PREFIX = "ContractVerifier"; + private static final String DEFAULT_TEST_PACKAGE = "org.springframework.cloud.contract.verifier.tests"; + + private final ContractVerifierConfigProperties configProperties; + private final AtomicInteger counter = new AtomicInteger(); + private final SingleTestGenerator generator; + private final FileSaver saver; + private final ContractFileScanner contractFileScanner; + + public TestGenerator(ContractVerifierConfigProperties configProperties) { + this(configProperties, singleTestGenerator(), + new FileSaver(configProperties.getGeneratedTestSourcesDir(), + configProperties.getTestFramework().getClassExtension())); + } + + private static SingleTestGenerator singleTestGenerator() { + List factories = SpringFactoriesLoader + .loadFactories(SingleTestGenerator.class, null); + if (factories.isEmpty()) { + return new JavaTestGenerator(); + } + return factories.get(0); + } + + public TestGenerator(ContractVerifierConfigProperties configProperties, + SingleTestGenerator generator, FileSaver saver) { + this(configProperties, generator, saver, + new ContractFileScannerBuilder() + .baseDir(configProperties.getContractsDslDir()) + .excluded(toSet(configProperties.getExcludedFiles())) + .ignored(toSet(configProperties.getIgnoredFiles())) + .included(toSet(configProperties.getIncludedFiles())) + .includeMatcher(configProperties.getIncludedContracts()).build()); + } + + private static Set toSet(List files) { + return Optional.ofNullable(files).map(HashSet::new).orElseGet(HashSet::new); + } + + protected TestGenerator(ContractVerifierConfigProperties configProperties, + SingleTestGenerator generator, FileSaver saver, + ContractFileScanner contractFileScanner) { + this.configProperties = configProperties; + if (configProperties.getContractsDslDir() == null) { + throw new ContractVerifierException("Stubs directory not found under " + + configProperties.getContractsDslDir()); + } + + this.generator = generator; + this.saver = saver; + this.contractFileScanner = contractFileScanner; + } + + public int generate() { + generateTestClasses(basePackageName()); + recrusiveDirectoryToPackage(configProperties.getGeneratedTestSourcesDir()); + recrusiveDirectoryToPackage(configProperties.getGeneratedTestResourcesDir()); + return counter.get(); + } + + private String basePackageName() { + if (StringUtils.isNotEmpty(configProperties.getBasePackageForTests())) { + return configProperties.getBasePackageForTests(); + } + else if (StringUtils.isNotEmpty(configProperties.getBaseClassForTests())) { + return toLastDot(configProperties.getBaseClassForTests()); + } + else if (StringUtils.isNotEmpty(configProperties.getPackageWithBaseClasses())) { + return configProperties.getPackageWithBaseClasses(); + } + return DEFAULT_TEST_PACKAGE; + } + + void generateTestClasses(final String basePackageName) { + MultiValueMap contracts = contractFileScanner + .findContractsRecursively(); + log.debug("Found the following contracts {}", contracts.keySet()); + + Set>> inProgress = inProgress(contracts); + if (!inProgress.isEmpty() && configProperties.isFailOnInProgress()) { + String inProgressContractsPaths = inProgress.stream().map(Map.Entry::getKey) + .map(Path::toString).collect(Collectors.joining(",")); + throw new IllegalStateException("In progress contracts found in paths [" + + inProgressContractsPaths + + "] and the switch [failOnInProgress] is set to [true]. Either unmark those contracts as in progress, or set the switch to [false]."); + } + processAllNotInProgress(contracts, basePackageName); + } + + private Set>> inProgress( + MultiValueMap contracts) { + return contracts.entrySet().stream() + .filter(entry -> entry.getValue().stream() + .anyMatch(ContractMetadata::anyInProgress)) + .collect(Collectors.toSet()); + } + + void processAllNotInProgress(MultiValueMap contracts, + final String basePackageName) { + contracts.entrySet().stream() + .filter(entry -> entry.getValue().stream() + .noneMatch(ContractMetadata::anyInProgress)) + .forEach(entry -> processIncludedDirectory(relativizeContractPath(entry), + entry.getValue(), basePackageName)); + } + + private String relativizeContractPath(Map.Entry> entry) { + Path relativePath = configProperties.getContractsDslDir().toPath() + .relativize(entry.getKey()); + return StringUtils.defaultIfEmpty(relativePath.toString(), DEFAULT_CLASS_PREFIX); + } + + private void processIncludedDirectory(final String includedDirectoryRelativePath, + final Collection contracts, + final String basePackageNameForClass) { + log.debug("Collected contracts with metadata {} relative path is [{}]", contracts, + includedDirectoryRelativePath); + if (!contracts.isEmpty()) { + String className = afterLast(includedDirectoryRelativePath, File.separator) + + resolveNameSuffix(); + String convertedClassName = convertIllegalPackageChars(className); + String packageName = buildPackage(basePackageNameForClass, + includedDirectoryRelativePath); + Path dir = saver.generateTestBaseDir(basePackageNameForClass, + convertIllegalPackageChars(includedDirectoryRelativePath)); + Path classPath = saver.pathToClass(dir, convertedClassName); + byte[] classBytes = generator + .buildClass(configProperties, contracts, + includedDirectoryRelativePath, + new SingleTestGenerator.GeneratedClassData(convertedClassName, + packageName, classPath)) + .getBytes(StandardCharsets.UTF_8); + saver.saveClassFile(classPath, classBytes); + counter.incrementAndGet(); + } + } + + private String resolveNameSuffix() { + return StringUtils.defaultIfEmpty(configProperties.getNameSuffixForTests(), + configProperties.getTestFramework().getClassNameSuffix()); + } + + protected static String buildPackage(final String packageNameForClass, + final String includedDirectoryRelativePath) { + String directory = beforeLast(includedDirectoryRelativePath, File.separator); + String convertedPackage = packageNameForClass + "." + + directoryToPackage(convertIllegalPackageChars(directory)); + return !directory.isEmpty() ? convertedPackage : packageNameForClass; + } + +} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Acceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Acceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Acceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Acceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BaseClassProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BaseClassProvider.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BaseClassProvider.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BaseClassProvider.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BlockBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BlockBuilder.java new file mode 100644 index 0000000000..fc4286a212 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BlockBuilder.java @@ -0,0 +1,248 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.builder; + +import org.apache.commons.lang3.StringUtils; + +/** + * Builds a block of code. Allows to start, end, indent etc. pieces of code. + * + * @author Jakub Kubrynski, codearte.io + * @since 1.0.0 + */ +public class BlockBuilder { + + private final StringBuilder builder; + + private final String spacer; + + private int indents; + + private String lineEnding = ""; + + private String labelPrefix = ""; + + /** + * @param spacer - char used for spacing + */ + public BlockBuilder(String spacer) { + this.spacer = spacer; + builder = new StringBuilder(); + } + + /** + * Setup line ending + */ + public BlockBuilder setupLineEnding(String lineEnding) { + this.lineEnding = lineEnding; + return this; + } + + /** + * Setup label prefix + */ + public BlockBuilder setupLabelPrefix(String labelPrefix) { + this.labelPrefix = labelPrefix; + return this; + } + + public String getLineEnding() { + return this.lineEnding; + } + + /** + * Adds indents to start a new block + */ + public BlockBuilder appendWithLabelPrefix(String label) { + return append(this.labelPrefix).append(label); + } + + /** + * Adds indents to start a new block + */ + public BlockBuilder startBlock() { + indents++; + return this; + } + + /** + * Ends block by removing indents + */ + public BlockBuilder endBlock() { + indents--; + return this; + } + + /** + * Creates a block and adds indents + */ + public BlockBuilder indent() { + startBlock().startBlock(); + return this; + } + + /** + * Removes indents and closes the block + */ + public BlockBuilder unindent() { + endBlock().endBlock(); + return this; + } + + public BlockBuilder addLine(String line) { + return addIndented(line).append("\n"); + } + + public BlockBuilder addIndented(String line) { + return addIndentation().append(line); + } + + public BlockBuilder addIndented(Runnable runnable) { + addIndentation(); + runnable.run(); + return this; + } + + public BlockBuilder addLineWithEnding(String line) { + addIndentation(); + append(line).addEndingIfNotPresent().addEmptyLine(); + return this; + } + + public BlockBuilder addEndingIfNotPresent() { + addAtTheEnd(lineEnding); + return this; + } + + public BlockBuilder addEmptyLine() { + builder.append("\n"); + return this; + } + + public BlockBuilder appendWithSpace(String text) { + return addAtTheEnd(" ").append(text); + } + + public BlockBuilder appendWithSpace(Runnable runnable) { + addAtTheEnd(" "); + runnable.run(); + return this; + } + + public BlockBuilder append(Runnable runnable) { + runnable.run(); + return this; + } + + public BlockBuilder append(String string) { + builder.append(string); + return this; + } + + public BlockBuilder addIndentation() { + for (int i = 0; i < indents; i++) { + builder.append(spacer); + } + return this; + } + + BlockBuilder inBraces(Runnable runnable) { + builder.append("{\n"); + startBlock(); + runnable.run(); + endBlock(); + addAtTheEnd("\n"); + addLine("}"); + return this; + } + + public boolean endsWith(String text) { + return builder.toString().endsWith(text); + } + + public BlockBuilder addAtTheEndIfEndsWithAChar(String toAdd) { + char lastChar = builder.charAt(builder.length() - 1); + if (Character.isLetter(lastChar)) { + builder.append(toAdd); + } + return this; + } + + /** + * Adds the given text at the end of the line + * @return updated BlockBuilder + */ + public BlockBuilder addAtTheEnd(String toAdd) { + String lastChar = String.valueOf(builder.charAt(builder.length() - 1)); + String secondLastChar = builder.length() >= 2 + ? String.valueOf(builder.charAt(builder.length() - 2)) : ""; + boolean isEndWithNewLine = endsWithNewLine(lastChar); + boolean lastCharSpecial = aSpecialSign(lastChar, toAdd); + boolean secondLastCharSpecial = aSpecialSign(secondLastChar, toAdd); + boolean lineEndingToAdd = toAdd.equals(lineEnding); + // lastChar = [;] , toAdd = [;] + if (lastChar.equals(toAdd)) { + return this; + } + // secondLastChar = [ ], lastChar = [{] , toAdd = [;] + else if ((!isEndWithNewLine && lastCharSpecial) && lineEndingToAdd) { + return this; + } + // secondLastChar = [{], lastChar = [\n] , toAdd = [;] + else if (isEndWithNewLine && secondLastCharSpecial) { + return this; + } + else if (isEndWithNewLine && !secondLastCharSpecial) { + builder.replace(builder.length() - 1, builder.length(), toAdd); + builder.append("\n"); + } + else { + builder.append(toAdd); + } + return this; + } + + private boolean endsWithNewLine(String character) { + return character.equals("\n"); + } + + private boolean aSpecialSign(String character, String toAdd) { + if (StringUtils.isEmpty(character)) { + return false; + } + return character.equals("{") || (character.equals(spacer) && toAdd.equals(spacer)) + || (character.equals(spacer) && toAdd.equals(" ")) + || character.equals(toAdd) || (endsWithNewLine(character) + && StringUtils.equalsAny(toAdd, "\n", " ", lineEnding)); + } + + /** + * Updates the current text with the provided one + * @param contents - text to replace the current content with + * @return updated Block Builder + */ + public BlockBuilder updateContents(String contents) { + this.builder.replace(0, this.builder.length(), contents); + return this; + } + + @Override + public String toString() { + return builder.toString(); + } + +} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyAssertionLineCreator.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyAssertionLineCreator.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyAssertionLineCreator.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyAssertionLineCreator.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyMethodGeneration.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyMethodGeneration.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyMethodGeneration.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyMethodGeneration.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyMethodVisitor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyMethodVisitor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyMethodVisitor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyMethodVisitor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyReader.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyReader.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyReader.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyReader.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/BodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/BodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassAnnotationsBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassAnnotationsBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassAnnotationsBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassAnnotationsBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassBodyBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassBodyBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassBodyBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassBodyBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassMetaData.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassMetaData.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassMetaData.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassMetaData.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassVerifier.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassVerifier.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ClassVerifier.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ClassVerifier.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CommunicationType.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CommunicationType.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CommunicationType.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CommunicationType.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ComparisonBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ComparisonBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ComparisonBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ComparisonBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ContentHelper.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ContentHelper.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ContentHelper.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ContentHelper.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CustomImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CustomImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CustomImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CustomImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CustomStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CustomStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CustomStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/CustomStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultBaseClassProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultBaseClassProvider.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultBaseClassProvider.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultBaseClassProvider.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultClassMetadata.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultClassMetadata.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultClassMetadata.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultClassMetadata.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultJsonStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultJsonStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultJsonStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultJsonStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/DefaultStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/DefaultStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitAcceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitAcceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitAcceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitAcceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRequestGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRequestGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRequestGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRequestGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitResponseWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitResponseWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitResponseWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitResponseWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ExplicitRestAssuredStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Field.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Field.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Field.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Field.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/FieldBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/FieldBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/FieldBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/FieldBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedClassDataForMethod.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedClassDataForMethod.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedClassDataForMethod.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedClassDataForMethod.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedClassMetaData.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedClassMetaData.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedClassMetaData.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedClassMetaData.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedTestClass.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedTestClass.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedTestClass.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedTestClass.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedTestClassBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedTestClassBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GeneratedTestClassBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GeneratedTestClassBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericBinaryBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericBinaryBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericBinaryBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericBinaryBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java similarity index 97% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java index 7e86994db7..4f02cea08d 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericHttpBodyThen.java @@ -20,7 +20,6 @@ import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import org.springframework.cloud.contract.spec.internal.Request; import org.springframework.cloud.contract.verifier.file.SingleContractMetadata; import org.springframework.cloud.contract.verifier.template.HandlebarsTemplateProcessor; import org.springframework.cloud.contract.verifier.template.TemplateProcessor; diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericJsonBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericJsonBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericJsonBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericJsonBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericTextBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericTextBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericTextBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericTextBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericXmlBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericXmlBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GenericXmlBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GenericXmlBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Given.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Given.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Given.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Given.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyClassMetaData.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyClassMetaData.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyClassMetaData.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyClassMetaData.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyComparisonBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyComparisonBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/GroovyComparisonBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/GroovyComparisonBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Imports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Imports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Imports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Imports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ImportsBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ImportsBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/ImportsBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/ImportsBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/InProgressContractMethodPreProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/InProgressContractMethodPreProcessor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/InProgressContractMethodPreProcessor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/InProgressContractMethodPreProcessor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4Imports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4Imports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4Imports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4Imports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4MethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4MethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4MethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4MethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4OrderClassAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4OrderClassAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4OrderClassAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4OrderClassAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4OrderImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4OrderImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4OrderImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit4OrderImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5Imports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5Imports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5Imports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5Imports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5MethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5MethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5MethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5MethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5OrderClassAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5OrderClassAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5OrderClassAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5OrderClassAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5OrderImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5OrderImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5OrderImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnit5OrderImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodMetadata.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnitMethodMetadata.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodMetadata.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JUnitMethodMetadata.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaClassMetaData.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaClassMetaData.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaClassMetaData.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaClassMetaData.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaJaxRsThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaJaxRsThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaJaxRsThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaJaxRsThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaJaxRsWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaJaxRsWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaJaxRsWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaJaxRsWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingWithBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingWithBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaMessagingWithBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaMessagingWithBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaRestAssuredWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaTestGenerator.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaTestGenerator.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JavaTestGenerator.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JavaTestGenerator.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsAcceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsAcceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsAcceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsAcceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestCookiesWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestCookiesWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestCookiesWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestCookiesWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestHeadersWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestHeadersWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestHeadersWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestHeadersWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestInvokerWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestInvokerWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestInvokerWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestInvokerWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestMethodWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestMethodWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestMethodWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestMethodWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsRequestWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsRequestWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsResponseCookiesThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsResponseCookiesThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsResponseCookiesThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsResponseCookiesThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsResponseHeadersThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsResponseHeadersThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsResponseHeadersThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsResponseHeadersThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsStatusCodeThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsStatusCodeThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsStatusCodeThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsStatusCodeThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsUrlPathWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsUrlPathWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsUrlPathWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsUrlPathWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JaxRsWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JsonBodyVerificationBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JsonBodyVerificationBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JsonBodyVerificationBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JsonBodyVerificationBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JsonPathImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JsonPathImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JsonPathImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/JsonPathImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingAssertThatWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingBodyWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingBodyWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingFields.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingFields.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingFields.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingFields.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingHeadersGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingHeadersGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingHeadersGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingHeadersGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingHeadersThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingHeadersThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingHeadersThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingHeadersThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingReceiveMessageThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingReceiveMessageThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingReceiveMessageThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingReceiveMessageThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingSpockNoMessageThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingSpockNoMessageThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingSpockNoMessageThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingSpockNoMessageThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingTriggeredByWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingTriggeredByWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingTriggeredByWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingTriggeredByWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingWithBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingWithBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MessagingWithBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MessagingWithBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MetaDataBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MetaDataBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MetaDataBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MetaDataBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAcceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAcceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAcceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAcceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAnnotationBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAnnotationBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAnnotationBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAnnotationBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAnnotations.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAnnotations.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodAnnotations.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodAnnotations.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodMetadata.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodMetadata.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodMetadata.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodMetadata.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodMetadataBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodMetadataBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodMetadataBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodMetadataBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodPostProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodPostProcessor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodPostProcessor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodPostProcessor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodPreProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodPreProcessor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodPreProcessor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodPreProcessor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodVisitor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodVisitor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodVisitor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MethodVisitor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAcceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcAcceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAcceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcAcceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcCookiesGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcCookiesGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcCookiesGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcCookiesGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMultipartGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcMultipartGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMultipartGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcMultipartGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcQueryParamsWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcQueryParamsWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcQueryParamsWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcQueryParamsWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRequestGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRequestGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRequestGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRequestGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcResponseWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcResponseWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcResponseWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcResponseWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredStaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredStaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredStaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcRestAssuredStaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcUrlWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcUrlWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcUrlWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcUrlWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/NameProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/NameProvider.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/OurCallable.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/OurCallable.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/OurCallable.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/OurCallable.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/QueryParamsResolver.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/QueryParamsResolver.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/QueryParamsResolver.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/QueryParamsResolver.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredCookiesThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredCookiesThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredCookiesThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredCookiesThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredHeadersThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredHeadersThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredHeadersThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredHeadersThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredStatusCodeThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredStatusCodeThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredStatusCodeThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredStatusCodeThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredVerifier.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredVerifier.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredVerifier.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredVerifier.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SingleMethodBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SingleMethodBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SingleMethodBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SingleMethodBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGenerator.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SingleTestGenerator.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGenerator.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SingleTestGenerator.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockIgnoreImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockIgnoreImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockJaxRsWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockJaxRsWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingEmptyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingEmptyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingEmptyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingEmptyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingWithBodyThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingWithBodyThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingWithBodyThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMessagingWithBodyThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodMetadata.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMethodMetadata.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodMetadata.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMethodMetadata.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcMultipartGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcMultipartGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcMultipartGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcMultipartGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcRequestGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcRequestGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcRequestGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcRequestGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcResponseWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcResponseWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMockMvcResponseWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockMockMvcResponseWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockOrderClassAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockOrderClassAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockOrderClassAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockOrderClassAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockOrderImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockOrderImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockOrderImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockOrderImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredBodyParser.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredBodyParser.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredBodyParser.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredBodyParser.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredThen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredThen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredThen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredThen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockRestAssuredWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SuppressWarningsClassAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SuppressWarningsClassAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SuppressWarningsClassAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SuppressWarningsClassAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TemplateUpdatingMethodPostProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TemplateUpdatingMethodPostProcessor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TemplateUpdatingMethodPostProcessor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TemplateUpdatingMethodPostProcessor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestNGImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestNGImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestNGImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestNGImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestNGMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestNGMethodAnnotation.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestNGMethodAnnotation.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestNGMethodAnnotation.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestSideRequestTemplateModel.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestSideRequestTemplateModel.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/TestSideRequestTemplateModel.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/TestSideRequestTemplateModel.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Then.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Then.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Then.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Then.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Visitor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Visitor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/Visitor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/Visitor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientAcceptor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientAcceptor.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientAcceptor.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientAcceptor.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRequestGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRequestGiven.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRequestGiven.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRequestGiven.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientResponseWhen.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientResponseWhen.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientResponseWhen.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientResponseWhen.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssured3StaticImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssured3StaticImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssured3StaticImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssured3StaticImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssuredImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssuredImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssuredImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/WebTestClientRestAssuredImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/When.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/When.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/When.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/When.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/XmlBodyVerificationBuilder.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/XmlBodyVerificationBuilder.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/XmlBodyVerificationBuilder.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/XmlBodyVerificationBuilder.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/XmlImports.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/XmlImports.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/XmlImports.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/XmlImports.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsEscapeHelper.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsEscapeHelper.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsEscapeHelper.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsEscapeHelper.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsJsonPathHelper.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsJsonPathHelper.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsJsonPathHelper.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/handlebars/HandlebarsJsonPathHelper.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.java new file mode 100644 index 0000000000..6b8aa11304 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/BaseImportProvider.java @@ -0,0 +1,98 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.builder.imports; + +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; +import static org.springframework.cloud.contract.verifier.config.TestFramework.CUSTOM; +import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT; +import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT5; +import static org.springframework.cloud.contract.verifier.config.TestFramework.SPOCK; +import static org.springframework.cloud.contract.verifier.config.TestFramework.TESTNG; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.cloud.contract.verifier.config.TestFramework; + +/** + * Provides imports based on test framework. + * + * @author Olga Maciaszek-Sharma + * @since 2.1.0 + * @deprecated + */ +@Deprecated +public class BaseImportProvider { + + private static final ImportDefinitions GENERAL_IMPORTS = new ImportDefinitions( + emptyList(), + Arrays.asList( + "org.springframework.cloud.contract.verifier.assertion.SpringCloudContractAssertions.assertThat", + "org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.*")); + private static final Map RULE_IMPORT; + private static final Map TEST_FRAMEWORK_SPECIFIC_IMPORTS; + + static { + TEST_FRAMEWORK_SPECIFIC_IMPORTS = new HashMap<>(5); + TEST_FRAMEWORK_SPECIFIC_IMPORTS.put(JUNIT, + new ImportDefinitions(singletonList("org.junit.Test"))); + TEST_FRAMEWORK_SPECIFIC_IMPORTS.put(JUNIT5, + new ImportDefinitions(singletonList("org.junit.jupiter.api.Test"))); + TEST_FRAMEWORK_SPECIFIC_IMPORTS.put(SPOCK, new ImportDefinitions(emptyList())); + TEST_FRAMEWORK_SPECIFIC_IMPORTS.put(TESTNG, + new ImportDefinitions(singletonList("org.testng.annotations.Test"))); + TEST_FRAMEWORK_SPECIFIC_IMPORTS.put(CUSTOM, new ImportDefinitions(emptyList())); + + RULE_IMPORT = new HashMap<>(5); + RULE_IMPORT.put(JUNIT, "org.junit.Rule"); + RULE_IMPORT.put(JUNIT5, "org.junit.jupiter.api.extension.ExtendWith"); + RULE_IMPORT.put(SPOCK, "org.junit.Rule"); + RULE_IMPORT.put(TESTNG, "org.junit.Rule"); + RULE_IMPORT.put(CUSTOM, "org.junit.Rule"); + } + + /** + * Returns list of imports for provided test framework. + * @param testFramework + * @return list of imports + */ + public static List getImports(TestFramework testFramework) { + List result = new ArrayList<>(GENERAL_IMPORTS.getImports()); + result.addAll(TEST_FRAMEWORK_SPECIFIC_IMPORTS.get(testFramework).getImports()); + return result; + } + + /** + * @param testFramework test framework to pick the static imports for + * @return list of static imports for provided test framework. + */ + public static List getStaticImports(TestFramework testFramework) { + List result = new ArrayList<>(GENERAL_IMPORTS.getStaticImports()); + result.addAll( + TEST_FRAMEWORK_SPECIFIC_IMPORTS.get(testFramework).getStaticImports()); + return result; + } + + public static String getRuleImport(TestFramework testFramework) { + return RULE_IMPORT.get(testFramework); + } + +} diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.java new file mode 100644 index 0000000000..b7179c85d2 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/HttpImportProvider.java @@ -0,0 +1,159 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.builder.imports; + +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; +import static org.springframework.cloud.contract.verifier.config.TestFramework.CUSTOM; +import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT; +import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT5; +import static org.springframework.cloud.contract.verifier.config.TestFramework.SPOCK; +import static org.springframework.cloud.contract.verifier.config.TestFramework.TESTNG; +import static org.springframework.cloud.contract.verifier.config.TestMode.EXPLICIT; +import static org.springframework.cloud.contract.verifier.config.TestMode.JAXRSCLIENT; +import static org.springframework.cloud.contract.verifier.config.TestMode.MOCKMVC; +import static org.springframework.cloud.contract.verifier.config.TestMode.WEBTESTCLIENT; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.tuple.Pair; + +import org.springframework.cloud.contract.verifier.config.TestFramework; +import org.springframework.cloud.contract.verifier.config.TestMode; + +/** + * Provides imports based on test framework and test mode. + * + * @author Olga Maciaszek-Sharma + * @since 2.1.0 + */ +@Deprecated +public class HttpImportProvider { + + private final Map, ImportDefinitions> FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS; + + private final Map TEST_MODE_SPECIFIC_IMPORTS; + + public HttpImportProvider(String restAssuredPackage) { + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS = new HashMap<>(20); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT, JAXRSCLIENT), + new ImportDefinitions(singletonList("javax.ws.rs.core.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT5, JAXRSCLIENT), + new ImportDefinitions(singletonList("javax.ws.rs.core.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(TESTNG, JAXRSCLIENT), + new ImportDefinitions(singletonList("javax.ws.rs.core.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT, MOCKMVC), + new ImportDefinitions(Arrays.asList(restAssuredPackage + + ".module.mockmvc.specification.MockMvcRequestSpecification", + restAssuredPackage + ".response.ResponseOptions"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT, WEBTESTCLIENT), + new ImportDefinitions(Arrays.asList( + "io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification", + "io.restassured.module.webtestclient.response.WebTestClientResponse"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT5, MOCKMVC), + new ImportDefinitions(Arrays.asList(restAssuredPackage + + ".module.mockmvc.specification.MockMvcRequestSpecification", + restAssuredPackage + ".response.ResponseOptions"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT5, WEBTESTCLIENT), + new ImportDefinitions(Arrays.asList( + "io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification", + "io.restassured.module.webtestclient.response.WebTestClientResponse"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(TESTNG, MOCKMVC), + new ImportDefinitions(Arrays.asList(restAssuredPackage + + ".module.mockmvc.specification.MockMvcRequestSpecification", + restAssuredPackage + ".response.ResponseOptions"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(TESTNG, WEBTESTCLIENT), + new ImportDefinitions(Arrays.asList( + "io.restassured.module.webtestclient.specification.WebTestClientRequestSpecification", + "io.restassured.module.webtestclient.response.WebTestClientResponse"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT, EXPLICIT), + new ImportDefinitions(Arrays.asList( + restAssuredPackage + ".specification.RequestSpecification", + restAssuredPackage + ".response.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(JUNIT5, EXPLICIT), + new ImportDefinitions(Arrays.asList( + restAssuredPackage + ".specification.RequestSpecification", + restAssuredPackage + ".response.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(TESTNG, EXPLICIT), + new ImportDefinitions(Arrays.asList( + restAssuredPackage + ".specification.RequestSpecification", + restAssuredPackage + ".response.Response"))); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(SPOCK, JAXRSCLIENT), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(CUSTOM, JAXRSCLIENT), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(SPOCK, MOCKMVC), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(CUSTOM, MOCKMVC), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(SPOCK, EXPLICIT), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(CUSTOM, EXPLICIT), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(SPOCK, WEBTESTCLIENT), + new ImportDefinitions(emptyList())); + FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS.put(Pair.of(CUSTOM, WEBTESTCLIENT), + new ImportDefinitions(emptyList())); + + TEST_MODE_SPECIFIC_IMPORTS = new HashMap<>(4); + TEST_MODE_SPECIFIC_IMPORTS.put(JAXRSCLIENT, new ImportDefinitions(emptyList(), + singletonList("javax.ws.rs.client.Entity.*"))); + TEST_MODE_SPECIFIC_IMPORTS.put(MOCKMVC, + new ImportDefinitions(emptyList(), singletonList( + restAssuredPackage + ".module.mockmvc.RestAssuredMockMvc.*"))); + TEST_MODE_SPECIFIC_IMPORTS.put(EXPLICIT, new ImportDefinitions(emptyList(), + singletonList(restAssuredPackage + ".RestAssured.*"))); + TEST_MODE_SPECIFIC_IMPORTS.put(WEBTESTCLIENT, + new ImportDefinitions(emptyList(), singletonList( + "io.restassured.module.webtestclient.RestAssuredWebTestClient.*"))); + } + + /** + * Returns list of imports for http test contracts for provided test framework and + * test mode. + * @param testFramework + * @param testMode + * @return list of imports + */ + public List getImports(TestFramework testFramework, TestMode testMode) { + List result = new ArrayList<>( + TEST_MODE_SPECIFIC_IMPORTS.get(testMode).getImports()); + result.addAll(FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS + .get(Pair.of(testFramework, testMode)).getImports()); + return result; + } + + /** + * Returns list of static imports for http test contracts for provided test framework + * and test mode. + * @param testFramework + * @param testMode + * @return list of static imports + */ + public List getStaticImports(TestFramework testFramework, TestMode testMode) { + List result = new ArrayList<>( + TEST_MODE_SPECIFIC_IMPORTS.get(testMode).getStaticImports()); + result.addAll(FRAMEWORK_AND_TEST_MODE_SPECIFIC_IMPORTS + .get(Pair.of(testFramework, testMode)).getStaticImports()); + return result; + } + +} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.groovy b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.java similarity index 60% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.groovy rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.java index c2613a1725..6f5c202190 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.groovy +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/ImportDefinitions.java @@ -14,26 +14,37 @@ * limitations under the License. */ -package org.springframework.cloud.contract.verifier.builder.imports +package org.springframework.cloud.contract.verifier.builder.imports; -import groovy.transform.CompileStatic -import groovy.transform.PackageScope +import java.util.ArrayList; +import java.util.List; /** * @author Olga Maciaszek-Sharma - * * @since 2.1.0 */ -@CompileStatic -@PackageScope @Deprecated class ImportDefinitions { - final List imports - final List staticImports + private final List imports; - ImportDefinitions(List imports, List staticImports = []) { - this.imports = imports - this.staticImports = staticImports + private final List staticImports; + + public ImportDefinitions(List imports, List staticImports) { + this.imports = imports; + this.staticImports = staticImports; } + + public ImportDefinitions(List imports) { + this(imports, new ArrayList<>()); + } + + public final List getImports() { + return imports; + } + + public final List getStaticImports() { + return staticImports; + } + } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.groovy b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.java similarity index 56% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.groovy rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.java index aee436a308..c13ff3df23 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.groovy +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/imports/MessagingImportProvider.java @@ -14,36 +14,37 @@ * limitations under the License. */ -package org.springframework.cloud.contract.verifier.builder.imports +package org.springframework.cloud.contract.verifier.builder.imports; -import groovy.transform.CompileStatic +import java.util.Arrays; +import java.util.List; /** * Provides imports based on test framework and test mode. * * @author Olga Maciaszek-Sharma - * * @since 2.1.0 */ -@CompileStatic @Deprecated -class MessagingImportProvider { +public class MessagingImportProvider { /** * @return list of imports for messaging test contracts. */ - static List getImports() { - return ['javax.inject.Inject', - 'org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper', - 'org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessage', - 'org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging', - ] + public static List getImports() { + return Arrays.asList("javax.inject.Inject", + "org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper", + "org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessage", + "org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging"); } /** * @return list of static imports for messaging test contracts. */ - static List getStaticImports() { - return ['org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers', 'org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes'] + public static List getStaticImports() { + return Arrays.asList( + "org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers", + "org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes"); } + } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/TestFramework.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/TestFramework.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/TestFramework.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/TestFramework.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/TestMode.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/TestMode.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/TestMode.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/TestMode.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/CustomDefinition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/CustomDefinition.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/CustomDefinition.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/CustomDefinition.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/JUnit5Definition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/JUnit5Definition.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/JUnit5Definition.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/JUnit5Definition.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/JUnitDefinition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/JUnitDefinition.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/JUnitDefinition.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/JUnitDefinition.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/SpockDefinition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/SpockDefinition.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/SpockDefinition.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/SpockDefinition.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestFrameworkDefinition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestFrameworkDefinition.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/config/framework/TestFrameworkDefinition.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestFrameworkDefinition.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.java new file mode 100644 index 0000000000..c05e0a66b1 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/config/framework/TestNGDefinition.java @@ -0,0 +1,87 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.config.framework; + +import java.util.List; + +/** + * Defines elements characteristic of TestNG test framework to be used during test class + * construction. + * + * @author André Hoffmann + * @since 2.2.0 + */ +public class TestNGDefinition implements TestFrameworkDefinition { + + @Override + public String getClassModifier() { + return "public "; + } + + @Override + public String getMethodModifier() { + return "public void "; + } + + @Override + public String getLineSuffix() { + return ";"; + } + + @Override + public String getClassExtension() { + return ".java"; + } + + @Override + public String getClassNameSuffix() { + return "Test"; + } + + @Override + public String getIgnoreClass() { + throw new UnsupportedOperationException( + "There is no @Ignore annotation for TestNG. A test can be disabled directly in the @Test annotation"); + } + + @Override + public List getOrderAnnotationImports() { + throw new UnsupportedOperationException("Not implemented yet in TestNG"); + } + + @Override + public String getOrderAnnotation() { + throw new UnsupportedOperationException("Not implemented yet in TestNG"); + } + + @Override + public String getIgnoreAnnotation() { + throw new UnsupportedOperationException( + "There is no @Ignore annotation for TestNG. A test can be disabled directly in the @Test annotation"); + } + + @Override + public boolean annotationLevelRules() { + return false; + } + + @Override + public String getRuleAnnotation(String annotationValue) { + throw new UnsupportedOperationException("Not available in TestNG."); + } + +} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContract.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/converter/YamlContract.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContract.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/converter/YamlContract.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockExtensions.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockExtensions.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockExtensions.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockExtensions.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMapping.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMapping.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMapping.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMapping.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.java new file mode 100644 index 0000000000..9d4d87336e --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/HandlebarsTemplateProcessor.java @@ -0,0 +1,269 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.template; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers; +import wiremock.com.github.jknack.handlebars.Handlebars; +import wiremock.com.github.jknack.handlebars.Template; + +import org.springframework.cloud.contract.spec.ContractTemplate; +import org.springframework.cloud.contract.spec.internal.CompositeContractTemplate; +import org.springframework.cloud.contract.spec.internal.Request; +import org.springframework.cloud.contract.verifier.builder.TestSideRequestTemplateModel; +import org.springframework.cloud.contract.verifier.builder.handlebars.HandlebarsJsonPathHelper; + +/** + * Default Handlebars template processor. + * + * @author Marcin Grzejszczak + * @since 1.1.0 + */ +public class HandlebarsTemplateProcessor implements TemplateProcessor, ContractTemplate { + + private static final Pattern ESCAPED_LEGACY_JSON_PATH_PATTERN = Pattern + .compile("^.*\\{\\{\\{jsonpath this '(.*)'}}}.*$"); + + private static final Pattern ESCAPED_JSON_PATH_PATTERN = Pattern + .compile("^.*\\{\\{\\{jsonPath request.body '(.*)'}}}.*$"); + + private static final Pattern LEGACY_JSON_PATH_PATTERN = Pattern + .compile("^.*\\{\\{jsonpath this '(.*)'}}.*$"); + + private static final Pattern JSON_PATH_PATTERN = Pattern + .compile("^.*\\{\\{jsonPath request.body '(.*)'}}.*$"); + + private static final List PATTERNS = Arrays.asList( + ESCAPED_LEGACY_JSON_PATH_PATTERN, ESCAPED_JSON_PATH_PATTERN, + LEGACY_JSON_PATH_PATTERN, JSON_PATH_PATTERN); + + private static final String LEGACY_JSON_PATH_TEMPLATE_NAME = HandlebarsJsonPathHelper.NAME; + + private static final String JSON_PATH_TEMPLATE_NAME = WireMockHelpers.jsonPath.name(); + + private final ContractTemplate contractTemplate = new CompositeContractTemplate(); + + @Override + public String transform(Request request, String testContents) { + TestSideRequestTemplateModel templateModel = TestSideRequestTemplateModel + .from(request); + Map model = Collections + .singletonMap(HandlebarsJsonPathHelper.REQUEST_MODEL_NAME, templateModel); + Template bodyTemplate = uncheckedCompileTemplate(testContents); + return templatedResponseBody(model, bodyTemplate); + } + + @Override + public boolean containsTemplateEntry(String line) { + return (line.contains(contractTemplate.openingTemplate()) + && line.contains(contractTemplate.closingTemplate())) + || (line.contains(contractTemplate.escapedOpeningTemplate()) + && line.contains(contractTemplate.escapedClosingTemplate())); + } + + @Override + public boolean containsJsonPathTemplateEntry(String line) { + return line.contains(openingTemplate() + LEGACY_JSON_PATH_TEMPLATE_NAME) + || line.contains(openingTemplate() + JSON_PATH_TEMPLATE_NAME) + || line.contains( + escapedOpeningTemplate() + LEGACY_JSON_PATH_TEMPLATE_NAME) + || line.contains(escapedOpeningTemplate() + JSON_PATH_TEMPLATE_NAME); + } + + @Override + public String jsonPathFromTemplateEntry(String line) { + if (!containsJsonPathTemplateEntry(line)) { + return ""; + } + for (Pattern pattern : PATTERNS) { + Matcher matcher = pattern.matcher(line); + if (matcher.matches()) { + return matcher.group(1); + } + } + return ""; + } + + private String templatedResponseBody(Map model, + Template bodyTemplate) { + return uncheckedApplyTemplate(bodyTemplate, model); + } + + private String uncheckedApplyTemplate(Template template, Object context) { + try { + return template.apply(context); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Template uncheckedCompileTemplate(String content) { + try { + final Handlebars handlebars = new Handlebars(); + handlebars.registerHelper(HandlebarsJsonPathHelper.NAME, + new HandlebarsJsonPathHelper()); + handlebars.registerHelper(WireMockHelpers.jsonPath.name(), + new HandlebarsJsonPathHelper()); + Arrays.stream(WireMockHelpers.values()) + .filter(helper -> !helper.equals(WireMockHelpers.jsonPath)) + .forEach(helper -> handlebars.registerHelper(helper.name(), helper)); + return handlebars.compileInline(content); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean startsWithTemplate(String text) { + return contractTemplate.startsWithTemplate(text); + } + + @Override + public boolean startsWithEscapedTemplate(String text) { + return contractTemplate.startsWithEscapedTemplate(text); + } + + @Override + public String openingTemplate() { + return contractTemplate.openingTemplate(); + } + + @Override + public String closingTemplate() { + return contractTemplate.closingTemplate(); + } + + @Override + public String escapedOpeningTemplate() { + return contractTemplate.escapedOpeningTemplate(); + } + + @Override + public String escapedClosingTemplate() { + return contractTemplate.escapedClosingTemplate(); + } + + @Override + public String url() { + return contractTemplate.url(); + } + + @Override + public String query(String key) { + return contractTemplate.query(key); + } + + @Override + public String query(String key, int index) { + return contractTemplate.query(key, index); + } + + @Override + public String path() { + return contractTemplate.path(); + } + + @Override + public String path(int index) { + return contractTemplate.path(index); + } + + @Override + public String header(String key) { + return contractTemplate.header(key); + } + + @Override + public String header(String key, int index) { + return contractTemplate.header(key, index); + } + + @Override + public String cookie(String key) { + return contractTemplate.cookie(key); + } + + @Override + public String body() { + return contractTemplate.body(); + } + + @Override + public String body(String jsonPath) { + return contractTemplate.body(jsonPath); + } + + @Override + public String escapedUrl() { + return contractTemplate.escapedUrl(); + } + + @Override + public String escapedQuery(String key) { + return contractTemplate.escapedQuery(key); + } + + @Override + public String escapedQuery(String key, int index) { + return contractTemplate.escapedQuery(key, index); + } + + @Override + public String escapedPath() { + return contractTemplate.escapedPath(); + } + + @Override + public String escapedPath(int index) { + return contractTemplate.escapedPath(index); + } + + @Override + public String escapedHeader(String key) { + return contractTemplate.escapedHeader(key); + } + + @Override + public String escapedHeader(String key, int index) { + return contractTemplate.escapedHeader(key, index); + } + + @Override + public String escapedCookie(String key) { + return contractTemplate.escapedCookie(key); + } + + @Override + public String escapedBody() { + return contractTemplate.escapedBody(); + } + + @Override + public String escapedBody(String jsonPath) { + return contractTemplate.escapedBody(jsonPath); + } + +} diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/TemplateProcessor.groovy b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/TemplateProcessor.java similarity index 51% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/TemplateProcessor.groovy rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/TemplateProcessor.java index 445861c5b6..0112e1790f 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/template/TemplateProcessor.groovy +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/template/TemplateProcessor.java @@ -14,45 +14,48 @@ * limitations under the License. */ -package org.springframework.cloud.contract.verifier.template +package org.springframework.cloud.contract.verifier.template; -import org.springframework.cloud.contract.spec.internal.Request +import org.springframework.cloud.contract.spec.internal.Request; /** * Contract for conversion of templated responses. * - * If no implementation is provided then Handlebars will be picked as a default implementation. + * If no implementation is provided then Handlebars will be picked as a default + * implementation. * * @author Marcin Grzejszczak * @since 1.1.0 */ -interface TemplateProcessor { +public interface TemplateProcessor { /** * For the given {@link Request} and the test contents should perform a transformation - * and return the converted test + * and return the converted test. */ - String transform(Request request, String testContents) + String transform(Request request, String testContents); /** - * @return {@code true} if the current line contains template related entry. E.g. for Handlebars - * if a line contains {{{...}}} then it's considered to contain template related entry + * @return {@code true} if the current line contains template related entry. E.g. for + * Handlebars if a line contains {{{...}}} then it's considered to contain template + * related entry */ - boolean containsTemplateEntry(String line) + boolean containsTemplateEntry(String line); /** - * @return {@code true} if the current line contains template related entry for json path processing. - * E.g. for Handlebars if a line contains {{{jsonpath ...}}} or {{{jsonPath ...}}} then - * it's considered to contain template related entry for json path processing + * @return {@code true} if the current line contains template related entry for json + * path processing. E.g. for Handlebars if a line contains {{{jsonpath ...}}} or + * {{{jsonPath ...}}} then it's considered to contain template related entry for json + * path processing */ - boolean containsJsonPathTemplateEntry(String line) + boolean containsJsonPathTemplateEntry(String line); /** - * @return the json path entry from the current line that contains template related entry for json path processing. - * E.g. for Handlebars if a line contains {{{jsonpath this '$.a.b.c'}}} or {{{jsonPath request.body ...}}} then - * the te method would return {@code $.a.b.c}. Returns empty string if there's no matching - * json path entry + * @return the json path entry from the current line that contains template related + * entry for json path processing. E.g. for Handlebars if a line contains {{{jsonpath + * this '$.a.b.c'}}} or {{{jsonPath request.body ...}}} then the te method would + * return {@code $.a.b.c}. Returns empty string if there's no matching json path entry */ - String jsonPathFromTemplateEntry(String line) + String jsonPathFromTemplateEntry(String line); } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/AssertionUtil.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/AssertionUtil.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/AssertionUtil.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/AssertionUtil.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/CloneUtils.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/CloneUtils.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/CloneUtils.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/CloneUtils.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/DelegatingJsonVerifiable.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/DelegatingJsonVerifiable.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/DelegatingJsonVerifiable.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/DelegatingJsonVerifiable.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/FinishedDelegatingJsonVerifiable.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/FinishedDelegatingJsonVerifiable.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/FinishedDelegatingJsonVerifiable.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/FinishedDelegatingJsonVerifiable.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MethodBuffering.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/MethodBuffering.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MethodBuffering.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/MethodBuffering.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MethodBufferingJsonVerifiable.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/MethodBufferingJsonVerifiable.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MethodBufferingJsonVerifiable.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/MethodBufferingJsonVerifiable.java diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ShouldTraverse.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ShouldTraverse.java similarity index 100% rename from spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ShouldTraverse.java rename to spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ShouldTraverse.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.java new file mode 100644 index 0000000000..427c95129d --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.java @@ -0,0 +1,112 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.verifier.util; + +import java.io.File; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.cloud.contract.spec.Contract; +import org.springframework.cloud.contract.spec.ContractConverter; + +import static org.springframework.cloud.contract.verifier.util.ContractScanner.collectContractDescriptors; + +/** + * Allows conversion of Contract files to files. + * + * WARNING: This class is incubating and experimental. It might change in the future. + * + * @author Marcin Grzejszczak + * @since 2.1.0 + */ +public final class ToFileContractsTransformer { + + private static final Logger log = LoggerFactory + .getLogger(ToFileContractsTransformer.class); + + /** + * Dumps contracts as files for the given {@link ContractConverter}. + * + * - argument 1 : FQN - fully qualified name of the {@link ContractConverter} + * [REQUIRED] - argument 2 : path - path where the dumped files should be stored + * [OPTIONAL - defaults to target/converted-contracts] - argument 3 : path - path were + * the contracts should be searched for [OPTIONAL - defaults to + * src/test/resources/contracts] + */ + public static void main(String[] args) { + if (args.length == 0) { + throw new IllegalStateException(exceptionMessage()); + } + log.warn( + "You're using an incubating feature. Note, that it can be changed / removed in the future"); + String fqn = args[0]; + String outputPath = args.length >= 2 ? args[1] : "target/converted-contracts"; + String path = args.length >= 3 ? args[2] : "src/test/resources/contracts"; + new ToFileContractsTransformer().storeContractsAsFiles(path, fqn, outputPath); + } + + private static String exceptionMessage() { + return "Please provide the FQN of the ContractConverter. E.g. [org.springframework.cloud.contract.verifier.converter.YamlContractConverter]"; + } + + /** + * @param path - path were the contracts should be searched for + * @param fqn - fully qualified name of the {@link ContractConverter} + * @param outputPath - path where the dumped files should be stored + * @return list of dumped files + */ + List storeContractsAsFiles(String path, String fqn, String outputPath) { + try { + log.info("Input path [{}]", path); + log.info("FQN of the converter [{}]", fqn); + log.info("Output path [{}]", outputPath); + Collection contracts = collectContractDescriptors(new File(path)); + log.info("Found [{}] contract definition", contracts.size()); + Class name = Class.forName(fqn); + ContractConverter contractConverter = (ContractConverter) name + .newInstance(); + Collection converted = contractConverter.convertTo(contracts); + log.info("Successfully converted contracts definitions"); + Map stored = contractConverter.store(converted); + File outputFolder = new File(outputPath); + outputFolder.mkdirs(); + int i = 1; + Set> entries = stored.entrySet(); + log.info("Will convert [{}] contracts", entries.size()); + List files = new ArrayList<>(); + for (Map.Entry entry : entries) { + File outputFile = new File(outputFolder, entry.getKey()); + Files.write(outputFile.toPath(), entry.getValue()); + log.info("[{}/{}] Successfully stored [{}]", i, entries.size(), + outputFile.getName()); + files.add(outputFile); + } + return files; + } + catch (Exception ex) { + throw new IllegalStateException(ex); + } + } + +} diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/TestGeneratorTests.java b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/TestGeneratorTests.java index 38655e9ee1..30d09332c0 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/TestGeneratorTests.java +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/TestGeneratorTests.java @@ -19,9 +19,6 @@ package org.springframework.cloud.contract.verifier; import java.io.File; import java.nio.file.Path; import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; import org.assertj.core.api.BDDAssertions; import org.junit.Test; @@ -113,10 +110,8 @@ public class TestGeneratorTests { TestGenerator testGenerator = new TestGenerator(properties, singleTestGenerator, fileSaver, scanner) { @Override - Set>> processAllNotInProgress( - MultiValueMap contracts, + void processAllNotInProgress(MultiValueMap contracts, String basePackageName) { - return null; } }; diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/assertion/CollectionAssertTests.java b/spring-cloud-contract-verifier/src/test/java/org/springframework/cloud/contract/verifier/assertion/CollectionAssertTests.java similarity index 100% rename from spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/assertion/CollectionAssertTests.java rename to spring-cloud-contract-verifier/src/test/java/org/springframework/cloud/contract/verifier/assertion/CollectionAssertTests.java