package org.molgenis.data.transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import static java.util.Objects.requireNonNull;
/**
* Discovers {@link TransactionExceptionTranslator TransactionExceptionTranslators} beans and registers them with the
* {@link TransactionExceptionTranslatorRegistry}.
*/
@Component
public class TransactionExceptionTranslatorRegistrar
{
private final TransactionExceptionTranslatorRegistry transactionExceptionTranslatorRegistry;
@Autowired
public TransactionExceptionTranslatorRegistrar(
TransactionExceptionTranslatorRegistry transactionExceptionTranslatorRegistry)
{
this.transactionExceptionTranslatorRegistry = requireNonNull(transactionExceptionTranslatorRegistry);
}
/**
* Registers all {@link TransactionExceptionTranslator TransactionExceptionTranslators} in the given application
* context with the {@link TransactionExceptionTranslatorRegistry}.
*
* @param applicationContext application context
*/
public void register(ApplicationContext applicationContext)
{
applicationContext.getBeansOfType(TransactionExceptionTranslator.class).values()
.forEach(transactionExceptionTranslatorRegistry::register);
}
}