{"record":{"id":"24203ecf93d0a1e2","repo":"OpenAPITools/openapi-generator","slug":"you-cannot-combine-returnresponse-and-returnjbo","errorCode":null,"errorMessage":"You cannot combine [returnResponse] and [returnJBossResponse] since they are mutually exclusive","messagePattern":"You cannot combine \\[returnResponse\\] and \\[returnJBossResponse\\] since they are mutually exclusive","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java","lineNumber":296,"sourceCode":"                fileName = openApiSpecFileLocation;\n            }\n            supportingFiles.add(new SupportingFile(\"openapi.mustache\", fileFolder, fileName));\n        }\n\n        if (QUARKUS_LIBRARY.equals(library)) {\n            supportingFiles.add(new SupportingFile(\"application.properties.mustache\", \"src/main/resources\", \"application.properties\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"Dockerfile.jvm.mustache\", \"src/main/docker\", \"Dockerfile.jvm\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"Dockerfile.native.mustache\", \"src/main/docker\", \"Dockerfile.native\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"dockerignore.mustache\", \"\", \".dockerignore\")\n                    .doNotOverwrite());\n            if(returnResponse && returnJbossResponse) {\n              String msg = String.format(Locale.ROOT,\n                  \"You cannot combine [%s] and [%s] since they are mutually exclusive\",\n                  RETURN_RESPONSE, RETURN_JBOSS_RESPONSE);\n              throw new IllegalArgumentException(msg);\n            }\n            if(returnJbossResponse && !useJakartaEe) {\n              String msg = String.format(Locale.ROOT,\n                  \"The [%s] requires [%s] to be true, because org.jboss.resteasy.reactive.RestResponse was introduced in Quarkus 2.x\",\n                  RETURN_JBOSS_RESPONSE, USE_JAKARTA_EE);\n              throw new IllegalArgumentException(msg);\n            }\n        } else if (OPEN_LIBERTY_LIBRARY.equals(library)) {\n            supportingFiles.add(new SupportingFile(\"server.xml.mustache\", \"src/main/liberty/config\", \"server.xml\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"beans.xml.mustache\", \"src/main/webapp/META-INF\", \"beans.xml\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"MANIFEST.MF.mustache\", \"src/main/webapp/META-INF\", \"MANIFEST.MF\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"microprofile-config.properties.mustache\", \"src/main/webapp/META-INF\", \"microprofile-config.properties\")\n                    .doNotOverwrite());\n            supportingFiles.add(new SupportingFile(\"ibm-web-ext.xml.mustache\", \"src/main/webapp/WEB-INF\", \"ibm-web-ext.xml\")\n                    .doNotOverwrite());","sourceCodeStart":278,"sourceCodeEnd":314,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java#L278-L314","documentation":"Thrown by JavaJAXRSSpecServerCodegen.processOpts (quarkus library branch) when returnResponse=true and returnJBossResponse=true at the same time. The two flags select different response wrapper types for generated endpoint signatures — javax.ws.rs.core.Response vs org.jboss.resteasy.reactive.RestResponse — and templates can only emit one signature style. The check runs inside the quarkus supporting-file setup, so it only applies with --library quarkus.","triggerScenarios":"Passing --additional-properties returnResponse=true,returnJBossResponse=true to -g jaxrs-jersey --library quarkus. Happens when a config that already used returnResponse gains the newer returnJBossResponse during a Quarkus/RESTEasy Reactive migration without removing the old flag.","commonSituations":"Adopting RESTEasy Reactive (Quarkus 2.x+): teams add returnJBossResponse=true to get RestResponse signatures but leave returnResponse=true from the previous setup. Shared config presets accumulate response-style flags over time.","solutions":["Choose one response style: for RESTEasy Reactive use returnJBossResponse=true and remove returnResponse (also set useJakartaEe=true, see error 138)","For plain JAX-RS Response signatures keep returnResponse=true and remove returnJBossResponse","Grep stored configs and CI pipelines for both keys; keep exactly one","When migrating response styles, do flag swaps atomically in the same commit to avoid mixed states"],"exampleFix":"# before\nopenapi-generator-cli generate -g jaxrs-jersey -i api.yaml --library quarkus \\\n  --additional-properties returnResponse=true,returnJBossResponse=true\n\n# after\nopenapi-generator-cli generate -g jaxrs-jersey -i api.yaml --library quarkus \\\n  --additional-properties returnJBossResponse=true,useJakartaEe=true","handlingStrategy":"validation","validationCode":"boolean returnResponse = Boolean.parseBoolean(String.valueOf(opts.getOrDefault(\"returnResponse\", \"false\")));\nboolean returnJBoss = Boolean.parseBoolean(String.valueOf(opts.getOrDefault(\"returnJBossResponse\", \"false\")));\nif (returnResponse && returnJBoss) {\n    throw new IllegalArgumentException(\"returnResponse and returnJBossResponse are mutually exclusive\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    generator.generate();\n} catch (IllegalArgumentException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"mutually exclusive\")) {\n        throw new ConfigException(\"Choose one response wrapper: returnResponse (JAX-RS Response) or returnJBossResponse (RestResponse)\", e);\n    }\n    throw e;\n}","preventionTips":["Expose a single 'responseStyle=response|jboss' setting in your wrapper and map it to exactly one flag","During RESTEasy Reactive migration, remove returnResponse in the same commit that adds returnJBossResponse","Lint quarkus configs for flag pairs known to conflict (response wrappers, annotation systems)"],"tags":["java","jaxrs","quarkus","openapi-generator","resteasy","configuration","mutually-exclusive"],"backgroundTag":"mutually-exclusive-flags","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}