MigrationAdapterPropertiesRecorder.java
package io.vanillabp.integration.runtime.config;
import java.util.Collection;
import org.eclipse.microprofile.config.ConfigProvider;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
import io.smallrye.config.SmallRyeConfig;
import io.vanillabp.integration.adapter.migration.config.MigrationAdapterProperties;
import io.vanillabp.integration.runtime.workflowmodule.WorkflowModule;
/**
* Builds a {@link MigrationAdapterProperties} runtime object and validates the properties provided by the application.
*/
@Recorder
public class MigrationAdapterPropertiesRecorder {
/**
* Supplier for {@link MigrationAdapterProperties} runtime object.
*
* @param capabilities Capabilities of the projects all extensions available
* @param workflowModulesFound Information about all workflow modules found in the project
* @param adaptersFound Names of all adapters found in the project's classpath
* @return The {@link MigrationAdapterProperties} object
*/
public RuntimeValue<MigrationAdapterProperties> recordMigrationProperties(
final Collection<String> capabilities,
final Collection<WorkflowModule> workflowModulesFound,
final Collection<String> adaptersFound) {
// fetch properties as a mapped object
final var config = (SmallRyeConfig) ConfigProvider.getConfig();
final var properties = config.getConfigMapping(QuarkusMigrationAdapterProperties.class);
// validate properties of adapters against adapters found in the classpath
final var adapterProperties = QuarkusMigrationAdapterTransformer
.builder()
.properties(properties)
.capabilities(capabilities)
.build()
.getAndValidatePropertiesConfigured(
workflowModulesFound,
adaptersFound);
return new RuntimeValue<>(adapterProperties);
}
}