diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md index d7be87c2a622..0621af4230c1 100644 --- a/docs/generators/jaxrs-cxf-cdi.md +++ b/docs/generators/jaxrs-cxf-cdi.md @@ -47,6 +47,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |generateBuilders|Whether to generate builders for models| |false| |generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false| |generatePom|Whether to generate pom.xml if the file does not already exist.| |true| +|generateRootResources|Whether to generate the root resource and application classes, only useful if interfaceOnly is true.| |true| |groupId|groupId in generated pom.xml| |org.openapitools| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |false| |ignoreAnyOfInEnum|Ignore anyOf keyword in enum| |false| diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md index c3bb79c787cc..d6251797095b 100644 --- a/docs/generators/jaxrs-spec.md +++ b/docs/generators/jaxrs-spec.md @@ -48,6 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false| |generateJsonCreator|Whether to generate @JsonCreator constructor for required properties.| |true| |generatePom|Whether to generate pom.xml if the file does not already exist.| |true| +|generateRootResources|Whether to generate the root resource and application classes, only useful if interfaceOnly is true.| |true| |groupId|groupId in generated pom.xml| |org.openapitools| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |false| |ignoreAnyOfInEnum|Ignore anyOf keyword in enum| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java index 4b1b5ca83ef3..9f6a73e53b85 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java @@ -52,6 +52,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen { public static final String RETURN_RESPONSE = "returnResponse"; public static final String RETURN_JBOSS_RESPONSE = "returnJBossResponse"; public static final String GENERATE_POM = "generatePom"; + public static final String GENERATE_ROOT_RESOURCES = "generateRootResources"; public static final String USE_SWAGGER_ANNOTATIONS = "useSwaggerAnnotations"; public static final String USE_MICROPROFILE_OPENAPI_ANNOTATIONS = "useMicroProfileOpenAPIAnnotations"; public static final String USE_SWAGGER_V3_ANNOTATIONS = "useSwaggerV3Annotations"; @@ -69,6 +70,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen { public static final String KUMULUZEE_LIBRARY = "kumuluzee"; private boolean interfaceOnly = false; + private boolean generateRootResources = true; private boolean returnResponse = false; private boolean returnJbossResponse = false; private boolean generatePom = true; @@ -156,6 +158,7 @@ public JavaJAXRSSpecServerCodegen() { cliOptions.add(library); cliOptions.add(CliOption.newBoolean(GENERATE_POM, "Whether to generate pom.xml if the file does not already exist.").defaultValue(String.valueOf(generatePom))); cliOptions.add(CliOption.newBoolean(INTERFACE_ONLY, INTERFACE_ONLY_DESC).defaultValue(String.valueOf(interfaceOnly))); + cliOptions.add(CliOption.newBoolean(GENERATE_ROOT_RESOURCES, "Whether to generate the root resource and application classes, only useful if interfaceOnly is true.", generateRootResources)); cliOptions.add(CliOption.newBoolean(RETURN_RESPONSE, "Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true.").defaultValue(String.valueOf(returnResponse))); cliOptions.add(CliOption.newBoolean(RETURN_JBOSS_RESPONSE, "Whether generate API interface should return `org.jboss.resteasy.reactive.RestResponse` instead of a deserialized entity. This flag cannot be combined with `returnResponse` flag. It requires the flag `interfaceOnly` and `useJakartaEE` set to true, because `org.jboss.resteasy.reactive.RestResponse` was introduced in Quarkus 2.x").defaultValue(String.valueOf(returnJbossResponse))); cliOptions.add(CliOption.newBoolean(USE_SWAGGER_ANNOTATIONS, "Whether to generate Swagger annotations.", useSwaggerAnnotations)); @@ -175,6 +178,7 @@ public void processOpts() { convertPropertyToBooleanAndWriteBack(GENERATE_POM, value -> generatePom = value); convertPropertyToBooleanAndWriteBack(INTERFACE_ONLY, value -> interfaceOnly = value); + convertPropertyToBooleanAndWriteBack(GENERATE_ROOT_RESOURCES, value -> generateRootResources = value); convertPropertyToBooleanAndWriteBack(RETURN_RESPONSE, value -> returnResponse = value); convertPropertyToBooleanAndWriteBack(RETURN_JBOSS_RESPONSE, value -> returnJbossResponse = value); convertPropertyToBooleanAndWriteBack(SUPPORT_ASYNC, this::setSupportAsync); @@ -251,7 +255,7 @@ public void processOpts() { supportingFiles.add(new SupportingFile("README.mustache", "", "README.md") .doNotOverwrite()); - if (!interfaceOnly) { + if ((!interfaceOnly) || generateRootResources) { supportingFiles.add(new SupportingFile("RestResourceRoot.mustache", (sourceFolder + '/' + invokerPackage).replace(".", "/"), "RestResourceRoot.java") .doNotOverwrite()); diff --git a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/FILES b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/FILES index dc165c9191f3..4583fd32448c 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/FILES +++ b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/FILES @@ -1,6 +1,8 @@ README.md pom.xml src/gen/java/org/openapitools/api/PetApi.java +src/gen/java/org/openapitools/api/RestApplication.java +src/gen/java/org/openapitools/api/RestResourceRoot.java src/gen/java/org/openapitools/api/StoreApi.java src/gen/java/org/openapitools/api/UserApi.java src/gen/java/org/openapitools/model/Category.java diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestApplication.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestApplication.java new file mode 100644 index 000000000000..7df2d0fe3334 --- /dev/null +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestApplication.java @@ -0,0 +1,9 @@ +package org.openapitools.api; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +@ApplicationPath(RestResourceRoot.APPLICATION_PATH) +public class RestApplication extends Application { + +} diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestResourceRoot.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestResourceRoot.java new file mode 100644 index 000000000000..96ba6c8d8e40 --- /dev/null +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/RestResourceRoot.java @@ -0,0 +1,5 @@ +package org.openapitools.api; + +public class RestResourceRoot { + public static final String APPLICATION_PATH = "/v2"; +} diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/FILES b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/FILES index dc165c9191f3..4583fd32448c 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/FILES +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/FILES @@ -1,6 +1,8 @@ README.md pom.xml src/gen/java/org/openapitools/api/PetApi.java +src/gen/java/org/openapitools/api/RestApplication.java +src/gen/java/org/openapitools/api/RestResourceRoot.java src/gen/java/org/openapitools/api/StoreApi.java src/gen/java/org/openapitools/api/UserApi.java src/gen/java/org/openapitools/model/Category.java diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestApplication.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestApplication.java new file mode 100644 index 000000000000..7df2d0fe3334 --- /dev/null +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestApplication.java @@ -0,0 +1,9 @@ +package org.openapitools.api; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +@ApplicationPath(RestResourceRoot.APPLICATION_PATH) +public class RestApplication extends Application { + +} diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestResourceRoot.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestResourceRoot.java new file mode 100644 index 000000000000..96ba6c8d8e40 --- /dev/null +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/api/RestResourceRoot.java @@ -0,0 +1,5 @@ +package org.openapitools.api; + +public class RestResourceRoot { + public static final String APPLICATION_PATH = "/v2"; +} diff --git a/samples/server/petstore/jaxrs-spec/quarkus-security/.openapi-generator/FILES b/samples/server/petstore/jaxrs-spec/quarkus-security/.openapi-generator/FILES index 9f0c0bb77bb4..877980996c42 100644 --- a/samples/server/petstore/jaxrs-spec/quarkus-security/.openapi-generator/FILES +++ b/samples/server/petstore/jaxrs-spec/quarkus-security/.openapi-generator/FILES @@ -6,6 +6,8 @@ src/gen/java/org/openapitools/api/AdminOrUserApi.java src/gen/java/org/openapitools/api/AnonymousOrAuthenticatedApi.java src/gen/java/org/openapitools/api/AuthenticatedApi.java src/gen/java/org/openapitools/api/PublicApi.java +src/gen/java/org/openapitools/api/RestApplication.java +src/gen/java/org/openapitools/api/RestResourceRoot.java src/main/docker/Dockerfile.jvm src/main/docker/Dockerfile.native src/main/resources/META-INF/openapi.yaml diff --git a/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestApplication.java b/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestApplication.java new file mode 100644 index 000000000000..f6d53b4501db --- /dev/null +++ b/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestApplication.java @@ -0,0 +1,9 @@ +package org.openapitools.api; + +import jakarta.ws.rs.ApplicationPath; +import jakarta.ws.rs.core.Application; + +@ApplicationPath(RestResourceRoot.APPLICATION_PATH) +public class RestApplication extends Application { + +} diff --git a/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestResourceRoot.java b/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestResourceRoot.java new file mode 100644 index 000000000000..727f0dfe3fb3 --- /dev/null +++ b/samples/server/petstore/jaxrs-spec/quarkus-security/src/gen/java/org/openapitools/api/RestResourceRoot.java @@ -0,0 +1,5 @@ +package org.openapitools.api; + +public class RestResourceRoot { + public static final String APPLICATION_PATH = ""; +}