Skip to content

Commit 3fde94a

Browse files
committed
feat: issue-32936 add support for TypeContributor and FunctionContributor
1 parent 5fe1704 commit 3fde94a

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ public static Annotation qualifier(String persistenceUnitName) {
3636
}
3737
}
3838

39-
public static <T> InjectableInstance<T> singleExtensionInstanceForPersistenceUnit(Class<T> beanType,
39+
public static <T> InjectableInstance<T> singleExtensionInstanceForPersistenceUnit(
40+
Class<T> beanType,
4041
String persistenceUnitName,
41-
Annotation... additionalQualifiers) {
42-
InjectableInstance<T> instance = extensionInstanceForPersistenceUnit(beanType, persistenceUnitName,
42+
Annotation... additionalQualifiers
43+
) {
44+
InjectableInstance<T> instance = extensionInstancesForPersistenceUnit(beanType, persistenceUnitName,
4345
additionalQualifiers);
4446
if (instance.isAmbiguous()) {
4547
List<String> ambiguousClassNames = instance.handlesStream().map(h -> h.getBean().getBeanClass().getCanonicalName())
@@ -52,8 +54,11 @@ public static <T> InjectableInstance<T> singleExtensionInstanceForPersistenceUni
5254
return instance;
5355
}
5456

55-
public static <T> InjectableInstance<T> extensionInstanceForPersistenceUnit(Class<T> beanType, String persistenceUnitName,
56-
Annotation... additionalQualifiers) {
57+
public static <T> InjectableInstance<T> extensionInstancesForPersistenceUnit(
58+
Class<T> beanType,
59+
String persistenceUnitName,
60+
Annotation... additionalQualifiers
61+
) {
5762
if (additionalQualifiers.length == 0) {
5863
return Arc.container().select(beanType, new PersistenceUnitExtension.Literal(persistenceUnitName));
5964
} else {

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.concurrent.ConcurrentHashMap;
3030
import java.util.stream.Collectors;
3131

32+
import io.quarkus.hibernate.orm.runtime.PersistenceUnitUtil;
3233
import jakarta.persistence.PersistenceException;
3334
import jakarta.persistence.PersistenceUnitTransactionType;
3435

@@ -39,6 +40,8 @@
3940
import org.hibernate.boot.archive.scan.spi.Scanner;
4041
import org.hibernate.boot.beanvalidation.BeanValidationIntegrator;
4142
import org.hibernate.boot.internal.MetadataImpl;
43+
import org.hibernate.boot.model.FunctionContributor;
44+
import org.hibernate.boot.model.TypeContributor;
4245
import org.hibernate.boot.model.process.spi.ManagedResources;
4346
import org.hibernate.boot.model.process.spi.MetadataBuildingProcess;
4447
import org.hibernate.boot.registry.StandardServiceRegistry;
@@ -188,6 +191,9 @@ public FastBootMetadataBuilder(final QuarkusPersistenceUnitDefinition puDefiniti
188191

189192
applyMetadataBuilderContributor();
190193

194+
applyTypeContributors();
195+
applyFunctionContributors();
196+
191197
// Unable to automatically handle:
192198
// AvailableSettings.ENHANCER_ENABLE_DIRTY_TRACKING,
193199
// AvailableSettings.ENHANCER_ENABLE_LAZY_INITIALIZATION,
@@ -663,6 +669,16 @@ private void applyMetadataBuilderContributor() {
663669
}
664670
}
665671

672+
private void applyTypeContributors() {
673+
PersistenceUnitUtil.extensionInstancesForPersistenceUnit(TypeContributor.class, persistenceUnit.getName())
674+
.stream().forEach(metamodelBuilder::applyTypes);
675+
}
676+
677+
private void applyFunctionContributors() {
678+
PersistenceUnitUtil.extensionInstancesForPersistenceUnit(FunctionContributor.class, persistenceUnit.getName())
679+
.stream().forEach(metamodelBuilder::applyFunctions);
680+
}
681+
666682
@SuppressWarnings("unchecked")
667683
private <T> T loadSettingInstance(String settingName, Object settingValue, Class<T> clazz) {
668684
T instance = null;

0 commit comments

Comments
 (0)