{"record":{"id":"544f6199b5b98727","repo":"quarkusio/quarkus","slug":"creation-logic-not-implemented","errorCode":null,"errorMessage":"Creation logic not implemented","messagePattern":"Creation logic not implemented","errorType":"exception","errorClass":"CreationException","httpStatus":null,"severity":"error","filePath":"independent-projects/arc/runtime/src/main/java/io/quarkus/arc/BeanCreator.java","lineNumber":36,"sourceCode":"    /**\n     *\n     * @param context\n     * @return the contextual instance\n     */\n    default T create(SyntheticCreationalContext<T> context) {\n        return create(context, context.getParams());\n    }\n\n    /**\n     *\n     * @param creationalContext\n     * @param params\n     * @return the contextual instance\n     * @deprecated Use {@link #create(SyntheticCreationalContext)} instead\n     */\n    @Deprecated(forRemoval = true, since = \"3.0\")\n    default T create(CreationalContext<T> creationalContext, Map<String, Object> params) {\n        throw new CreationException(\"Creation logic not implemented\");\n    }\n\n}\n","sourceCodeStart":18,"sourceCodeEnd":40,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/BeanCreator.java#L18-L40","documentation":"BeanCreator's deprecated default create(CreationalContext, Map<String,Object>) is a placeholder that throws CreationException('Creation logic not implemented') unless overridden. It exists only for backward compatibility with pre-3.0 custom bean implementations; since 3.0 the framework calls create(SyntheticCreationalContext) instead.","triggerScenarios":"A custom BeanCreator implementation relies on the deprecated @Deprecated(forRemoval=true, since=\"3.0\") default method without overriding either create overload with real logic, and the container invokes it during instance creation.","commonSituations":"Upgrading from Quarkus 2.x to 3.x where the old callback signature stopped being called; implementing the interface but leaving the body to the default; copy-pasting a stub creator without filling in instantiation code.","solutions":["Override create(SyntheticCreationalContext<T>) in your BeanCreator and move the instantiation logic there.","Remove the deprecated create(CreationalContext, Map) override entirely; params should be carried via SyntheticCreationalContext.getParams().","If a third-party library provides the creator, upgrade it to a Quarkus 3.x-compatible version."],"exampleFix":"// before\npublic class MyCreator implements BeanCreator<Foo> {\n    // no create() implemented -> default throws\n}\n\n// after\npublic class MyCreator implements BeanCreator<Foo> {\n    @Override\n    public Foo create(SyntheticCreationalContext<Foo> ctx) {\n        return new Foo(ctx.getParams().get(\"name\"));\n    }\n}","handlingStrategy":"validation","validationCode":"if (!(creator instanceof MyCreator impl) || !overridesCreate(impl.getClass())) {\n    throw new IllegalStateException(\"BeanCreator must override create(SyntheticCreationalContext)\");\n}","typeGuard":"static <T> boolean hasCreationLogic(BeanCreator<T> c) {\n    try {\n        return BeanCreator.class.getMethod(\"create\", SyntheticCreationalContext.class)\n            .getDeclaringClass() != BeanCreator.class\n            || c.getClass().getDeclaredMethods().length > 0;\n    } catch (NoSuchMethodException e) { return false; }\n}","tryCatchPattern":"try {\n    T instance = creator.create(ctx);\n} catch (CreationException e) {\n    throw new IllegalStateException(\"BeanCreator \" + creator.getClass() + \" has no creation logic (Quarkus 3.x requires create(SyntheticCreationalContext))\", e);\n}","preventionTips":["After upgrading to Quarkus 3+, always implement create(SyntheticCreationalContext) and delete the deprecated two-arg create.","Pass creator params via SyntheticCreationalContext.getParams(), not the old Map parameter.","Write a smoke test that instantiates every custom synthetic bean at startup."],"tags":["arc","cdi","synthetic-bean","deprecated-api","quarkus"],"backgroundTag":"unimplemented-creator-method","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"}