type, Annotation... qualifiers);
-
/**
*
* ManagedContext requestContext = beanContainer.requestContext();
@@ -89,6 +83,58 @@ default T instance(Class type, Annotation... qualifiers) {
*/
ManagedContext requestContext();
+ /**
+ * This method is deprecated and will be removed in future versions.
+ * Use {@link #tryResolveBean(Class, Annotation...)} instead.
+ *
+ * Returns a bean instance for given bean type and qualifiers.
+ *
+ * This method follows standard CDI rules meaning that if there are two or more eligible beans, an ambiguous
+ * dependency exception is thrown.
+ * Note that the method is allowed to return {@code null} if there is no matching bean which allows
+ * for fallback implementations.
+ *
+ * @param type
+ * @param qualifiers
+ * @return a bean instance or {@code null} if no matching bean is found
+ */
+ @Deprecated(forRemoval = true)
+ default T beanInstance(Class type, Annotation... qualifiers) {
+ return beanInstanceFactory(type, qualifiers).create().get();
+ }
+
+ /**
+ * This method is deprecated and will be removed in future versions.
+ * Use {@link #tryResolveBean(Class, Annotation...)} instead.
+ *
+ * Use {@link #beanInstance(Class, Annotation...)} instead.
+ *
+ * As opposed to {@link #beanInstance(Class, Annotation...)}, this method does NOT follow CDI
+ * resolution rules and in case of ambiguous resolution performs a choice based on the class type parameter.
+ *
+ * @param type
+ * @param qualifiers
+ * @return a bean instance or {@code null} if no matching bean is found
+ */
+ @Deprecated(forRemoval = true)
+ default T instance(Class type, Annotation... qualifiers) {
+ return instanceFactory(type, qualifiers).create().get();
+ }
+
+ /**
+ * This method is deprecated and will be removed in future versions.
+ * Use {@link #beanInstanceFactory(Class, Annotation...)} instead.
+ *
+ * As opposed to {@link #beanInstanceFactory(Class, Annotation...)}, this method does NOT follow CDI
+ * resolution rules and in case of ambiguous resolution performs a choice based on the class type parameter.
+ *
+ * @param type
+ * @param qualifiers
+ * @return a bean instance factory, never {@code null}
+ */
+ @Deprecated(forRemoval = true)
+ Factory instanceFactory(Class type, Annotation... qualifiers);
+
interface Factory {
Factory EMPTY = new Factory() {
diff --git a/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/BeanContainerImpl.java b/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/BeanContainerImpl.java
index 8f93f767bcadbe..f183ee88454b19 100644
--- a/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/BeanContainerImpl.java
+++ b/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/BeanContainerImpl.java
@@ -1,7 +1,6 @@
package io.quarkus.arc.runtime;
import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.function.Supplier;
@@ -21,6 +20,17 @@ class BeanContainerImpl implements BeanContainer {
this.container = container;
}
+ @Override
+ public ArcContainer container() {
+ return container;
+ }
+
+ @Override
+ public T tryResolveBean(Class beanType, Annotation... beanQualifiers) {
+ Supplier> instanceHandleSupplier = container.beanInstanceSupplier(beanType, beanQualifiers);
+ return instanceHandleSupplier == null ? null : instanceHandleSupplier.get().get();
+ }
+
@Override
public Factory beanInstanceFactory(Class type, Annotation... qualifiers) {
Supplier> handleSupplier = container.beanInstanceSupplier(type, qualifiers);
@@ -38,7 +48,8 @@ private Factory createFactory(Supplier> handleSupplier,
LOGGER.debugf(
"No matching bean found for type %s and qualifiers %s. The bean might have been marked as unused and removed during build.",
type, Arrays.toString(qualifiers));
- return new DefaultInstanceFactory<>(type);
+ // factories can return null if there is no bean, so we return empty factory
+ return (Factory) Factory.EMPTY;
}
return new Factory() {
@Override
@@ -64,28 +75,4 @@ public ManagedContext requestContext() {
return container.requestContext();
}
- private static final class DefaultInstanceFactory implements BeanContainer.Factory {
-
- private final Class type;
-
- DefaultInstanceFactory(Class type) {
- this.type = type;
- }
-
- @Override
- public BeanContainer.Instance create() {
- try {
- T instance = type.getDeclaredConstructor().newInstance();
- return new BeanContainer.Instance() {
- @Override
- public T get() {
- return instance;
- }
- };
- } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
}
diff --git a/extensions/elytron-security/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronRecorder.java b/extensions/elytron-security/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronRecorder.java
index 70e68707ef4a98..65827e1fa86f0a 100644
--- a/extensions/elytron-security/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronRecorder.java
+++ b/extensions/elytron-security/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronRecorder.java
@@ -31,7 +31,7 @@ public void runLoadTask(Runnable runnable) {
}
public void setDomainForIdentityProvider(BeanContainer bc, RuntimeValue domain) {
- bc.beanInstance(ElytronSecurityDomainManager.class).setDomain(domain.getValue());
+ bc.resolveBean(ElytronSecurityDomainManager.class).setDomain(domain.getValue());
}
/**
diff --git a/extensions/funqy/funqy-google-cloud-functions/runtime/src/main/java/io/quarkus/funqy/gcp/functions/FunqyCloudFunctionsBindingRecorder.java b/extensions/funqy/funqy-google-cloud-functions/runtime/src/main/java/io/quarkus/funqy/gcp/functions/FunqyCloudFunctionsBindingRecorder.java
index 4ae45066d22e20..c584096da8257c 100644
--- a/extensions/funqy/funqy-google-cloud-functions/runtime/src/main/java/io/quarkus/funqy/gcp/functions/FunqyCloudFunctionsBindingRecorder.java
+++ b/extensions/funqy/funqy-google-cloud-functions/runtime/src/main/java/io/quarkus/funqy/gcp/functions/FunqyCloudFunctionsBindingRecorder.java
@@ -32,7 +32,7 @@ public class FunqyCloudFunctionsBindingRecorder {
public void init(BeanContainer bc) {
beanContainer = bc;
- objectMapper = beanContainer.beanInstance(ObjectMapper.class);
+ objectMapper = beanContainer.resolveBean(ObjectMapper.class);
for (FunctionInvoker invoker : FunctionRecorder.registry.invokers()) {
if (invoker.hasInput()) {
diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/auth/GrpcSecurityRecorder.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/auth/GrpcSecurityRecorder.java
index d6635b1b0e7093..0930475441b489 100644
--- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/auth/GrpcSecurityRecorder.java
+++ b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/auth/GrpcSecurityRecorder.java
@@ -21,7 +21,7 @@ public void initGrpcSecurityInterceptor(Map> serviceClassTo
// service to full method names
var svcToMethods = new HashMap>();
- var services = container.beanInstance(GrpcContainer.class).getServices();
+ var services = container.resolveBean(GrpcContainer.class).getServices();
for (BindableService service : services) {
var className = getImplementationClassName(service);
var blockingMethods = serviceClassToBlockingMethod.get(className);
@@ -40,7 +40,7 @@ public void initGrpcSecurityInterceptor(Map> serviceClassTo
}
}
- container.beanInstance(GrpcSecurityInterceptor.class).init(svcToMethods);
+ container.resolveBean(GrpcSecurityInterceptor.class).init(svcToMethods);
}
}
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/HibernateOrmRecorder.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/HibernateOrmRecorder.java
index 5050d7e5c648e8..e33d1e67f77c08 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/HibernateOrmRecorder.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/HibernateOrmRecorder.java
@@ -98,7 +98,7 @@ public Supplier jpaConfigSupplier(HibernateOrmRuntimeConfig config) {
}
public void startAllPersistenceUnits(BeanContainer beanContainer) {
- beanContainer.beanInstance(JPAConfig.class).startAll();
+ beanContainer.resolveBean(JPAConfig.class).startAll();
}
public Function, SessionFactory> sessionFactorySupplier(
diff --git a/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanRecorder.java b/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanRecorder.java
index cae1c6197d2577..803ff6d3887d61 100644
--- a/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanRecorder.java
+++ b/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanRecorder.java
@@ -24,7 +24,7 @@ public class InfinispanRecorder {
public BeanContainerListener configureInfinispan(@RelaxedValidation Map properties) {
return container -> {
- InfinispanClientProducer instance = container.beanInstance(InfinispanClientProducer.class);
+ InfinispanClientProducer instance = container.resolveBean(InfinispanClientProducer.class);
instance.setProperties(properties);
};
}
diff --git a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/TracerRecorder.java b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/TracerRecorder.java
index 163ab17705b613..171ffca2a7e7ac 100644
--- a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/TracerRecorder.java
+++ b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/TracerRecorder.java
@@ -23,7 +23,7 @@ public void setAttributes(
String serviceName,
String serviceVersion) {
- DelayedAttributes delayedAttributes = beanContainer.beanInstance(DelayedAttributes.class);
+ DelayedAttributes delayedAttributes = beanContainer.resolveBean(DelayedAttributes.class);
delayedAttributes.setAttributesDelegate(Resource.getDefault()
.merge(Resource.create(
diff --git a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/InstrumentationRecorder.java b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/InstrumentationRecorder.java
index 9613b7a13eebca..fda1a386c53f71 100644
--- a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/InstrumentationRecorder.java
+++ b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/InstrumentationRecorder.java
@@ -30,7 +30,7 @@ public Consumer getVertxTracingOptions() {
/* RUNTIME INIT */
public void setupVertxTracer(BeanContainer beanContainer) {
- OpenTelemetry openTelemetry = beanContainer.beanInstance(OpenTelemetry.class);
+ OpenTelemetry openTelemetry = beanContainer.resolveBean(OpenTelemetry.class);
OpenTelemetryVertxTracer openTelemetryVertxTracer = new OpenTelemetryVertxTracer(List.of(
new HttpInstrumenterVertxTracer(openTelemetry),
new EventBusInstrumenterVertxTracer(openTelemetry),
diff --git a/extensions/resteasy-reactive/quarkus-resteasy-reactive-common/runtime/src/main/java/io/quarkus/resteasy/reactive/common/runtime/ArcBeanFactory.java b/extensions/resteasy-reactive/quarkus-resteasy-reactive-common/runtime/src/main/java/io/quarkus/resteasy/reactive/common/runtime/ArcBeanFactory.java
index 25656077526e07..ca75a1117c4744 100644
--- a/extensions/resteasy-reactive/quarkus-resteasy-reactive-common/runtime/src/main/java/io/quarkus/resteasy/reactive/common/runtime/ArcBeanFactory.java
+++ b/extensions/resteasy-reactive/quarkus-resteasy-reactive-common/runtime/src/main/java/io/quarkus/resteasy/reactive/common/runtime/ArcBeanFactory.java
@@ -23,27 +23,22 @@ public String toString() {
@Override
public BeanInstance createInstance() {
BeanContainer.Instance instance;
- try {
- instance = factory.create();
- return new BeanInstance() {
- @Override
- public T getInstance() {
- return instance.get();
- }
-
- @Override
- public void close() {
- instance.close();
- }
- };
- } catch (Exception e) {
- if (factory.getClass().getName().contains("DefaultInstanceFactory")) {
- throw new IllegalArgumentException(
- "Unable to create class '" + targetClassName
- + "'. To fix the problem, make sure this class is a CDI bean.",
- e);
- }
- throw e;
+ instance = factory.create();
+ if (instance == null) {
+ throw new IllegalArgumentException(
+ "Unable to create class '" + targetClassName
+ + "'. To fix the problem, make sure this class is a CDI bean.");
}
+ return new BeanInstance() {
+ @Override
+ public T getInstance() {
+ return instance.get();
+ }
+
+ @Override
+ public void close() {
+ instance.close();
+ }
+ };
}
}
diff --git a/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder.java b/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder.java
index 3a74e78586a491..d8a73e3713f854 100644
--- a/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder.java
+++ b/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder.java
@@ -95,7 +95,7 @@ public RuntimeValue createDeployment(DeploymentInfo info,
}
CurrentRequestManager
- .setCurrentRequestInstance(new QuarkusCurrentRequest(beanContainer.beanInstance(CurrentVertxRequest.class)));
+ .setCurrentRequestInstance(new QuarkusCurrentRequest(beanContainer.resolveBean(CurrentVertxRequest.class)));
BlockingOperationSupport.setIoThreadDetector(new BlockingOperationSupport.IOThreadDetector() {
@Override
diff --git a/extensions/security-webauthn/runtime/src/main/java/io/quarkus/security/webauthn/WebAuthnRecorder.java b/extensions/security-webauthn/runtime/src/main/java/io/quarkus/security/webauthn/WebAuthnRecorder.java
index d61bf70b3522ce..5af2d8599c53f5 100644
--- a/extensions/security-webauthn/runtime/src/main/java/io/quarkus/security/webauthn/WebAuthnRecorder.java
+++ b/extensions/security-webauthn/runtime/src/main/java/io/quarkus/security/webauthn/WebAuthnRecorder.java
@@ -32,9 +32,9 @@ public WebAuthnRecorder(RuntimeValue httpConfiguration, Runti
}
public void setupRoutes(BeanContainer beanContainer, RuntimeValue routerValue, String prefix) {
- WebAuthnSecurity security = beanContainer.beanInstance(WebAuthnSecurity.class);
- WebAuthnAuthenticationMechanism authMech = beanContainer.beanInstance(WebAuthnAuthenticationMechanism.class);
- IdentityProviderManager identityProviderManager = beanContainer.beanInstance(IdentityProviderManager.class);
+ WebAuthnSecurity security = beanContainer.resolveBean(WebAuthnSecurity.class);
+ WebAuthnAuthenticationMechanism authMech = beanContainer.resolveBean(WebAuthnAuthenticationMechanism.class);
+ IdentityProviderManager identityProviderManager = beanContainer.resolveBean(IdentityProviderManager.class);
WebAuthnController controller = new WebAuthnController(security, config.getValue(), identityProviderManager, authMech);
Router router = routerValue.getValue();
BodyHandler bodyHandler = BodyHandler.create();
diff --git a/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/SmallRyeGraphQLRecorder.java b/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/SmallRyeGraphQLRecorder.java
index 048ac5e65d6222..107ecdacdc59d3 100644
--- a/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/SmallRyeGraphQLRecorder.java
+++ b/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/SmallRyeGraphQLRecorder.java
@@ -26,7 +26,7 @@
public class SmallRyeGraphQLRecorder {
public RuntimeValue createExecutionService(BeanContainer beanContainer, Schema schema) {
- GraphQLProducer graphQLProducer = beanContainer.beanInstance(GraphQLProducer.class);
+ GraphQLProducer graphQLProducer = beanContainer.resolveBean(GraphQLProducer.class);
GraphQLSchema graphQLSchema = graphQLProducer.initialize(schema);
return new RuntimeValue<>(graphQLSchema != null);
}
diff --git a/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java b/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
index b9ebfba6933a34..86b24cebdf5c68 100644
--- a/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
+++ b/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
@@ -194,7 +194,7 @@ public void createRegistries(BeanContainer container) {
//HACK: registration is done via statics, but cleanup is done via pre destroy
//however if the bean is not used it will not be created, so no cleanup will be done
//we force bean creation here to make sure the container can restart correctly
- container.beanInstance(MetricRegistries.class).getApplicationRegistry();
+ container.resolveBean(MetricRegistries.class).getApplicationRegistry();
}
public void dropRegistriesAtShutdown(ShutdownContext shutdownContext) {
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
index 57fc606b1b702d..b048cc97c137e0 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
@@ -46,7 +46,7 @@ public void shutdownTask(ShutdownContext shutdownContext, String devUIBasePath)
public void createJsonRpcRouter(BeanContainer beanContainer,
Map> extensionMethodsMap) {
- JsonRpcRouter jsonRpcRouter = beanContainer.beanInstance(JsonRpcRouter.class);
+ JsonRpcRouter jsonRpcRouter = beanContainer.resolveBean(JsonRpcRouter.class);
jsonRpcRouter.populateJsonRPCMethods(extensionMethodsMap);
jsonRpcRouter.initializeCodec(createJsonMapper());
}
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/continuoustesting/ContinuousTestingRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/continuoustesting/ContinuousTestingRecorder.java
index 3b8cf158298757..734dde6dd3b354 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/continuoustesting/ContinuousTestingRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/continuoustesting/ContinuousTestingRecorder.java
@@ -12,7 +12,7 @@ public class ContinuousTestingRecorder {
public RuntimeValue createContinuousTestingSharedStateManager(BeanContainer beanContainer,
ShutdownContext context) {
ContinuousTestingJsonRPCService continuousTestingJsonRPCService = beanContainer
- .beanInstance(ContinuousTestingJsonRPCService.class);
+ .resolveBean(ContinuousTestingJsonRPCService.class);
ContinuousTestingSharedStateManager.addStateListener(continuousTestingJsonRPCService);
context.addShutdownTask(new Runnable() {
@Override
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/management/ManagementInterfaceSecurityRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/management/ManagementInterfaceSecurityRecorder.java
index 03e6be2d83742e..ec7aa7af1dee7c 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/management/ManagementInterfaceSecurityRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/management/ManagementInterfaceSecurityRecorder.java
@@ -57,7 +57,7 @@ public BeanContainerListener initPermissions(ManagementInterfaceBuildTimeConfig
return new BeanContainerListener() {
@Override
public void created(BeanContainer container) {
- container.beanInstance(ManagementPathMatchingHttpSecurityPolicy.class)
+ container.resolveBean(ManagementPathMatchingHttpSecurityPolicy.class)
.init(buildTimeConfig.auth.permissions, policies, buildTimeConfig.rootPath);
}
};
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/HttpSecurityRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/HttpSecurityRecorder.java
index 84b3ef16064ade..f4c67c8df77b05 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/HttpSecurityRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/HttpSecurityRecorder.java
@@ -93,7 +93,7 @@ public BeanContainerListener initPermissions(HttpBuildTimeConfig buildTimeConfig
return new BeanContainerListener() {
@Override
public void created(BeanContainer container) {
- container.beanInstance(PathMatchingHttpSecurityPolicy.class)
+ container.resolveBean(PathMatchingHttpSecurityPolicy.class)
.init(buildTimeConfig.auth.permissions, policies, buildTimeConfig.rootPath);
}
};
diff --git a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/ArcContainer.java b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/ArcContainer.java
index 8baf18521209eb..1f8928cdf5e192 100644
--- a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/ArcContainer.java
+++ b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/ArcContainer.java
@@ -88,12 +88,6 @@ public interface ArcContainer {
/**
* Returns a supplier that can be used to create new instances, or null if no matching bean can be found.
*
- * Note that if there are multiple sub classes of the given type this will return the exact match. This means
- * that this can be used to directly instantiate superclasses of other beans without causing problems. This behavior differs
- * to standard CDI rules where an ambiguous dependency would exist.
- *
- * see https://github.com/quarkusio/quarkus/issues/3369
- *
* @param type
* @param qualifiers
* @param
diff --git a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/ArcContainerImpl.java b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/ArcContainerImpl.java
index 12f6a9ad0a65b9..30f03118024669 100644
--- a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/ArcContainerImpl.java
+++ b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/ArcContainerImpl.java
@@ -291,12 +291,12 @@ public InstanceHandle instance(Type type, Annotation... qualifiers) {
@Override
public Supplier> beanInstanceSupplier(Class type, Annotation... qualifiers) {
- return createInstanceSupplier(false, type, qualifiers);
+ return createInstanceSupplier(true, type, qualifiers);
}
@Override
public Supplier> instanceSupplier(Class type, Annotation... qualifiers) {
- return createInstanceSupplier(true, type, qualifiers);
+ return createInstanceSupplier(false, type, qualifiers);
}
private Supplier> createInstanceSupplier(boolean resolveAmbiguities, Class type,
diff --git a/integration-tests/maven/src/test/resources-filtered/projects/extension-removed-resources/extension/runtime/src/main/java/org/acme/AcmeRecorder.java b/integration-tests/maven/src/test/resources-filtered/projects/extension-removed-resources/extension/runtime/src/main/java/org/acme/AcmeRecorder.java
index 283d59c9593612..7da1e21272e067 100644
--- a/integration-tests/maven/src/test/resources-filtered/projects/extension-removed-resources/extension/runtime/src/main/java/org/acme/AcmeRecorder.java
+++ b/integration-tests/maven/src/test/resources-filtered/projects/extension-removed-resources/extension/runtime/src/main/java/org/acme/AcmeRecorder.java
@@ -9,7 +9,7 @@
public class AcmeRecorder {
public void recordWords(BeanContainer beanContainer, List words, String classLoaderName) {
- var bean = beanContainer.beanInstance(RecordedWords.class);
+ var bean = beanContainer.resolveBean(RecordedWords.class);
bean.setWords(words);
bean.setClassLoaderName(classLoaderName);
}
diff --git a/integration-tests/test-extension/extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java b/integration-tests/test-extension/extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java
index ae6cf57794b9ab..e0744102adf849 100644
--- a/integration-tests/test-extension/extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java
+++ b/integration-tests/test-extension/extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java
@@ -54,7 +54,7 @@ public void startRuntimeService(ShutdownContext shutdownContext, RuntimeValue