{"record":{"id":"5d29223363040b62","repo":"quarkusio/quarkus","slug":"beanparam-annotation-used-on-a-field-that-is-not-a","errorCode":null,"errorMessage":"BeanParam annotation used on a field that is not an object: \" + beanParamClass.name() + \".\" + fieldInfo.name()","messagePattern":"BeanParam annotation used on a field that is not an object: \" \\+ beanParamClass\\.name\\(\\) \\+ \"\\.\" \\+ fieldInfo\\.name\\(\\)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/client/processor/src/main/java/org/jboss/resteasy/reactive/client/processor/beanparam/BeanParamParser.java","lineNumber":120,"sourceCode":"                            new FieldExtractor(null, fieldInfo.name(), fieldInfo.declaringClass().name().toString()),\n                            fieldInfo.type()),\n                    (annotationValue, getterMethod) -> new MatrixParamItem(getterMethod.name(),\n                            annotationValue != null ? annotationValue : getterName(getterMethod),\n                            getterMethod.hasDeclaredAnnotation(ENCODED),\n                            new GetterExtractor(getterMethod),\n                            getterMethod.returnType())));\n\n            resultList.addAll(paramItemsForFieldsAndMethods(beanParamClass, BEAN_PARAM,\n                    (annotationValue, fieldInfo) -> {\n                        Type type = fieldInfo.type();\n                        if (type.kind() == Type.Kind.CLASS) {\n                            DotName beanParamClassName = type.asClassType().name();\n                            List<Item> subBeanParamItems = parseInternal(index.getClassByName(beanParamClassName), index,\n                                    processedBeanParamClasses);\n                            return new BeanParamItem(fieldInfo.name(), subBeanParamItems, beanParamClassName.toString(),\n                                    new FieldExtractor(null, fieldInfo.name(), fieldInfo.declaringClass().name().toString()));\n                        } else {\n                            throw new IllegalArgumentException(\"BeanParam annotation used on a field that is not an object: \"\n                                    + beanParamClass.name() + \".\" + fieldInfo.name());\n                        }\n                    },\n                    (annotationValue, getterMethod) -> {\n                        Type returnType = getterMethod.returnType();\n                        List<Item> items = parseInternal(index.getClassByName(returnType.name()), index,\n                                processedBeanParamClasses);\n                        return new BeanParamItem(getterMethod.name(), items, beanParamClass.name().toString(),\n                                new GetterExtractor(getterMethod));\n                    }));\n\n            resultList.addAll(paramItemsForFieldsAndMethods(beanParamClass, COOKIE_PARAM,\n                    (annotationValue, fieldInfo) -> new CookieParamItem(fieldInfo.name(), annotationValue,\n                            new FieldExtractor(null, fieldInfo.name(),\n                                    fieldInfo.declaringClass().name().toString()),\n                            fieldInfo.type().name().toString()),\n                    (annotationValue, getterMethod) -> new CookieParamItem(getterMethod.name(), annotationValue,\n                            new GetterExtractor(getterMethod), getterMethod.returnType().name().toString())));","sourceCodeStart":102,"sourceCodeEnd":138,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/client/processor/src/main/java/org/jboss/resteasy/reactive/client/processor/beanparam/BeanParamParser.java#L102-L138","documentation":"Build-time error from BeanParamParser: an @BeanParam annotation was placed on a field whose type is not an object type (a primitive or similar), so the parser cannot recursively extract nested parameters from it. The declaring class and field name are appended to the message.","triggerScenarios":"Thrown at independent-projects/resteasy-reactive/client/processor/src/main/java/org/jboss/resteasy/reactive/client/processor/beanparam/BeanParamParser.java:120 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Give the bean param field a complex/object type that can hold nested REST annotations","Move the REST parameter annotations (@QueryParam, @HeaderParam, ...) directly onto a supported field"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}