{"record":{"id":"37dc39ba2d1df95f","repo":"quarkusio/quarkus","slug":"creationalcontext-must-be-an-instances-of-creati","errorCode":null,"errorMessage":"CreationalContext must be an instances of ${CreationalContextImpl.class}","messagePattern":"CreationalContext must be an instances of (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/BeanManagerImpl.java","lineNumber":101,"sourceCode":"    @Override\n    public Object getInjectableReference(InjectionPoint ij, CreationalContext<?> ctx) {\n        Objects.requireNonNull(ij, \"InjectionPoint is null\");\n        Objects.requireNonNull(ctx, \"CreationalContext is null\");\n        if (ctx instanceof CreationalContextImpl) {\n            Set<Bean<?>> beans = getBeans(ij.getType(), ij.getQualifiers().toArray(new Annotation[] {}));\n            if (beans.isEmpty()) {\n                throw new UnsatisfiedResolutionException();\n            }\n            InjectableBean<?> bean = (InjectableBean<?>) resolve(beans);\n            InjectionPoint prev = InjectionPointProvider.setCurrent(ctx, ij);\n            try {\n                return ArcContainerImpl.beanInstanceHandle(bean, (CreationalContextImpl) ctx,\n                        null, null, true).get();\n            } finally {\n                InjectionPointProvider.setCurrent(ctx, prev);\n            }\n        }\n        throw new IllegalArgumentException(\n                \"CreationalContext must be an instances of \" + CreationalContextImpl.class);\n    }\n\n    @Override\n    public <T> CreationalContext<T> createCreationalContext(Contextual<T> contextual) {\n        return new CreationalContextImpl<>(contextual);\n    }\n\n    @Override\n    public Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers) {\n        return ArcContainerImpl.instance().getBeans(Objects.requireNonNull(beanType), qualifiers);\n    }\n\n    @Override\n    public Set<Bean<?>> getBeans(String name) {\n        return ArcContainerImpl.instance().getBeans(Objects.requireNonNull(name));\n    }\n","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/BeanManagerImpl.java#L83-L119","documentation":"getInjectableReference() requires the CreationalContext argument to be Arc's internal CreationalContextImpl; any other implementation cannot participate in Arc's lifecycle (dependent destruction, interception) and causes this IllegalArgumentException. Note the message contains a typo ('must be an instances of') from the source.","triggerScenarios":"Calling beanManager.getInjectableReference(bean, ctx) where ctx was created by another container, mocked, or hand-implemented rather than returned from beanManager.createCreationalContext().","commonSituations":"Porting Weld code to Quarkus; unit tests stubbing CreationalContext; custom lifecycle management code that wraps or proxies the context.","solutions":["Create the context via beanManager.createCreationalContext(contextual) before calling getInjectableReference","Use Arc.container().beanInstanceHandle(...) or inject the bean directly instead of manual reference creation","In tests, wrap the real CreationalContextImpl rather than stubbing the interface"],"exampleFix":"// before\nbm.getInjectableReference(bean, mock(CreationalContext.class));\n\n// after\nCreationalContext<?> ctx = bm.createCreationalContext(bean);\nbm.getInjectableReference(bean, ctx);","handlingStrategy":"validation","validationCode":"if (!(ctx instanceof CreationalContextImpl)) {\n    ctx = bm.createCreationalContext(bean);\n}\nObject ref = bm.getInjectableReference(bean, ctx);","typeGuard":"boolean isArcContext(CreationalContext<?> c) {\n    return c instanceof CreationalContextImpl;\n}","tryCatchPattern":"try {\n    return bm.getInjectableReference(bean, ctx);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"CreationalContext must be\")) {\n        return bm.getInjectableReference(bean, bm.createCreationalContext(bean));\n    } else throw e;\n}","preventionTips":["Create CreationalContext exclusively via beanManager.createCreationalContext()","Avoid wrapping/proxying CreationalContext in custom lifecycle code","When porting from Weld, replace all Weld context classes with Arc equivalents"],"tags":["cdi","creational-context","illegal-argument"],"backgroundTag":"incompatible-cdi-implementation","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"}