{"record":{"id":"7691a5a85169a7da","repo":"quarkusio/quarkus","slug":"no-current-injection-point-found","errorCode":null,"errorMessage":"No current injection point found","messagePattern":"No current injection point found","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigMappingCreator.java","lineNumber":18,"sourceCode":"package io.quarkus.arc.runtime;\n\nimport jakarta.enterprise.inject.spi.Annotated;\nimport jakarta.enterprise.inject.spi.InjectionPoint;\n\nimport org.eclipse.microprofile.config.ConfigProvider;\n\nimport io.quarkus.arc.BeanCreator;\nimport io.quarkus.arc.SyntheticCreationalContext;\nimport io.smallrye.config.ConfigMapping;\nimport io.smallrye.config.SmallRyeConfig;\n\npublic class ConfigMappingCreator implements BeanCreator<Object> {\n    @Override\n    public Object create(SyntheticCreationalContext<Object> context) {\n        InjectionPoint injectionPoint = context.getInjectedReference(InjectionPoint.class);\n        if (injectionPoint == null) {\n            throw new IllegalStateException(\"No current injection point found\");\n        }\n\n        Class<?> interfaceType = (Class<?>) context.getParams().get(\"type\");\n        String prefix = (String) context.getParams().get(\"prefix\");\n\n        SmallRyeConfig config = (SmallRyeConfig) ConfigProvider.getConfig();\n        return config.getConfigMapping(interfaceType, getPrefixFromInjectionPoint(injectionPoint, prefix));\n    }\n\n    private static String getPrefixFromInjectionPoint(final InjectionPoint injectionPoint, final String prefix) {\n        Annotated annotated = injectionPoint.getAnnotated();\n        if (annotated != null) {\n            ConfigMapping configMapping = annotated.getAnnotation(ConfigMapping.class);\n            if (configMapping != null) {\n                if (!configMapping.prefix().isEmpty()) {\n                    return configMapping.prefix();\n                }\n            }","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigMappingCreator.java#L1-L36","documentation":"Thrown by ConfigMappingCreator.create when InjectionPointProvider.getCurrent(context) returns null while producing a synthetic bean that backs a @ConfigMapping interface. The creator needs the declaring injection point to determine which mapping interface to instantiate; outside a proper bean-creation context (e.g., programmatic lookup with no injection point metadata available), no current InjectionPoint exists and the guard rejects creation.","triggerScenarios":"Thrown at extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigMappingCreator.java:18 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inject the @ConfigMapping interface into a bean instead of obtaining it via Instance.select() with no metadata / programmatic context","Make sure the config mapping interface is registered (annotated @ConfigMapping and discovered) so the synthetic bean resolves normally","Avoid resolving the mapping from a non-CDI thread or outside the container lifecycle"],"exampleFix":null,"handlingStrategy":"type-guard","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-14T00:17:10.932Z"}