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/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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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 extends Payload>[] 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
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