Skip to content

Commit

Permalink
Add and integrate build-time config source build item
Browse files Browse the repository at this point in the history
  • Loading branch information
dmlloyd committed Jul 8, 2019
1 parent 3539c4d commit 9c65def
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package io.quarkus.deployment.builditem;

import java.util.function.Supplier;

import org.eclipse.microprofile.config.spi.ConfigSource;
import org.wildfly.common.Assert;

import io.quarkus.builder.item.MultiBuildItem;

/**
* Define an additional configuration source which is used at build time.
*/
public final class BuildTimeConfigurationSourceBuildItem extends MultiBuildItem {
private final Supplier<ConfigSource> configSourceSupplier;

/**
* Construct a new instance.
*
* @param configSourceSupplier the config source supplier (must not be {@code null})
*/
public BuildTimeConfigurationSourceBuildItem(final Supplier<ConfigSource> configSourceSupplier) {
Assert.checkNotNullParam("configSourceSupplier", configSourceSupplier);
this.configSourceSupplier = configSourceSupplier;
}

/**
* Construct a new instance.
*
* @param configSource the config source (must not be {@code null})
*/
public BuildTimeConfigurationSourceBuildItem(final ConfigSource configSource) {
this(() -> Assert.checkNotNullParam("configSource", configSource));
}

/**
* Get the config source supplier.
*
* @return the config source supplier
*/
public Supplier<ConfigSource> getConfigSourceSupplier() {
return configSourceSupplier;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.util.function.Consumer;
import java.util.function.UnaryOperator;

import io.quarkus.deployment.builditem.BuildTimeConfigurationSourceBuildItem;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.spi.ConfigBuilder;
import org.eclipse.microprofile.config.spi.ConfigProviderResolver;
Expand Down Expand Up @@ -170,6 +171,7 @@ public ConfigurationSetup() {
* @param resourceConsumer
* @param niResourceConsumer
* @param runTimeDefaultConsumer
* @param configSourceItems the build-time config source build items
* @param extensionClassLoaderBuildItem the extension class loader build item
* @param archiveRootBuildItem the application archive root
* @throws IOException
Expand All @@ -183,6 +185,7 @@ public void initializeConfiguration(
Consumer<GeneratedResourceBuildItem> resourceConsumer,
Consumer<SubstrateResourceBuildItem> niResourceConsumer,
Consumer<RunTimeConfigurationDefaultBuildItem> runTimeDefaultConsumer,
List<BuildTimeConfigurationSourceBuildItem> configSourceItems,
ExtensionClassLoaderBuildItem extensionClassLoaderBuildItem,
ArchiveRootBuildItem archiveRootBuildItem) throws IOException, ClassNotFoundException {

Expand Down Expand Up @@ -223,6 +226,13 @@ public void initializeConfiguration(
final DefaultValuesConfigurationSource defaultSource = new DefaultValuesConfigurationSource(
buildTimeConfig.getLeafPatterns());
builder.withSources(inJar, defaultSource);
final int cnt = configSourceItems.size();
final ConfigSource[] configSources = new ConfigSource[cnt];
int i = 0;
for (BuildTimeConfigurationSourceBuildItem item : configSourceItems) {
configSources[i++] = item.getConfigSourceSupplier().get();
}
builder.withSources(configSources);

// populate builder with all converters loaded from ServiceLoader
ConverterSupport.populateConverters(builder);
Expand Down

0 comments on commit 9c65def

Please sign in to comment.