From b91dae8adaf3a4e4bd626ea1281272c4452e78e4 Mon Sep 17 00:00:00 2001 From: joseegman Date: Sun, 16 Aug 2026 21:12:40 +0200 Subject: [PATCH 1/2] Add regression tests for already-fixed issues #251 and #277 --- .../v2/AsyncApiGeneratorFixtures.java | 80 +++++++++++++++++++ .../asyncapi/v2/AsyncApiGeneratorTest.java | 2 + .../openapi/OpenApiGeneratorFixtures.java | 25 ++++++ .../plugin/openapi/OpenApiGeneratorTest.java | 2 + .../assets/customvalidator/MaxBigDecimal.java | 17 ++++ .../MaxBigDecimalValidator.java | 25 ++++++ .../assets/customvalidator/MaxDouble.java | 17 ++++ .../customvalidator/MaxDoubleValidator.java | 24 ++++++ .../assets/customvalidator/MaxFloat.java | 17 ++++ .../customvalidator/MaxFloatValidator.java | 24 ++++++ .../assets/customvalidator/MaxInteger.java | 17 ++++ .../customvalidator/MaxIntegerValidator.java | 24 ++++++ .../assets/customvalidator/MinBigDecimal.java | 17 ++++ .../MinBigDecimalValidator.java | 25 ++++++ .../assets/customvalidator/MinDouble.java | 17 ++++ .../customvalidator/MinDoubleValidator.java | 24 ++++++ .../assets/customvalidator/MinFloat.java | 17 ++++ .../customvalidator/MinFloatValidator.java | 24 ++++++ .../assets/customvalidator/MinInteger.java | 17 ++++ .../customvalidator/MinIntegerValidator.java | 24 ++++++ .../assets/customvalidator/NotNull.java | 18 +++++ .../customvalidator/NotNullValidator.java | 18 +++++ .../assets/customvalidator/Pattern.java | 22 +++++ .../customvalidator/PatternValidator.java | 22 +++++ .../assets/customvalidator/Size.java | 23 ++++++ .../assets/customvalidator/SizeValidator.java | 24 ++++++ .../MaxBigDecimal.java | 17 ++++ .../MaxBigDecimalValidator.java | 25 ++++++ .../customvalidator_producer/MaxDouble.java | 17 ++++ .../MaxDoubleValidator.java | 24 ++++++ .../customvalidator_producer/MaxFloat.java | 17 ++++ .../MaxFloatValidator.java | 24 ++++++ .../customvalidator_producer/MaxInteger.java | 17 ++++ .../MaxIntegerValidator.java | 24 ++++++ .../MinBigDecimal.java | 17 ++++ .../MinBigDecimalValidator.java | 25 ++++++ .../customvalidator_producer/MinDouble.java | 17 ++++ .../MinDoubleValidator.java | 24 ++++++ .../customvalidator_producer/MinFloat.java | 17 ++++ .../MinFloatValidator.java | 24 ++++++ .../customvalidator_producer/MinInteger.java | 17 ++++ .../MinIntegerValidator.java | 24 ++++++ .../customvalidator_producer/NotNull.java | 18 +++++ .../NotNullValidator.java | 18 +++++ .../customvalidator_producer/Pattern.java | 22 +++++ .../PatternValidator.java | 22 +++++ .../assets/customvalidator_producer/Size.java | 23 ++++++ .../SizeValidator.java | 24 ++++++ .../event-api.yml | 56 +++++++++++++ .../api-test.yml | 38 +++++++++ .../assets/TestApi.java | 46 +++++++++++ 51 files changed, 1163 insertions(+) create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimal.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimalValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDouble.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDoubleValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloat.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloatValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxInteger.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxIntegerValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimal.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimalValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDouble.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDoubleValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloat.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloatValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinInteger.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinIntegerValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNull.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNullValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Pattern.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/PatternValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Size.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/SizeValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimal.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimalValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDouble.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDoubleValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloat.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloatValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxInteger.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxIntegerValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimal.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimalValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDouble.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDoubleValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloat.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloatValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinInteger.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinIntegerValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNull.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNullValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Pattern.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/PatternValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Size.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/SizeValidator.java create mode 100644 multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/event-api.yml create mode 100644 multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/api-test.yml create mode 100644 multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/assets/TestApi.java diff --git a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorFixtures.java b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorFixtures.java index 3f3fd31f..38243d97 100644 --- a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorFixtures.java +++ b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorFixtures.java @@ -145,6 +145,25 @@ public class AsyncApiGeneratorFixtures { .build() ); + static final List TEST_CUSTOM_VALIDATORS_DIFFERENT_PACKAGES = List.of( + SpecFile + .builder() + .filePath("asyncapigenerator/v2/testCustomValidatorsDifferentPackages/event-api.yml") + .consumer(OperationParameterObject.builder() + .ids("customValidatorResponse") + .modelNameSuffix("DTO") + .apiPackage("com.sngular.scsplugin.customvalidatordiff.model.event.consumer") + .modelPackage("com.sngular.scsplugin.customvalidatordiff.model.event.consumer") + .build()) + .supplier(OperationParameterObject.builder() + .ids("customValidatorClients") + .modelNameSuffix("DTO") + .apiPackage("com.sngular.scsplugin.customvalidatordiff.model.event.producer") + .modelPackage("com.sngular.scsplugin.customvalidatordiff.model.event.producer") + .build()) + .build() + ); + static final List TEST_FILE_GENERATION_ISSUE = List.of( SpecFile .builder() @@ -735,6 +754,67 @@ static Function validateCustomValidators(final int springBootVers customValidatorTest(path, expectedValidatorFiles, DEFAULT_CUSTOM_VALIDATOR_FOLDER); } + static Function validateCustomValidatorsDifferentPackages() { + final String DEFAULT_CONSUMER_MODEL_FOLDER = "generated/com/sngular/scsplugin/customvalidatordiff/model/event/consumer"; + + final String DEFAULT_PRODUCER_MODEL_FOLDER = "generated/com/sngular/scsplugin/customvalidatordiff/model/event/producer"; + + final String COMMON_PATH = "asyncapigenerator/v2/testCustomValidatorsDifferentPackages/"; + + final List expectedValidatorFiles = List.of( + COMMON_PATH + "assets/customvalidator/MaxBigDecimal.java", + COMMON_PATH + "assets/customvalidator/MaxBigDecimalValidator.java", + COMMON_PATH + "assets/customvalidator/MaxDouble.java", + COMMON_PATH + "assets/customvalidator/MaxDoubleValidator.java", + COMMON_PATH + "assets/customvalidator/MaxFloat.java", + COMMON_PATH + "assets/customvalidator/MaxFloatValidator.java", + COMMON_PATH + "assets/customvalidator/MaxInteger.java", + COMMON_PATH + "assets/customvalidator/MaxIntegerValidator.java", + COMMON_PATH + "assets/customvalidator/MinBigDecimal.java", + COMMON_PATH + "assets/customvalidator/MinBigDecimalValidator.java", + COMMON_PATH + "assets/customvalidator/MinDouble.java", + COMMON_PATH + "assets/customvalidator/MinDoubleValidator.java", + COMMON_PATH + "assets/customvalidator/MinFloat.java", + COMMON_PATH + "assets/customvalidator/MinFloatValidator.java", + COMMON_PATH + "assets/customvalidator/MinInteger.java", + COMMON_PATH + "assets/customvalidator/MinIntegerValidator.java", + COMMON_PATH + "assets/customvalidator/NotNull.java", + COMMON_PATH + "assets/customvalidator/NotNullValidator.java", + COMMON_PATH + "assets/customvalidator/Pattern.java", + COMMON_PATH + "assets/customvalidator/PatternValidator.java", + COMMON_PATH + "assets/customvalidator/Size.java", + COMMON_PATH + "assets/customvalidator/SizeValidator.java" + ); + + final List expectedProducerValidatorFiles = List.of( + COMMON_PATH + "assets/customvalidator_producer/MaxBigDecimal.java", + COMMON_PATH + "assets/customvalidator_producer/MaxBigDecimalValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MaxDouble.java", + COMMON_PATH + "assets/customvalidator_producer/MaxDoubleValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MaxFloat.java", + COMMON_PATH + "assets/customvalidator_producer/MaxFloatValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MaxInteger.java", + COMMON_PATH + "assets/customvalidator_producer/MaxIntegerValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MinBigDecimal.java", + COMMON_PATH + "assets/customvalidator_producer/MinBigDecimalValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MinDouble.java", + COMMON_PATH + "assets/customvalidator_producer/MinDoubleValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MinFloat.java", + COMMON_PATH + "assets/customvalidator_producer/MinFloatValidator.java", + COMMON_PATH + "assets/customvalidator_producer/MinInteger.java", + COMMON_PATH + "assets/customvalidator_producer/MinIntegerValidator.java", + COMMON_PATH + "assets/customvalidator_producer/NotNull.java", + COMMON_PATH + "assets/customvalidator_producer/NotNullValidator.java", + COMMON_PATH + "assets/customvalidator_producer/Pattern.java", + COMMON_PATH + "assets/customvalidator_producer/PatternValidator.java", + COMMON_PATH + "assets/customvalidator_producer/Size.java", + COMMON_PATH + "assets/customvalidator_producer/SizeValidator.java" + ); + + return path -> customValidatorTest(path, expectedValidatorFiles, DEFAULT_CONSUMER_MODEL_FOLDER + "/customvalidator") && + customValidatorTest(path, expectedProducerValidatorFiles, DEFAULT_PRODUCER_MODEL_FOLDER + "/customvalidator"); + } + private static String calculateJavaEEPackage(final int springBootVersion) { if (3 <= springBootVersion) { return "jakarta/"; diff --git a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorTest.java b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorTest.java index de4affb4..634db9aa 100644 --- a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorTest.java +++ b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/asyncapi/v2/AsyncApiGeneratorTest.java @@ -68,6 +68,8 @@ static Stream fileSpecToProcess() { Arguments.of("TestIssueInfiniteLoop", AsyncApiGeneratorFixtures.TEST_ISSUE_INFINITE_LOOP, AsyncApiGeneratorFixtures.validateTestIssueInfiniteLoop()), Arguments.of("TestCustomValidators", AsyncApiGeneratorFixtures.TEST_CUSTOM_VALIDATORS, AsyncApiGeneratorFixtures.validateCustomValidators(SPRING_BOOT_VERSION)), + Arguments.of("TestCustomValidatorsDifferentPackages", AsyncApiGeneratorFixtures.TEST_CUSTOM_VALIDATORS_DIFFERENT_PACKAGES, + AsyncApiGeneratorFixtures.validateCustomValidatorsDifferentPackages()), Arguments.of("TestModelClassExceptionGeneration", AsyncApiGeneratorFixtures.TEST_MODEL_CLASS_EXCEPTION_GENERATION, AsyncApiGeneratorFixtures.validateTestModelClassExceptionGeneration()), Arguments.of("TestNoSchemas", AsyncApiGeneratorFixtures.TEST_NO_SCHEMAS, AsyncApiGeneratorFixtures.validateNoSchemas()), diff --git a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorFixtures.java b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorFixtures.java index aeefa8cd..b26cf941 100644 --- a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorFixtures.java +++ b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorFixtures.java @@ -125,6 +125,12 @@ public final class OpenApiGeneratorFixtures { .modelPackage("com.sngular.multifileplugin.pathlevelinlineparameter.model").modelNameSuffix("DTO") .useTagsGroup(true).useLombokModelAnnotation(false).build()); + static final List TEST_NO_DESCRIPTION_REF_PARAMETER = List + .of(SpecFile.builder().filePath("openapigenerator/testNoDescriptionRefParameter/api-test.yml") + .apiPackage("com.sngular.multifileplugin.nodescriptionrefparameter") + .modelPackage("com.sngular.multifileplugin.nodescriptionrefparameter.model").modelNameSuffix("DTO") + .useLombokModelAnnotation(false).build()); + static final List TEST_WEB_CLIENT_GENERATION = List .of(SpecFile.builder().filePath("openapigenerator/testWebClientApiGeneration/api-test.yml") .apiPackage("com.sngular.multifileplugin.webclientapi") @@ -810,6 +816,25 @@ static Function validatePathLevelInlineParameterGeneration() { } + static Function validateNoDescriptionRefParameterGeneration() { + + final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/nodescriptionrefparameter"; + + final String DEFAULT_MODEL_API = "generated/com/sngular/multifileplugin/nodescriptionrefparameter/model"; + + final String COMMON_PATH = "openapigenerator/testNoDescriptionRefParameter/"; + + final String ASSETS_PATH = COMMON_PATH + "assets/"; + + final List expectedTestApiFile = List.of(ASSETS_PATH + "TestApi.java"); + + final List expectedTestApiModelFiles = List.of(); + + return path -> commonTest(path, expectedTestApiFile, expectedTestApiModelFiles, DEFAULT_TARGET_API, + DEFAULT_MODEL_API, Collections.emptyList(), null); + + } + static Function validateWebClientGeneration() { final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/webclientapi"; diff --git a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorTest.java b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorTest.java index 1dd8452d..9648b1cb 100644 --- a/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorTest.java +++ b/multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorTest.java @@ -79,6 +79,8 @@ static Stream fileSpecToProcess() { OpenApiGeneratorFixtures.validatePathParameterGeneration()), Arguments.of("testPathLevelInlineParameterGeneration", OpenApiGeneratorFixtures.TEST_PATH_LEVEL_INLINE_PARAMETER_GENERATION, OpenApiGeneratorFixtures.validatePathLevelInlineParameterGeneration()), + Arguments.of("testNoDescriptionRefParameterGeneration", OpenApiGeneratorFixtures.TEST_NO_DESCRIPTION_REF_PARAMETER, + OpenApiGeneratorFixtures.validateNoDescriptionRefParameterGeneration()), Arguments.of("testWebClientApiGeneration", OpenApiGeneratorFixtures.TEST_WEB_CLIENT_GENERATION, OpenApiGeneratorFixtures.validateWebClientGeneration()), Arguments.of("testClientPackageWebClientApiGeneration", OpenApiGeneratorFixtures.TEST_CLIENT_PACKAGE_WEB_CLIENT_GENERATION, diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimal.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimal.java new file mode 100644 index 00000000..5cc085cd --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimal.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxBigDecimalValidator.class) +@Documented +public @interface MaxBigDecimal { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimalValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimalValidator.java new file mode 100644 index 00000000..075de178 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxBigDecimalValidator.java @@ -0,0 +1,25 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.math.BigDecimal; +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxBigDecimalValidator implements ConstraintValidator { + + private BigDecimal maximum; + private boolean exclusive; + + @Override + public void initialize(MaxBigDecimal constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = new BigDecimal(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(BigDecimal value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.compareTo(this.maximum) < 0 || (!exclusive && value.compareTo(this.maximum) == 0)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDouble.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDouble.java new file mode 100644 index 00000000..76fceaeb --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDouble.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxDoubleValidator.class) +@Documented +public @interface MaxDouble { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDoubleValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDoubleValidator.java new file mode 100644 index 00000000..178d0e63 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxDoubleValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxDoubleValidator implements ConstraintValidator { + + private double maximum; + private boolean exclusive; + + @Override + public void initialize(MaxDouble constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Double.parseDouble(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Double value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.doubleValue() < this.maximum || (!exclusive && value.doubleValue() == this.maximum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloat.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloat.java new file mode 100644 index 00000000..6667dcb7 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloat.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxFloatValidator.class) +@Documented +public @interface MaxFloat { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloatValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloatValidator.java new file mode 100644 index 00000000..9516ddf8 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxFloatValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxFloatValidator implements ConstraintValidator { + + private float maximum; + private boolean exclusive; + + @Override + public void initialize(MaxFloat constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Float.parseFloat(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Float value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.floatValue() < this.maximum || (!exclusive && value.floatValue() == this.maximum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxInteger.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxInteger.java new file mode 100644 index 00000000..03328d97 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxInteger.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxIntegerValidator.class) +@Documented +public @interface MaxInteger { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxIntegerValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxIntegerValidator.java new file mode 100644 index 00000000..a11cc9b7 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MaxIntegerValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxIntegerValidator implements ConstraintValidator { + + private int maximum; + private boolean exclusive; + + @Override + public void initialize(MaxInteger constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Integer.parseInt(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Integer value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.intValue() < this.maximum || (!exclusive && value.intValue() == this.maximum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimal.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimal.java new file mode 100644 index 00000000..8d3ba29e --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimal.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinBigDecimalValidator.class) +@Documented +public @interface MinBigDecimal { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimalValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimalValidator.java new file mode 100644 index 00000000..ad327df7 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinBigDecimalValidator.java @@ -0,0 +1,25 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.math.BigDecimal; +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinBigDecimalValidator implements ConstraintValidator { + + private BigDecimal minimum; + private boolean exclusive; + + @Override + public void initialize(MinBigDecimal constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = new BigDecimal(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(BigDecimal value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.compareTo(this.minimum) > 0 || (!exclusive && value.compareTo(this.minimum) == 0)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDouble.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDouble.java new file mode 100644 index 00000000..29f19731 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDouble.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinDoubleValidator.class) +@Documented +public @interface MinDouble { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDoubleValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDoubleValidator.java new file mode 100644 index 00000000..150853b5 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinDoubleValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinDoubleValidator implements ConstraintValidator { + + private double minimum; + private boolean exclusive; + + @Override + public void initialize(MinDouble constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Double.parseDouble(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Double value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.doubleValue() > this.minimum || (!exclusive && value.doubleValue() == this.minimum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloat.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloat.java new file mode 100644 index 00000000..6d1c8d59 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloat.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinFloatValidator.class) +@Documented +public @interface MinFloat { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloatValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloatValidator.java new file mode 100644 index 00000000..faafc6b5 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinFloatValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinFloatValidator implements ConstraintValidator { + + private float minimum; + private boolean exclusive; + + @Override + public void initialize(MinFloat constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Float.parseFloat(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Float value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.floatValue() > this.minimum || (!exclusive && value.floatValue() == this.minimum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinInteger.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinInteger.java new file mode 100644 index 00000000..ab506016 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinInteger.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinIntegerValidator.class) +@Documented +public @interface MinInteger { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinIntegerValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinIntegerValidator.java new file mode 100644 index 00000000..f5606288 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/MinIntegerValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinIntegerValidator implements ConstraintValidator { + + private int minimum; + private boolean exclusive; + + @Override + public void initialize(MinInteger constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Integer.parseInt(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Integer value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.intValue() > this.minimum || (!exclusive && value.intValue() == this.minimum)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNull.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNull.java new file mode 100644 index 00000000..b480cadc --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNull.java @@ -0,0 +1,18 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = NotNullValidator.class) +@Documented +public @interface NotNull { + + String message() default "Value is null."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNullValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNullValidator.java new file mode 100644 index 00000000..6f51cc37 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/NotNullValidator.java @@ -0,0 +1,18 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.Objects; + +public class NotNullValidator implements ConstraintValidator { + + @Override + public void initialize(NotNull constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + } + + @Override + public boolean isValid(Object value, ConstraintValidatorContext context) { + return Objects.nonNull(value); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Pattern.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Pattern.java new file mode 100644 index 00000000..a5d344d8 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Pattern.java @@ -0,0 +1,22 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = PatternValidator.class) +@Documented +public @interface Pattern { + + String regex(); + + String message() default "Value does not fulfill the pattern."; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/PatternValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/PatternValidator.java new file mode 100644 index 00000000..73b4711d --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/PatternValidator.java @@ -0,0 +1,22 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class PatternValidator implements ConstraintValidator { + + private String regex; + + @Override + public void initialize(Pattern constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.regex = constraintAnnotation.regex(); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { + return Objects.isNull(value) || value.matches(regex); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Size.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Size.java new file mode 100644 index 00000000..dba6eec3 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/Size.java @@ -0,0 +1,23 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = SizeValidator.class) +@Documented +public @interface Size { + + int min(); + + int max(); + + String message() default "Value is not between the correct values."; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/SizeValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/SizeValidator.java new file mode 100644 index 00000000..f479deef --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator/SizeValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.consumer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class SizeValidator implements ConstraintValidator { + + private int min; + private int max; + + @Override + public void initialize(Size constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.min = constraintAnnotation.min(); + this.max = constraintAnnotation.max(); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + return Objects.isNull(value) || ((max == 0 || value.length() <= max) && (min == 0 || value.length() >= min)); + } +} \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimal.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimal.java new file mode 100644 index 00000000..abea9dda --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimal.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxBigDecimalValidator.class) +@Documented +public @interface MaxBigDecimal { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimalValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimalValidator.java new file mode 100644 index 00000000..249c7811 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxBigDecimalValidator.java @@ -0,0 +1,25 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.math.BigDecimal; +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxBigDecimalValidator implements ConstraintValidator { + + private BigDecimal maximum; + private boolean exclusive; + + @Override + public void initialize(MaxBigDecimal constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = new BigDecimal(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(BigDecimal value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.compareTo(this.maximum) < 0 || (!exclusive && value.compareTo(this.maximum) == 0)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDouble.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDouble.java new file mode 100644 index 00000000..68db519e --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDouble.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxDoubleValidator.class) +@Documented +public @interface MaxDouble { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDoubleValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDoubleValidator.java new file mode 100644 index 00000000..a5a0e0ca --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxDoubleValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxDoubleValidator implements ConstraintValidator { + + private double maximum; + private boolean exclusive; + + @Override + public void initialize(MaxDouble constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Double.parseDouble(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Double value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.doubleValue() < this.maximum || (!exclusive && value.doubleValue() == this.maximum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloat.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloat.java new file mode 100644 index 00000000..7d698d9c --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloat.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxFloatValidator.class) +@Documented +public @interface MaxFloat { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloatValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloatValidator.java new file mode 100644 index 00000000..364aba1f --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxFloatValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxFloatValidator implements ConstraintValidator { + + private float maximum; + private boolean exclusive; + + @Override + public void initialize(MaxFloat constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Float.parseFloat(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Float value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.floatValue() < this.maximum || (!exclusive && value.floatValue() == this.maximum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxInteger.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxInteger.java new file mode 100644 index 00000000..edf37610 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxInteger.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MaxIntegerValidator.class) +@Documented +public @interface MaxInteger { + String maximum(); + boolean exclusive(); + String message() default "Value is bigger than the maximum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxIntegerValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxIntegerValidator.java new file mode 100644 index 00000000..4e0d1c4f --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MaxIntegerValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MaxIntegerValidator implements ConstraintValidator { + + private int maximum; + private boolean exclusive; + + @Override + public void initialize(MaxInteger constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.maximum = Integer.parseInt(constraintAnnotation.maximum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Integer value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.intValue() < this.maximum || (!exclusive && value.intValue() == this.maximum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimal.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimal.java new file mode 100644 index 00000000..60fa778b --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimal.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinBigDecimalValidator.class) +@Documented +public @interface MinBigDecimal { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimalValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimalValidator.java new file mode 100644 index 00000000..d64ab6d7 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinBigDecimalValidator.java @@ -0,0 +1,25 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.math.BigDecimal; +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinBigDecimalValidator implements ConstraintValidator { + + private BigDecimal minimum; + private boolean exclusive; + + @Override + public void initialize(MinBigDecimal constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = new BigDecimal(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(BigDecimal value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.compareTo(this.minimum) > 0 || (!exclusive && value.compareTo(this.minimum) == 0)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDouble.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDouble.java new file mode 100644 index 00000000..073801e7 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDouble.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinDoubleValidator.class) +@Documented +public @interface MinDouble { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDoubleValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDoubleValidator.java new file mode 100644 index 00000000..76ef394c --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinDoubleValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinDoubleValidator implements ConstraintValidator { + + private double minimum; + private boolean exclusive; + + @Override + public void initialize(MinDouble constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Double.parseDouble(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Double value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.doubleValue() > this.minimum || (!exclusive && value.doubleValue() == this.minimum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloat.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloat.java new file mode 100644 index 00000000..d86511e3 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloat.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinFloatValidator.class) +@Documented +public @interface MinFloat { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloatValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloatValidator.java new file mode 100644 index 00000000..22ee541f --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinFloatValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinFloatValidator implements ConstraintValidator { + + private float minimum; + private boolean exclusive; + + @Override + public void initialize(MinFloat constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Float.parseFloat(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Float value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.floatValue() > this.minimum || (!exclusive && value.floatValue() == this.minimum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinInteger.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinInteger.java new file mode 100644 index 00000000..f95cb599 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinInteger.java @@ -0,0 +1,17 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MinIntegerValidator.class) +@Documented +public @interface MinInteger { + String minimum(); + boolean exclusive(); + String message() default "Value is smaller than the minimum."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinIntegerValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinIntegerValidator.java new file mode 100644 index 00000000..0b8feb54 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/MinIntegerValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class MinIntegerValidator implements ConstraintValidator { + + private int minimum; + private boolean exclusive; + + @Override + public void initialize(MinInteger constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.minimum = Integer.parseInt(constraintAnnotation.minimum()); + this.exclusive = constraintAnnotation.exclusive(); + } + + @Override + public boolean isValid(Integer value, ConstraintValidatorContext context) { + return Objects.isNull(value) || (value.intValue() > this.minimum || (!exclusive && value.intValue() == this.minimum)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNull.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNull.java new file mode 100644 index 00000000..c284e519 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNull.java @@ -0,0 +1,18 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = NotNullValidator.class) +@Documented +public @interface NotNull { + + String message() default "Value is null."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNullValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNullValidator.java new file mode 100644 index 00000000..4ecfc2fa --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/NotNullValidator.java @@ -0,0 +1,18 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.Objects; + +public class NotNullValidator implements ConstraintValidator { + + @Override + public void initialize(NotNull constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + } + + @Override + public boolean isValid(Object value, ConstraintValidatorContext context) { + return Objects.nonNull(value); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Pattern.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Pattern.java new file mode 100644 index 00000000..b76dc704 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Pattern.java @@ -0,0 +1,22 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = PatternValidator.class) +@Documented +public @interface Pattern { + + String regex(); + + String message() default "Value does not fulfill the pattern."; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/PatternValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/PatternValidator.java new file mode 100644 index 00000000..0a8485e5 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/PatternValidator.java @@ -0,0 +1,22 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class PatternValidator implements ConstraintValidator { + + private String regex; + + @Override + public void initialize(Pattern constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.regex = constraintAnnotation.regex(); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { + return Objects.isNull(value) || value.matches(regex); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Size.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Size.java new file mode 100644 index 00000000..5f33ae4a --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/Size.java @@ -0,0 +1,23 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = SizeValidator.class) +@Documented +public @interface Size { + + int min(); + + int max(); + + String message() default "Value is not between the correct values."; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/SizeValidator.java b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/SizeValidator.java new file mode 100644 index 00000000..0944e974 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/assets/customvalidator_producer/SizeValidator.java @@ -0,0 +1,24 @@ +package com.sngular.scsplugin.customvalidatordiff.model.event.producer.customvalidator; + +import java.util.Objects; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class SizeValidator implements ConstraintValidator { + + private int min; + private int max; + + @Override + public void initialize(Size constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + this.min = constraintAnnotation.min(); + this.max = constraintAnnotation.max(); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + return Objects.isNull(value) || ((max == 0 || value.length() <= max) && (min == 0 || value.length() >= min)); + } +} diff --git a/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/event-api.yml b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/event-api.yml new file mode 100644 index 00000000..4cfd69a8 --- /dev/null +++ b/multiapi-engine/src/test/resources/asyncapigenerator/v2/testCustomValidatorsDifferentPackages/event-api.yml @@ -0,0 +1,56 @@ +asyncapi: 2.5.0 +info: + title: Custom Validators Different Packages API + version: 1.0.0 + license: + name: Apache 2.0 + url: "https://www.apache.org/licenses/LICENSE-2.0" +servers: + local-kafka: + url: "localhost:9092" + protocol: kafka +channels: + clients: + publish: + operationId: customValidatorClients + message: + $ref: "#/components/messages/dataClient" + response: + subscribe: + operationId: customValidatorResponse + message: + $ref: "#/components/messages/status" +components: + messages: + status: + name: status + title: Envia status + schemaFormat: application/vnd.aai.asyncapi+json;version=2.0.0 + contentType: application/json + payload: + $ref: "#/components/schemas/data" + dataClient: + name: dataClient + title: Datos del cliente + schemaFormat: application/vnd.aai.asyncapi+json;version=2.0.0 + contentType: application/json + payload: + $ref: "#/components/schemas/data" + schemas: + data: + type: object + required: + - clientId + - clientName + properties: + clientId: + type: integer + minimum: 10 + maximum: 200 + description: Id del cliente. + clientName: + description: Nombre del cliente. + type: string + minLength: 50 + maxLength: 200 + pattern: "^[a-zA-Z0-9_.-]*$" \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/api-test.yml b/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/api-test.yml new file mode 100644 index 00000000..224dc44a --- /dev/null +++ b/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/api-test.yml @@ -0,0 +1,38 @@ +openapi: 3.0.3 +info: + title: test + version: 11.0.0 +servers: +- url: https://to_be_defined +paths: + '/test/{testId}': + get: + tags: + - Test + summary: test + description: test + operationId: Retrieve + parameters: + - $ref: '#/components/parameters/testId' + responses: + '200': + $ref: '#/components/responses/TestResponse' +components: + parameters: + testId: + name: testId + in: path + required: true + style: simple + schema: + type: string + schemas: + TestResponse: + type: string + responses: + TestResponse: + description: CustomerPositionStateResponse + content: + application/json: + schema: + $ref: '#/components/schemas/TestResponse' \ No newline at end of file diff --git a/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/assets/TestApi.java b/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/assets/TestApi.java new file mode 100644 index 00000000..da2a66c7 --- /dev/null +++ b/multiapi-engine/src/test/resources/openapigenerator/testNoDescriptionRefParameter/assets/TestApi.java @@ -0,0 +1,46 @@ +package com.sngular.multifileplugin.nodescriptionrefparameter; + +import java.util.Optional; +import java.util.List; +import java.util.Map; +import javax.validation.Valid; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import org.springframework.http.MediaType; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.NativeWebRequest; + + +public interface TestApi { + + /** + * GET /test/{testId}: test + * @param testId true + * @return CustomerPositionStateResponse; (status code 200) + */ + + @Operation( + operationId = "Retrieve", + summary = "test", + tags = {"Test"}, + responses = { + @ApiResponse(responseCode = "200", description = "CustomerPositionStateResponse", content = @Content(mediaType = "application/json", schema = @Schema(implementation = String.class))) + } + ) + @RequestMapping( + method = RequestMethod.GET, + value = "/test/{testId}", + produces = {"application/json"} + ) + + default ResponseEntity Retrieve(@Parameter(name = "testId", required = true, schema = @Schema(description = "")) @PathVariable("testId") String testId) { + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + } + +} \ No newline at end of file From c0cfbfc22872e1ff64fa951e8b76fdd21fc478a3 Mon Sep 17 00:00:00 2001 From: joseegman Date: Sun, 16 Aug 2026 22:13:19 +0200 Subject: [PATCH 2/2] Bump version to 6.7.2 --- multiapi-engine/pom.xml | 2 +- scs-multiapi-gradle-plugin/build.gradle | 6 +++--- scs-multiapi-maven-plugin/pom.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/multiapi-engine/pom.xml b/multiapi-engine/pom.xml index 300b09d7..f5dcf16a 100644 --- a/multiapi-engine/pom.xml +++ b/multiapi-engine/pom.xml @@ -4,7 +4,7 @@ com.sngular multiapi-engine - 6.7.1 + 6.7.2 jar diff --git a/scs-multiapi-gradle-plugin/build.gradle b/scs-multiapi-gradle-plugin/build.gradle index 5354a72f..9c5f1a39 100644 --- a/scs-multiapi-gradle-plugin/build.gradle +++ b/scs-multiapi-gradle-plugin/build.gradle @@ -21,7 +21,7 @@ repositories { } group = 'com.sngular' -version = '6.7.1' +version = '6.7.2' def SCSMultiApiPluginGroupId = group def SCSMultiApiPluginVersion = version @@ -31,7 +31,7 @@ dependencies { shadow localGroovy() shadow gradleApi() - implementation 'com.sngular:multiapi-engine:6.7.1' + implementation 'com.sngular:multiapi-engine:6.7.2' testImplementation 'org.assertj:assertj-core:3.24.2' testImplementation 'com.puppycrawl.tools:checkstyle:10.12.3' testImplementation 'org.junit.platform:junit-platform-launcher:1.9.2' @@ -100,7 +100,7 @@ testing { integrationTest(JvmTestSuite) { dependencies { - implementation 'com.sngular:scs-multiapi-gradle-plugin:6.7.1' + implementation 'com.sngular:scs-multiapi-gradle-plugin:6.7.2' implementation 'org.assertj:assertj-core:3.24.2' } diff --git a/scs-multiapi-maven-plugin/pom.xml b/scs-multiapi-maven-plugin/pom.xml index b12632a7..7ced72c7 100644 --- a/scs-multiapi-maven-plugin/pom.xml +++ b/scs-multiapi-maven-plugin/pom.xml @@ -4,7 +4,7 @@ com.sngular scs-multiapi-maven-plugin - 6.7.1 + 6.7.2 maven-plugin AsyncApi - OpenApi Code Generator Maven Plugin @@ -271,7 +271,7 @@ com.sngular multiapi-engine - 6.7.1 + 6.7.2 org.apache.maven