{"record":{"id":"0396535bf50292de","repo":"quarkusio/quarkus","slug":"no-current-injection-point-found-039653","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/ConfigPropertiesCreator.java","lineNumber":20,"sourceCode":"\nimport java.lang.annotation.Annotation;\n\nimport jakarta.enterprise.inject.spi.Annotated;\nimport jakarta.enterprise.inject.spi.InjectionPoint;\n\nimport org.eclipse.microprofile.config.ConfigProvider;\nimport org.eclipse.microprofile.config.inject.ConfigProperties;\n\nimport io.quarkus.arc.BeanCreator;\nimport io.quarkus.arc.SyntheticCreationalContext;\nimport io.smallrye.config.SmallRyeConfig;\n\npublic class ConfigPropertiesCreator 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            ConfigProperties configProperties = annotated.getAnnotation(ConfigProperties.class);\n            if (configProperties != null) {\n                if (!ConfigProperties.UNCONFIGURED_PREFIX.equals(configProperties.prefix())) {\n                    return configProperties.prefix();\n                }\n            }","sourceCodeStart":2,"sourceCodeEnd":38,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigPropertiesCreator.java#L2-L38","documentation":"Thrown by ConfigPropertiesCreator.create when InjectionPointProvider.getCurrent(context) returns null while creating the synthetic bean for a legacy @ConfigProperties class. The creator reads the injection point to know which properties prefix and class to materialize; when resolution happens outside a bean-creation flow that carries injection point metadata (e.g., bare programmatic lookup), the sentinel guard rejects it because there is no way to infer the target configuration class.","triggerScenarios":"Thrown at extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigPropertiesCreator.java:20 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inject the @ConfigProperties class via normal CDI injection rather than resolving it programmatically without metadata","Migrate from the deprecated @ConfigProperties to a @ConfigMapping interface, which does not depend on an injection point","Ensure the lookup goes through the container (CDI.current().select(...)) within an active bean-creation context"],"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"}