ProcessServiceCdiBeanRecorder.java
package io.vanillabp.integration.runtime.processservice;
import java.util.List;
import java.util.function.Supplier;
import io.quarkus.runtime.annotations.Recorder;
import io.vanillabp.integration.config.MigrationAdapterProperties;
import io.vanillabp.intergration.adapter.migration.spi.MigratableProcessService;
import io.vanillabp.spi.process.ProcessService;
/**
* Builds {@link ProcessService} beans aware of adapter migration
* for {@link io.vanillabp.spi.service.WorkflowService}
* annotated beans.
*/
@Recorder
public class ProcessServiceCdiBeanRecorder {
/**
* Supplier for {@link ProcessService} beans aware of adapter migration
* for {@link io.vanillabp.spi.service.WorkflowService}
* annotated beans.
*
* @param workflowAggregateClass The workflow's aggregate class
* @param properties Properties needed to handle migration between adapters
* @return The {@link ProcessService} bean
*/
public <A> Supplier<ProcessService<A>> processServiceSupplier(
final Class<A> workflowAggregateClass,
final MigrationAdapterProperties properties,
final List<MigratableProcessService<A>> processServices) {
return () -> new ProcessServiceCdiBean<>(workflowAggregateClass, properties, processServices);
}
}