Skip to content

Commit

Permalink
[Blazebit#1998] Upgrade to Quarkus 3.8 and switch to @ConfigMapping
Browse files Browse the repository at this point in the history
At some point in the future, we will retire the legacy config classes so
let's migrate to the new @ConfigMapping infrastructure.

I was conservative and only updated to Quarkus 3.8.

Note that there might be more optimizations possible with having all
elements in a single map but I tried to be as less intrusive as possible
as I don't know the codebase.
  • Loading branch information
gsmet committed Feb 14, 2025
1 parent 0431d36 commit 3c4d46f
Show file tree
Hide file tree
Showing 12 changed files with 138 additions and 141 deletions.
21 changes: 20 additions & 1 deletion examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,25 @@
<activation>
<jdk>[11,)</jdk>
</activation>
<modules>
<module>showcase</module>
<module>deltaspike-data-rest</module>
<module>spring-data-webmvc</module>
<module>spring-data-webflux</module>
<module>spring-data-graphql</module>
<module>spring-data-spqr</module>
<module>spring-data-dgs</module>
<module>spring-hateoas</module>
<module>it-service-management</module>
<module>quarkus</module>
<module>microprofile-graphql</module>
</modules>
</profile>
<profile>
<id>jdk17+</id>
<activation>
<jdk>[17,)</jdk>
</activation>
<modules>
<module>showcase</module>
<module>deltaspike-data-rest</module>
Expand All @@ -55,4 +74,4 @@
</profile>
</profiles>

</project>
</project>
6 changes: 3 additions & 3 deletions examples/quarkus-3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
</modules>

<properties>
<main.java.version>11</main.java.version>
<version.jandex>3.0.5</version.jandex>
<main.java.version>17</main.java.version>
<version.jandex>3.1.6</version.jandex>
<version.hibernate-orm>${version.hibernate-6.2}</version.hibernate-orm>
</properties>

Expand All @@ -38,4 +38,4 @@
</dependency>
</dependencies>
</dependencyManagement>
</project>
</project>
1 change: 0 additions & 1 deletion integration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@
<module>graphql-dgs</module>
<module>querydsl</module>
<module>quarkus</module>
<module>quarkus-3</module>

<module>jpa-base-jar</module>
<module>openjpa-jar</module>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
package com.blazebit.persistence.integration.quarkus.deployment;

import com.blazebit.persistence.CriteriaBuilderFactory;
import com.blazebit.persistence.integration.quarkus.runtime.BlazePersistenceConfiguration;
import com.blazebit.persistence.integration.quarkus.runtime.BlazePersistenceInstance;
import com.blazebit.persistence.integration.quarkus.runtime.BlazePersistenceInstanceConfiguration;
import com.blazebit.persistence.integration.quarkus.runtime.BlazePersistenceInstanceUtil;
import com.blazebit.persistence.integration.quarkus.runtime.EntityViewRecorder;
import com.blazebit.persistence.view.EntityViewManager;
Expand All @@ -21,13 +21,13 @@
import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.hibernate.orm.runtime.PersistenceUnitUtil;
import jakarta.enterprise.inject.Default;
import jakarta.inject.Singleton;
import org.jboss.jandex.AnnotationTarget;
import org.jboss.jandex.AnnotationValue;
import org.jboss.jandex.DotName;
import org.jboss.jandex.FieldInfo;

import jakarta.enterprise.inject.Default;
import jakarta.inject.Singleton;
import java.util.List;
import java.util.function.Supplier;

Expand Down Expand Up @@ -91,6 +91,7 @@ public void transform(TransformationContext transformationContext) {
@Record(ExecutionTime.RUNTIME_INIT)
@BuildStep
void generateBeans(EntityViewRecorder recorder,
BlazePersistenceConfiguration blazePersistenceConfig,
List<BlazePersistenceInstanceDescriptorBuildItem> blazePersistenceDescriptors,
BuildProducer<AdditionalBeanBuildItem> additionalBeans,
BuildProducer<SyntheticBeanBuildItem> syntheticBeanBuildItemBuildProducer) {
Expand All @@ -106,8 +107,8 @@ void generateBeans(EntityViewRecorder recorder,
if (blazePersistenceDescriptors.size() == 1) {
BlazePersistenceInstanceDescriptorBuildItem blazePersistenceDescriptor = blazePersistenceDescriptors.get(0);
String blazePersistenceInstanceName = blazePersistenceDescriptor.getBlazePersistenceInstanceName();
BlazePersistenceInstanceConfiguration blazePersistenceConfig = blazePersistenceDescriptor.getBlazePersistenceConfig();
String persistenceUnitName = blazePersistenceConfig.persistenceUnit.orElse(PersistenceUnitUtil.DEFAULT_PERSISTENCE_UNIT_NAME);
String persistenceUnitName = blazePersistenceConfig.blazePersistenceInstances().get(blazePersistenceInstanceName)
.persistenceUnit().orElse(PersistenceUnitUtil.DEFAULT_PERSISTENCE_UNIT_NAME);

syntheticBeanBuildItemBuildProducer
.produce(createSyntheticBean(blazePersistenceInstanceName,
Expand All @@ -133,8 +134,8 @@ void generateBeans(EntityViewRecorder recorder,

for (BlazePersistenceInstanceDescriptorBuildItem blazePersistenceDescriptor : blazePersistenceDescriptors) {
String blazePersistenceInstanceName = blazePersistenceDescriptor.getBlazePersistenceInstanceName();
BlazePersistenceInstanceConfiguration blazePersistenceConfig = blazePersistenceDescriptor.getBlazePersistenceConfig();
String persistenceUnitName = blazePersistenceConfig.persistenceUnit.orElse(PersistenceUnitUtil.DEFAULT_PERSISTENCE_UNIT_NAME);
String persistenceUnitName = blazePersistenceConfig.blazePersistenceInstances().get(blazePersistenceInstanceName)
.persistenceUnit().orElse(PersistenceUnitUtil.DEFAULT_PERSISTENCE_UNIT_NAME);
boolean defaultBlazePersistenceInstance = BlazePersistenceInstanceUtil.isDefaultBlazePersistenceInstance(blazePersistenceInstanceName);

syntheticBeanBuildItemBuildProducer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
*/
package com.blazebit.persistence.integration.quarkus.deployment;

import com.blazebit.persistence.integration.quarkus.runtime.BlazePersistenceInstanceConfiguration;
import io.quarkus.builder.item.MultiBuildItem;

import java.util.Set;
Expand All @@ -15,13 +14,11 @@
*/
public final class BlazePersistenceInstanceDescriptorBuildItem extends MultiBuildItem {
private final String blazePersistenceInstanceName;
private final BlazePersistenceInstanceConfiguration blazePersistenceConfig;
private final Set<String> entityViewClasses;
private final Set<String> entityViewListenerClasses;

public BlazePersistenceInstanceDescriptorBuildItem(String blazePersistenceInstanceName, BlazePersistenceInstanceConfiguration blazePersistenceConfig, Set<String> entityViewClasses, Set<String> entityViewListenerClasses) {
public BlazePersistenceInstanceDescriptorBuildItem(String blazePersistenceInstanceName, Set<String> entityViewClasses, Set<String> entityViewListenerClasses) {
this.blazePersistenceInstanceName = blazePersistenceInstanceName;
this.blazePersistenceConfig = blazePersistenceConfig;
this.entityViewClasses = entityViewClasses;
this.entityViewListenerClasses = entityViewListenerClasses;
}
Expand All @@ -30,10 +27,6 @@ public String getBlazePersistenceInstanceName() {
return blazePersistenceInstanceName;
}

public BlazePersistenceInstanceConfiguration getBlazePersistenceConfig() {
return blazePersistenceConfig;
}

public Set<String> getEntityViewClasses() {
return entityViewClasses;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,9 @@ void addBlazePersistenceEntities(BuildProducer<AdditionalJpaModelBuildItem> jpaM
@BuildStep
void includeArchivesHostingEntityViewPackagesInIndex(BlazePersistenceConfiguration blazePersistenceConfig,
BuildProducer<AdditionalApplicationArchiveMarkerBuildItem> additionalApplicationArchiveMarkers) {
if (blazePersistenceConfig.defaultBlazePersistence.packages.isPresent()) {
for (String pakkage : blazePersistenceConfig.defaultBlazePersistence.packages.get()) {
additionalApplicationArchiveMarkers
.produce(new AdditionalApplicationArchiveMarkerBuildItem(pakkage.replace('.', '/')));
}
}
for (BlazePersistenceInstanceConfiguration blazePersistenceInstanceConfig : blazePersistenceConfig.blazePersistenceInstances.values()) {
if (blazePersistenceInstanceConfig.packages.isPresent()) {
for (String pakkage : blazePersistenceInstanceConfig.packages.get()) {
for (BlazePersistenceInstanceConfiguration blazePersistenceInstanceConfig : blazePersistenceConfig.blazePersistenceInstances().values()) {
if (blazePersistenceInstanceConfig.packages().isPresent()) {
for (String pakkage : blazePersistenceInstanceConfig.packages().get()) {
additionalApplicationArchiveMarkers
.produce(new AdditionalApplicationArchiveMarkerBuildItem(pakkage.replace('.', '/')));
}
Expand Down Expand Up @@ -149,8 +143,8 @@ void buildBlazePersistenceInstanceDescriptors(EntityViewsBuildItem entityViewsBu
.filter(pu -> PersistenceUnitUtil.isDefaultPersistenceUnit(pu.getPersistenceUnitName()))
.findFirst();
boolean enableDefaultBlazePersistence = (defaultPersistenceUnit.isPresent()
&& blazePersistenceConfig.blazePersistenceInstances.isEmpty())
|| blazePersistenceConfig.defaultBlazePersistence.isAnyPropertySet();
&& blazePersistenceConfig.namedBlazePersistenceInstances().isEmpty())
|| blazePersistenceConfig.defaultBlazePersistenceInstance().isAnyPropertySet();
boolean hasPackagesInQuarkusConfig = hasPackagesInQuarkusConfig(blazePersistenceConfig);
Collection<AnnotationInstance> packageLevelBlazePersistenceInstanceAnnotations = getPackageLevelBlazePersistenceInstanceAnnotations(
indexBuildItem.getIndex()
Expand All @@ -159,7 +153,7 @@ void buildBlazePersistenceInstanceDescriptors(EntityViewsBuildItem entityViewsBu
Map<String, Set<String>> entityViewListenerClassesPerBlazePersistenceInstance;
Set<String> entityViewClassesForDefaultBlazePersistenceInstance;
Set<String> entityViewListenerClassesForDefaultBlazePersistenceInstance;
if (enableDefaultBlazePersistence && blazePersistenceConfig.blazePersistenceInstances.isEmpty() &&
if (enableDefaultBlazePersistence && blazePersistenceConfig.namedBlazePersistenceInstances().isEmpty() &&
!hasPackagesInQuarkusConfig && packageLevelBlazePersistenceInstanceAnnotations.isEmpty()) {
// Only the default Blaze-Persistence instance exists and no package or annotation configuration is specified.
// In this case we just assign all entity views to the default instance.
Expand Down Expand Up @@ -193,11 +187,10 @@ void buildBlazePersistenceInstanceDescriptors(EntityViewsBuildItem entityViewsBu
if (enableDefaultBlazePersistence) {
blazePersistenceDescriptorBuildItemProducer.produce(new BlazePersistenceInstanceDescriptorBuildItem(
BlazePersistenceInstanceUtil.DEFAULT_BLAZE_PERSISTENCE_NAME,
blazePersistenceConfig.defaultBlazePersistence,
entityViewClassesForDefaultBlazePersistenceInstance,
entityViewListenerClassesForDefaultBlazePersistenceInstance));
} else if ((!blazePersistenceConfig.defaultBlazePersistence.persistenceUnit.isPresent()
|| PersistenceUnitUtil.isDefaultPersistenceUnit(blazePersistenceConfig.defaultBlazePersistence.persistenceUnit.get()))
} else if ((!blazePersistenceConfig.defaultBlazePersistenceInstance().persistenceUnit().isPresent()
|| PersistenceUnitUtil.isDefaultPersistenceUnit(blazePersistenceConfig.defaultBlazePersistenceInstance().persistenceUnit().get()))
&& !defaultPersistenceUnit.isPresent()) {
if (!entityViewClassesForDefaultBlazePersistenceInstance.isEmpty()) {
LOG.warn(
Expand All @@ -209,16 +202,16 @@ void buildBlazePersistenceInstanceDescriptors(EntityViewsBuildItem entityViewsBu
}
}

for (Map.Entry<String, BlazePersistenceInstanceConfiguration> namedInstance : blazePersistenceConfig.blazePersistenceInstances
for (Map.Entry<String, BlazePersistenceInstanceConfiguration> namedInstance : blazePersistenceConfig.namedBlazePersistenceInstances()
.entrySet()) {
BlazePersistenceInstanceConfiguration blazePersistenceInstanceConfig = namedInstance.getValue();
if (blazePersistenceInstanceConfig.persistenceUnit.isPresent()) {
if (blazePersistenceInstanceConfig.persistenceUnit().isPresent()) {
persistenceUnitDescriptors.stream()
.filter(descriptor -> blazePersistenceInstanceConfig.persistenceUnit.get().equals(descriptor.getPersistenceUnitName()))
.filter(descriptor -> blazePersistenceInstanceConfig.persistenceUnit().get().equals(descriptor.getPersistenceUnitName()))
.findFirst()
.orElseThrow(() -> new ConfigurationException(
String.format("The persistence unit '%1$s' is not configured but the Blaze-Persistence instance '%2$s' uses it.",
blazePersistenceInstanceConfig.persistenceUnit.get(), namedInstance.getKey())));
blazePersistenceInstanceConfig.persistenceUnit().get(), namedInstance.getKey())));
} else {
if (!BlazePersistenceInstanceUtil.isDefaultBlazePersistenceInstance(namedInstance.getKey())) {
// if it's not the default Blaze-Persistence instance, we mandate a persistence unit to prevent common errors
Expand All @@ -235,7 +228,6 @@ void buildBlazePersistenceInstanceDescriptors(EntityViewsBuildItem entityViewsBu

blazePersistenceDescriptorBuildItemProducer.produce(new BlazePersistenceInstanceDescriptorBuildItem(
namedInstance.getKey(),
namedInstance.getValue(),
entityViewClassesPerBlazePersistenceInstance.getOrDefault(namedInstance.getKey(), Collections.emptySet()),
entityViewListenerClassesPerBlazePersistenceInstance.getOrDefault(namedInstance.getKey(), Collections.emptySet())));
}
Expand Down Expand Up @@ -457,24 +449,11 @@ private static Map<String, Set<String>> mapBlazePersistenceInstancesToPackages(B
"Mixing Quarkus configuration and @BlazePersistenceInstance annotations to define the Blaze-Persistence instances is not supported. Ignoring the annotations.");
}

// handle the default persistence unit
if (enableDefaultBlazePersistenceInstance) {
if (!blazePersistenceConfig.defaultBlazePersistence.packages.isPresent()) {
throw new ConfigurationException("Packages must be configured for the default Blaze-Persistence instance.");
}

for (String packageName : blazePersistenceConfig.defaultBlazePersistence.packages.get()) {
packageRules.computeIfAbsent(normalizePackage(packageName), p -> new HashSet<>())
.add(BlazePersistenceInstanceUtil.DEFAULT_BLAZE_PERSISTENCE_NAME);
}
}

// handle the named Blaze-Persistence instances
for (Map.Entry<String, BlazePersistenceInstanceConfiguration> candidateBlazePersistenceInstanceEntry : blazePersistenceConfig.blazePersistenceInstances
for (Map.Entry<String, BlazePersistenceInstanceConfiguration> candidateBlazePersistenceInstanceEntry : blazePersistenceConfig.blazePersistenceInstances()
.entrySet()) {
String candidateBlazePersistenceInstanceName = candidateBlazePersistenceInstanceEntry.getKey();

Set<String> candidateBlazePersistenceInstancePackages = candidateBlazePersistenceInstanceEntry.getValue().packages
Set<String> candidateBlazePersistenceInstancePackages = candidateBlazePersistenceInstanceEntry.getValue().packages()
.orElseThrow(() -> new ConfigurationException(String.format(
"Packages must be configured for Blaze-Persistence instance '%s'.", candidateBlazePersistenceInstanceName)));

Expand Down Expand Up @@ -507,12 +486,8 @@ private static Map<String, Set<String>> mapBlazePersistenceInstancesToPackages(B
}

private static boolean hasPackagesInQuarkusConfig(BlazePersistenceConfiguration blazePersistenceConfig) {
if (blazePersistenceConfig.defaultBlazePersistence.packages.isPresent()) {
return true;
}

for (BlazePersistenceInstanceConfiguration blazePersistenceInstanceConfig : blazePersistenceConfig.blazePersistenceInstances.values()) {
if (blazePersistenceInstanceConfig.packages.isPresent()) {
for (BlazePersistenceInstanceConfiguration blazePersistenceInstanceConfig : blazePersistenceConfig.blazePersistenceInstances().values()) {
if (blazePersistenceInstanceConfig.packages().isPresent()) {
return true;
}
}
Expand Down
4 changes: 2 additions & 2 deletions integration/quarkus-3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
</modules>

<properties>
<main.java.version>11</main.java.version>
<main.java.version>17</main.java.version>

<version.jandex>3.0.5</version.jandex>
<version.jandex>3.1.6</version.jandex>
</properties>

<dependencyManagement>
Expand Down
5 changes: 0 additions & 5 deletions integration/quarkus-3/runtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,6 @@
<goal>process</goal>
</goals>
<phase>compile</phase>
<configuration>
<optionMap>
<legacyConfigRoot>true</legacyConfigRoot>
</optionMap>
</configuration>
</execution>
</executions>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,39 @@

import io.quarkus.runtime.annotations.ConfigDocMapKey;
import io.quarkus.runtime.annotations.ConfigDocSection;
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithParentName;
import io.smallrye.config.WithUnnamedKey;

import java.util.Map;
import java.util.TreeMap;

/**
* @author Moritz Becker
* @since 1.5.0
*/
@ConfigRoot
public class BlazePersistenceConfiguration {

/**
* Configuration for the default Blaze-Persistence instance.
*/
@ConfigItem(name = ConfigItem.PARENT)
public BlazePersistenceInstanceConfiguration defaultBlazePersistence;
@ConfigRoot(phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED)
@ConfigMapping(prefix = "quarkus.blaze-persistence")
public interface BlazePersistenceConfiguration {

/**
* Additional named Blaze-Persistence instances.
*/
@ConfigDocSection
@ConfigDocMapKey("blaze-persistence-instance-name")
@ConfigItem(name = ConfigItem.PARENT)
public Map<String, BlazePersistenceInstanceConfiguration> blazePersistenceInstances;
@WithParentName
@WithUnnamedKey(BlazePersistenceInstanceUtil.DEFAULT_BLAZE_PERSISTENCE_NAME)
Map<String, BlazePersistenceInstanceConfiguration> blazePersistenceInstances();

default BlazePersistenceInstanceConfiguration defaultBlazePersistenceInstance() {
return blazePersistenceInstances().get(BlazePersistenceInstanceUtil.DEFAULT_BLAZE_PERSISTENCE_NAME);
}

default Map<String, BlazePersistenceInstanceConfiguration> namedBlazePersistenceInstances() {
Map<String, BlazePersistenceInstanceConfiguration> map = new TreeMap<>(blazePersistenceInstances());
map.remove(BlazePersistenceInstanceUtil.DEFAULT_BLAZE_PERSISTENCE_NAME);
return map;
}
}
Loading

0 comments on commit 3c4d46f

Please sign in to comment.