diff --git a/extensions/elytron-security-jdbc/deployment/src/main/java/io/quarkus/elytron/security/jdbc/deployment/ElytronSecurityJdbcProcessor.java b/extensions/elytron-security-jdbc/deployment/src/main/java/io/quarkus/elytron/security/jdbc/deployment/ElytronSecurityJdbcProcessor.java index 4b37ab6b3a991..141b3e0cac21e 100644 --- a/extensions/elytron-security-jdbc/deployment/src/main/java/io/quarkus/elytron/security/jdbc/deployment/ElytronSecurityJdbcProcessor.java +++ b/extensions/elytron-security-jdbc/deployment/src/main/java/io/quarkus/elytron/security/jdbc/deployment/ElytronSecurityJdbcProcessor.java @@ -5,6 +5,7 @@ import org.wildfly.security.auth.server.SecurityRealm; import io.quarkus.agroal.deployment.DataSourceInitializedBuildItem; +import io.quarkus.arc.deployment.BeanContainerBuildItem; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.ExecutionTime; @@ -40,6 +41,7 @@ FeatureBuildItem feature() { @Record(ExecutionTime.STATIC_INIT) void configureJdbcRealmAuthConfig(JdbcRecorder recorder, BuildProducer securityRealm, + BeanContainerBuildItem beanContainerBuildItem, //we need this to make sure ArC is initialized Optional dataSourceInitialized) throws Exception { if (jdbc.enabled) { RuntimeValue realm = recorder.createRealm(jdbc); diff --git a/extensions/elytron-security-jdbc/runtime/src/main/java/io/quarkus/elytron/security/jdbc/JdbcRecorder.java b/extensions/elytron-security-jdbc/runtime/src/main/java/io/quarkus/elytron/security/jdbc/JdbcRecorder.java index 4eb7b47ca74b5..8baf6209befb8 100644 --- a/extensions/elytron-security-jdbc/runtime/src/main/java/io/quarkus/elytron/security/jdbc/JdbcRecorder.java +++ b/extensions/elytron-security-jdbc/runtime/src/main/java/io/quarkus/elytron/security/jdbc/JdbcRecorder.java @@ -41,9 +41,6 @@ public Provider[] get() { } private void registerPrincipalQuery(PrincipalQueryConfig principalQuery, JdbcSecurityRealmBuilder builder) { - if (Arc.container() == null) { - Arc.initialize(); - } DataSource dataSource = (DataSource) principalQuery.datasource .map(name -> Arc.container().instance(name).get()) .orElse(Arc.container().instance(DataSource.class).get()); diff --git a/extensions/elytron-security/deployment/src/main/java/io/quarkus/elytron/security/deployment/ElytronDeploymentProcessor.java b/extensions/elytron-security/deployment/src/main/java/io/quarkus/elytron/security/deployment/ElytronDeploymentProcessor.java index 15b2156ae7c9c..7ae8ed0905087 100644 --- a/extensions/elytron-security/deployment/src/main/java/io/quarkus/elytron/security/deployment/ElytronDeploymentProcessor.java +++ b/extensions/elytron-security/deployment/src/main/java/io/quarkus/elytron/security/deployment/ElytronDeploymentProcessor.java @@ -51,6 +51,15 @@ void services(BuildProducer classes) { classes.produce(new ReflectiveClassBuildItem(true, false, allClasses)); } + @BuildStep + void addBeans(BuildProducer beans) { + + beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronSecurityDomainManager.class)); + beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronTokenIdentityProvider.class)); + beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronPasswordIdentityProvider.class)); + beans.produce(AdditionalBeanBuildItem.unremovableOf(DefaultRoleDecoder.class)); + } + /** * Create the deployment SecurityDomain using the SecurityRealm build items that have been created. * @@ -61,16 +70,9 @@ void services(BuildProducer classes) { */ @BuildStep @Record(ExecutionTime.STATIC_INIT) - SecurityDomainBuildItem build(ElytronRecorder recorder, List realms, - BuildProducer beans) + SecurityDomainBuildItem build(ElytronRecorder recorder, List realms) throws Exception { if (realms.size() > 0) { - - beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronSecurityDomainManager.class)); - beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronTokenIdentityProvider.class)); - beans.produce(AdditionalBeanBuildItem.unremovableOf(ElytronPasswordIdentityProvider.class)); - beans.produce(AdditionalBeanBuildItem.unremovableOf(DefaultRoleDecoder.class)); - // Configure the SecurityDomain.Builder from the main realm SecurityRealmBuildItem realmBuildItem = realms.get(0); RuntimeValue securityDomainBuilder = recorder diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java index 8c998ba8ce85b..e534202a26c13 100644 --- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java +++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java @@ -54,7 +54,6 @@ import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem; -import io.quarkus.deployment.builditem.ApplicationIndexBuildItem; import io.quarkus.deployment.builditem.ArchiveRootBuildItem; import io.quarkus.deployment.builditem.BytecodeTransformerBuildItem; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; @@ -126,7 +125,6 @@ public void build(RecorderContext recorderContext, HibernateOrmRecorder recorder List nonJpaModelBuildItems, List ignorableNonIndexedClassesBuildItems, CombinedIndexBuildItem index, - ApplicationIndexBuildItem applicationIndex, ArchiveRootBuildItem archiveRoot, ApplicationArchivesBuildItem applicationArchivesBuildItem, Optional driverBuildItem,