package eu.eudat.integrationevent; import eu.eudat.integrationevent.inbox.InboxProperties; import eu.eudat.integrationevent.outbox.OutboxProperties; import gr.cite.queueinbox.repository.InboxRepository; import gr.cite.rabbitmq.RabbitConfigurer; import gr.cite.rabbitmq.consumer.InboxBindings; import gr.cite.rabbitmq.consumer.InboxCreator; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; @Configuration @EnableConfigurationProperties({OutboxProperties.class, InboxProperties.class}) @ConditionalOnProperty(prefix = "queue.rabbitmq", name = "listenerEnabled") public class AppRabbitConfigurer extends RabbitConfigurer { private ApplicationContext applicationContext; public AppRabbitConfigurer(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } // @Bean public InboxBindings inboxBindingsCreator() { List bindingItems = new ArrayList<>(); return new InboxBindings(bindingItems); } // @Bean public InboxCreator inboxCreator() { return (params) -> { InboxRepository inboxRepository = this.applicationContext.getBean(InboxRepository.class); return inboxRepository.create(params) != null; }; } }