{"record":{"id":"b5163d75d8e721fc","repo":"quarkusio/quarkus","slug":"unimplemented","errorCode":null,"errorMessage":"Unimplemented","messagePattern":"Unimplemented","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/resteasy-reactive/rest-client-jaxrs/deployment/src/main/java/io/quarkus/jaxrs/client/reactive/deployment/JaxrsClientReactiveProcessor.java","lineNumber":3125,"sourceCode":"                            pathParam.getPathParamName(),\n                            pathParam.extract(creator, param), pathParam.getParamType(), client,\n                            getGenericTypeFromParameter(creator, beanParamDescriptorField, item.fieldName()),\n                            getAnnotationsFromParameter(creator, beanParamDescriptorField, item.fieldName()));\n                    break;\n                case FORM_PARAM:\n                    FormParamItem formParam = (FormParamItem) item;\n                    addFormParam(jandexMethod, creator, formParam.getFormParamName(), formParam.extract(creator, param),\n                            formParam.getParamType(), formParam.getParamSignature(),\n                            index,\n                            restClientInterfaceClassName, client,\n                            formParams,\n                            getGenericTypeFromParameter(creator, beanParamDescriptorField, item.fieldName()),\n                            getAnnotationsFromParameter(creator, beanParamDescriptorField, item.fieldName()),\n                            multipart, formParam.getMimeType(), formParam.getFileName(),\n                            beanParamClass + \".\" + formParam.getSourceName());\n                    break;\n                default:\n                    throw new IllegalStateException(\"Unimplemented\");\n            }\n        }\n    }\n\n    private ResultHandle getGenericTypeFromParameter(BytecodeCreator creator, Supplier<FieldDescriptor> supplier,\n            String name) {\n        // Will return Map<String, ParameterDescriptorFromClassSupplier.ParameterDescriptor>\n        ResultHandle map = creator.invokeInterfaceMethod(ofMethod(Supplier.class, \"get\", Object.class),\n                creator.readStaticField(supplier.get()));\n        // Will return ParameterDescriptorFromClassSupplier.ParameterDescriptor;\n        ResultHandle value = creator.invokeInterfaceMethod(ofMethod(Map.class, \"get\", Object.class, Object.class),\n                map, creator.load(name));\n        // if (value != null) return value.genericType;\n        AssignableResultHandle genericType = creator.createVariable(java.lang.reflect.Type.class);\n        BranchResult ifBranch = creator.ifNotNull(value);\n        BytecodeCreator ifNotNull = ifBranch.trueBranch();\n        ifNotNull.assign(genericType, ifNotNull.readInstanceField(\n                FieldDescriptor.of(ParameterDescriptorFromClassSupplier.ParameterDescriptor.class, \"genericType\",","sourceCodeStart":3107,"sourceCodeEnd":3143,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest-client-jaxrs/deployment/src/main/java/io/quarkus/jaxrs/client/reactive/deployment/JaxrsClientReactiveProcessor.java#L3107-L3143","documentation":"While generating bytecode for form/body parameter handling of a client method, the code encountered a parameter category (an enum in the switch) that has no generation logic implemented. This is an internal 'should never happen' guard — a code path for that parameter kind was never written.","triggerScenarios":"Hitting a parameter handling enum value (a form/body parameter classification) that the processor's switch over categories does not cover — typically via an exotic combination of annotations (@FormParam inside BeanParam with multipart, unusual parameter kinds) that reaches an unimplemented default branch.","commonSituations":"New or rare annotation combinations on client method parameters; Quarkus bugs where a new parameter category was added without extending this switch; unusual BeanParam + multipart mixes.","solutions":["Simplify the method signature — remove the exotic parameter combination (e.g. move multipart fields out of a BeanParam)","Report a Quarkus bug with a reproducer (this default branch indicates a missing implementation)","Upgrade Quarkus — the missing case may be implemented in a newer version"],"exampleFix":"// before\nvoid upload(@MultipartForm MyBeanParam params);\n// after: flatten\nvoid upload(@RestForm File file, @RestForm String name);","handlingStrategy":"try-catch","validationCode":"// Avoid exotic parameter combinations: don't put @RestForm/@FormParam multipart\n// fields inside a BeanParam; keep signatures to plain annotated params.\nstatic void warnOnBeanParamWithForm(Class<?> client) {\n    for (var m : client.getDeclaredMethods()) {\n        for (var p : m.getParameters()) {\n            if (p.getType().isAnnotationPresent(jakarta.ws.rs.BeanParam.class)) {\n                System.out.println(\"Review: \" + m + \" uses BeanParam — flatten multipart/form fields\");\n            }\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    MyClient client = QuarkusRestClientBuilder.newBuilder().build(MyClient.class);\n} catch (IllegalStateException e) {\n    if (\"Unimplemented\".equals(e.getMessage())) {\n        throw new UnsupportedOperationException(\n            \"Unsupported client parameter shape; simplify the method signature\", e);\n    }\n    throw e;\n}","preventionTips":["Keep client method signatures simple: one body or annotated params only","Avoid BeanParam combined with multipart on REST clients","Upgrade Quarkus if you hit this — it often indicates a missing implementation for a new parameter kind","Report a minimal reproducer to the Quarkus issue tracker"],"tags":["quarkus","rest-client","unimplemented","internal"],"backgroundTag":"unimplemented-code-path","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}