diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/DefaultOpenApiExtension.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/DefaultOpenApiExtension.java index 3e61b46a4..33e1ff5ca 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/DefaultOpenApiExtension.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/DefaultOpenApiExtension.java @@ -48,7 +48,7 @@ public abstract class DefaultOpenApiExtension implements OpenApiExtension { private final Configuration classpath; @Inject - public DefaultOpenApiExtension(Project project, Configuration classpath) { + protected DefaultOpenApiExtension(Project project, Configuration classpath) { this.project = project; this.classpath = classpath; } @@ -138,6 +138,8 @@ private void configureCommonProperties(String name, AbstractOpenApiGenerator getControllerPackage(); Property getUseAuth(); + + Property getAot(); } diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/OpenApiSpec.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/OpenApiSpec.java index a454cb7c5..9f0a11cbc 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/OpenApiSpec.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/OpenApiSpec.java @@ -37,6 +37,10 @@ public interface OpenApiSpec { Property getGenerateHttpResponseWhereRequired(); + Property getLombok(); + + Property getGeneratedAnnotation(); + Property getDateTimeFormat(); ListProperty getParameterMappings(); diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiGenerator.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiGenerator.java index c9b960b88..edea97262 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiGenerator.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiGenerator.java @@ -80,6 +80,12 @@ public abstract class AbstractOpenApiGenerator getParameterMappings(); + @Input + public abstract Property getLombok(); + + @Input + public abstract Property getGeneratedAnnotation(); + @Input public abstract ListProperty getResponseBodyMappings(); diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiWorkAction.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiWorkAction.java index e75a789bf..afaed5524 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiWorkAction.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/AbstractOpenApiWorkAction.java @@ -59,6 +59,10 @@ interface OpenApiParameters extends WorkParameters { Property getDateTimeFormat(); + Property getLombok(); + + Property getGeneratedAnnotation(); + ListProperty getParameterMappings(); ListProperty getResponseBodyMappings(); @@ -78,36 +82,36 @@ public void execute() { .map(s -> MicronautCodeGeneratorEntryPoint.OutputKind.valueOf(s.toUpperCase(Locale.US))) .toArray(MicronautCodeGeneratorEntryPoint.OutputKind[]::new) ) - .withOptions(options -> { - options.withInvokerPackage(parameters.getInvokerPackageName().get()); - options.withApiPackage(parameters.getApiPackageName().get()); - options.withModelPackage(parameters.getModelPackageName().get()); - options.withBeanValidation(parameters.getUseBeanValidation().get()); - options.withOptional(parameters.getUseOptional().get()); - options.withReactive(parameters.getUseReactive().get()); - options.withSerializationLibrary(SerializationLibraryKind.valueOf(parameters.getSerializationFramework().get().toUpperCase(Locale.US))); - options.withGenerateHttpResponseAlways(parameters.getAlwaysUseGenerateHttpResponse().get()); - options.withGenerateHttpResponseWhereRequired(parameters.getGenerateHttpResponseWhereRequired().get()); - options.withDateTimeFormat(MicronautCodeGeneratorOptionsBuilder.DateTimeFormat.valueOf(parameters.getDateTimeFormat().get().toUpperCase(Locale.US))); - options.withParameterMappings(parameters.getParameterMappings() - .get() - .stream() - .map(mapping -> new AbstractMicronautJavaCodegen.ParameterMapping( - mapping.getName(), - AbstractMicronautJavaCodegen.ParameterMapping.ParameterLocation.valueOf(mapping.getLocation().name()), - mapping.getMappedType(), - mapping.getMappedName(), - mapping.isValidated()) - ) - .toList() - ); - options.withResponseBodyMappings(parameters.getResponseBodyMappings() - .get() - .stream() - .map(mapping -> new AbstractMicronautJavaCodegen.ResponseBodyMapping(mapping.getHeaderName(), mapping.getMappedBodyType(), mapping.isListWrapper(), mapping.isValidated())) - .toList() - ); - }); + .withOptions(options -> options.withInvokerPackage(parameters.getInvokerPackageName().get()) + .withApiPackage(parameters.getApiPackageName().get()) + .withModelPackage(parameters.getModelPackageName().get()) + .withBeanValidation(parameters.getUseBeanValidation().get()) + .withOptional(parameters.getUseOptional().get()) + .withReactive(parameters.getUseReactive().get()) + .withSerializationLibrary(SerializationLibraryKind.valueOf(parameters.getSerializationFramework().get().toUpperCase(Locale.US))) + .withGenerateHttpResponseAlways(parameters.getAlwaysUseGenerateHttpResponse().get()) + .withGenerateHttpResponseWhereRequired(parameters.getGenerateHttpResponseWhereRequired().get()) + .withDateTimeFormat(MicronautCodeGeneratorOptionsBuilder.DateTimeFormat.valueOf(parameters.getDateTimeFormat().get().toUpperCase(Locale.US))) + .withLombok(parameters.getLombok().get()) + .withGeneratedAnnotation(parameters.getGeneratedAnnotation().get()) + .withParameterMappings(parameters.getParameterMappings() + .get() + .stream() + .map(mapping -> new AbstractMicronautJavaCodegen.ParameterMapping( + mapping.getName(), + AbstractMicronautJavaCodegen.ParameterMapping.ParameterLocation.valueOf(mapping.getLocation().name()), + mapping.getMappedType(), + mapping.getMappedName(), + mapping.isValidated()) + ) + .toList() + ) + .withResponseBodyMappings(parameters.getResponseBodyMappings() + .get() + .stream() + .map(mapping -> new AbstractMicronautJavaCodegen.ResponseBodyMapping(mapping.getHeaderName(), mapping.getMappedBodyType(), mapping.isListWrapper(), mapping.isValidated())) + .toList() + )); configureBuilder(builder); builder.build().generate(); } diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiClientWorkAction.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiClientWorkAction.java index a51847fa8..b1f557ba0 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiClientWorkAction.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiClientWorkAction.java @@ -34,14 +34,15 @@ interface ClientParameters extends AbstractOpenApiWorkAction.OpenApiParameters { ListProperty getAdditionalClientTypeAnnotations(); } + @Override protected void configureBuilder(MicronautCodeGeneratorBuilder builder) { var parameters = getParameters(); builder.forClient(spec -> { - spec.withAuthorization(parameters.getUseAuth().get()); + spec.withAuthorization(parameters.getUseAuth().get()) + .withAdditionalClientTypeAnnotations(parameters.getAdditionalClientTypeAnnotations().getOrElse(List.of())); if (parameters.getClientId().isPresent()) { spec.withClientId(parameters.getClientId().get()); } - spec.withAdditionalClientTypeAnnotations(parameters.getAdditionalClientTypeAnnotations().getOrElse(List.of())); if (parameters.getBasePathSeparator().isPresent()) { spec.withBasePathSeparator(parameters.getBasePathSeparator().get()); } diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerGenerator.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerGenerator.java index 43d81486b..f71345e46 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerGenerator.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerGenerator.java @@ -18,6 +18,7 @@ import org.gradle.api.provider.Property; import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.Optional; @CacheableTask public abstract class OpenApiServerGenerator extends AbstractOpenApiGenerator { @@ -27,6 +28,10 @@ public abstract class OpenApiServerGenerator extends AbstractOpenApiGenerator getUseAuth(); + @Optional + @Input + public abstract Property getAot(); + @Override protected Class getWorkerAction() { return OpenApiServerWorkAction.class; @@ -36,5 +41,6 @@ protected Class getWorkerAction() { protected void configureWorkerParameters(OpenApiServerWorkAction.ServerParameters params) { params.getControllerPackage().set(getControllerPackage()); params.getUseAuth().set(getUseAuth()); + params.getAot().set(getAot()); } } diff --git a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerWorkAction.java b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerWorkAction.java index 5a25b2b23..b27b88e83 100644 --- a/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerWorkAction.java +++ b/openapi-plugin/src/main/java/io/micronaut/gradle/openapi/tasks/OpenApiServerWorkAction.java @@ -23,17 +23,19 @@ interface ServerParameters extends OpenApiParameters { Property getControllerPackage(); Property getUseAuth(); + + Property getAot(); } + @Override protected void configureBuilder(MicronautCodeGeneratorBuilder builder) { var parameters = getParameters(); - builder.forServer(spec -> { - spec.withControllerPackage(parameters.getControllerPackage().get()); - spec.withAuthentication(parameters.getUseAuth().get()); - spec.withGenerateImplementationFiles(false); - spec.withGenerateControllerFromExamples(false); - spec.withGenerateOperationsToReturnNotImplemented(false); - }); + builder.forServer(spec -> spec.withControllerPackage(parameters.getControllerPackage().get()) + .withAuthentication(parameters.getUseAuth().get()) + .withAot(parameters.getAot().get()) + .withGenerateImplementationFiles(false) + .withGenerateControllerFromExamples(false) + .withGenerateOperationsToReturnNotImplemented(false)); } }