Skip to content

Commit fd4e51a

Browse files
committed
Restore condition for registering Validator-related classes for reflection in Hibernate ORM extension
1 parent ebab4ce commit fd4e51a

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,16 @@ AdditionalIndexedClassesBuildItem addPersistenceUnitAnnotationToIndex() {
241241
@BuildStep
242242
public void enrollBeanValidationTypeSafeActivatorForReflection(Capabilities capabilities,
243243
BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) {
244-
// Accessed in org.hibernate.boot.beanvalidation.BeanValidationIntegrator.loadTypeSafeActivatorClass
245-
reflectiveClasses.produce(ReflectiveClassBuildItem.builder("org.hibernate.boot.beanvalidation.TypeSafeActivator")
246-
.methods().fields().build());
247-
// Accessed in org.hibernate.boot.beanvalidation.BeanValidationIntegrator.isBeanValidationApiAvailable
248-
reflectiveClasses.produce(ReflectiveClassBuildItem.builder(BeanValidationIntegrator.JAKARTA_BV_CHECK_CLASS)
249-
.constructors(false).build());
244+
if (capabilities.isPresent(Capability.HIBERNATE_VALIDATOR)) {
245+
// BeanValidationIntegrator is only added if this capability is present, see FastBootMetadataBuilder
246+
247+
// Accessed in org.hibernate.boot.beanvalidation.BeanValidationIntegrator.loadTypeSafeActivatorClass
248+
reflectiveClasses.produce(ReflectiveClassBuildItem.builder("org.hibernate.boot.beanvalidation.TypeSafeActivator")
249+
.methods().fields().build());
250+
// Accessed in org.hibernate.boot.beanvalidation.BeanValidationIntegrator.isBeanValidationApiAvailable
251+
reflectiveClasses.produce(ReflectiveClassBuildItem.builder(BeanValidationIntegrator.JAKARTA_BV_CHECK_CLASS)
252+
.constructors(false).build());
253+
}
250254
}
251255

252256
@BuildStep

extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/PersistenceUnitDescriptorBuildItem.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public final class PersistenceUnitDescriptorBuildItem extends MultiBuildItem {
2929
private final List<RecordableXmlMapping> xmlMappings;
3030
private final boolean isReactive;
3131
private final boolean fromPersistenceXml;
32+
private final boolean isHibernateValidatorPresent;
3233
private final Optional<FormatMapperKind> jsonMapper;
3334
private final Optional<FormatMapperKind> xmlMapper;
3435

@@ -43,6 +44,7 @@ public PersistenceUnitDescriptorBuildItem(QuarkusPersistenceUnitDescriptor descr
4344
this.xmlMappings = xmlMappings;
4445
this.isReactive = isReactive;
4546
this.fromPersistenceXml = fromPersistenceXml;
47+
this.isHibernateValidatorPresent = capabilities.isPresent(Capability.HIBERNATE_VALIDATOR);
4648
this.jsonMapper = json(capabilities);
4749
this.xmlMapper = xml(capabilities);
4850
}
@@ -79,10 +81,15 @@ public boolean isFromPersistenceXml() {
7981
return fromPersistenceXml;
8082
}
8183

84+
public boolean isHibernateValidatorPresent() {
85+
return isHibernateValidatorPresent;
86+
}
87+
8288
public QuarkusPersistenceUnitDefinition asOutputPersistenceUnitDefinition(
8389
List<HibernateOrmIntegrationStaticDescriptor> integrationStaticDescriptors) {
8490
return new QuarkusPersistenceUnitDefinition(descriptor, config,
85-
xmlMappings, isReactive, fromPersistenceXml, jsonMapper, xmlMapper, integrationStaticDescriptors);
91+
xmlMappings, isReactive, fromPersistenceXml, isHibernateValidatorPresent,
92+
jsonMapper, xmlMapper, integrationStaticDescriptors);
8693
}
8794

8895
private Optional<FormatMapperKind> json(Capabilities capabilities) {

extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/FastBootMetadataBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ public class FastBootMetadataBuilder {
111111
private final MultiTenancyStrategy multiTenancyStrategy;
112112
private final boolean isReactive;
113113
private final boolean fromPersistenceXml;
114+
private final boolean isHibernateValidatorPresent;
114115
private final List<HibernateOrmIntegrationStaticDescriptor> integrationStaticDescriptors;
115116

116117
@SuppressWarnings("unchecked")
@@ -119,6 +120,7 @@ public FastBootMetadataBuilder(final QuarkusPersistenceUnitDefinition puDefiniti
119120
this.persistenceUnit = puDefinition.getPersistenceUnitDescriptor();
120121
this.isReactive = puDefinition.isReactive();
121122
this.fromPersistenceXml = puDefinition.isFromPersistenceXml();
123+
this.isHibernateValidatorPresent = puDefinition.isHibernateValidatorPresent();
122124
this.additionalIntegrators = additionalIntegrators;
123125
this.preGeneratedProxies = preGeneratedProxies;
124126
this.integrationStaticDescriptors = puDefinition.getIntegrationStaticDescriptors();
@@ -476,7 +478,9 @@ private Dialect extractDialect() {
476478

477479
private Collection<Integrator> getIntegrators() {
478480
LinkedHashSet<Integrator> integrators = new LinkedHashSet<>();
479-
integrators.add(new BeanValidationIntegrator());
481+
if (isHibernateValidatorPresent) {
482+
integrators.add(new BeanValidationIntegrator());
483+
}
480484
integrators.add(new CollectionCacheInvalidator());
481485

482486
for (Class<? extends Integrator> integratorClass : additionalIntegrators) {

extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/QuarkusPersistenceUnitDefinition.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public final class QuarkusPersistenceUnitDefinition {
2121
private final List<RecordableXmlMapping> xmlMappings;
2222
private final boolean isReactive;
2323
private final boolean fromPersistenceXml;
24+
private final boolean isHibernateValidatorPresent;
2425
private final Optional<FormatMapperKind> jsonMapperCreator;
2526
private final Optional<FormatMapperKind> xmlMapperCreator;
2627
private final List<HibernateOrmIntegrationStaticDescriptor> integrationStaticDescriptors;
@@ -31,6 +32,7 @@ public QuarkusPersistenceUnitDefinition(QuarkusPersistenceUnitDescriptor persist
3132
List<RecordableXmlMapping> xmlMappings,
3233
boolean reactive,
3334
boolean fromPersistenceXml,
35+
boolean hibernateValidatorPresent,
3436
Optional<FormatMapperKind> jsonMapperCreator,
3537
Optional<FormatMapperKind> xmlMapperCreator,
3638
List<HibernateOrmIntegrationStaticDescriptor> integrationStaticDescriptors) {
@@ -41,6 +43,7 @@ public QuarkusPersistenceUnitDefinition(QuarkusPersistenceUnitDescriptor persist
4143
this.xmlMappings = xmlMappings;
4244
this.isReactive = reactive;
4345
this.fromPersistenceXml = fromPersistenceXml;
46+
this.isHibernateValidatorPresent = hibernateValidatorPresent;
4447
this.jsonMapperCreator = jsonMapperCreator;
4548
this.xmlMapperCreator = xmlMapperCreator;
4649
this.integrationStaticDescriptors = integrationStaticDescriptors;
@@ -71,6 +74,10 @@ public boolean isFromPersistenceXml() {
7174
return fromPersistenceXml;
7275
}
7376

77+
public boolean isHibernateValidatorPresent() {
78+
return isHibernateValidatorPresent;
79+
}
80+
7481
public Optional<FormatMapperKind> getJsonMapperCreator() {
7582
return jsonMapperCreator;
7683
}

0 commit comments

Comments
 (0)