package fr.openwide.core.jpa.more.config.spring;
import java.util.Collection;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
import fr.openwide.core.jpa.more.business.CoreJpaMoreBusinessPackage;
import fr.openwide.core.jpa.more.business.task.dao.IQueuedTaskHolderDao;
import fr.openwide.core.jpa.more.business.task.dao.QueuedTaskHolderDaoImpl;
import fr.openwide.core.jpa.more.business.task.model.IQueueId;
import fr.openwide.core.jpa.more.business.task.service.IQueuedTaskHolderManager;
import fr.openwide.core.jpa.more.business.task.service.IQueuedTaskHolderService;
import fr.openwide.core.jpa.more.business.task.service.QueuedTaskHolderManagerImpl;
import fr.openwide.core.jpa.more.business.task.service.QueuedTaskHolderServiceImpl;
@ComponentScan(basePackageClasses = { CoreJpaMoreBusinessPackage.class })
public abstract class AbstractTaskManagementConfig {
public static final String OBJECT_MAPPER_BEAN_NAME = "queuedTaskHolderObjectMapper";
@Bean(name = OBJECT_MAPPER_BEAN_NAME)
public ObjectMapper queuedTaskHolderObjectMapper() {
return new ObjectMapper().enableDefaultTyping(DefaultTyping.NON_FINAL);
}
@Bean
public IQueuedTaskHolderDao queuedTaskHolderDao() {
return new QueuedTaskHolderDaoImpl();
}
@Bean
public IQueuedTaskHolderService queuedTaskHolderService(IQueuedTaskHolderDao queuedTaskHolderDao) {
return new QueuedTaskHolderServiceImpl(queuedTaskHolderDao);
}
@Bean
public IQueuedTaskHolderManager queuedTaskHolderManager() {
return new QueuedTaskHolderManagerImpl();
}
/**
* Must return all the {@link IQueueId queue IDs} that are valid in this application.
*/
@Bean
public abstract Collection<? extends IQueueId> queueIds();
}