/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pieShare.pieShareServer.springConfiguration; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.LoopHoleConnectionMessage; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.RegisterMessage; import org.pieShare.pieTools.piePlate.service.serializer.jacksonSerializer.JacksonSerializerService; import org.pieShare.pieTools.pieUtilities.service.beanService.BeanService; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.PieExecutorService; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.PieExecutorTaskFactory; import org.pieShare.pieShareServer.services.ServerService; import org.pieShare.pieShareServer.services.loopHoleService.LoopHoleService; import org.pieShare.pieShareServer.services.loopHoleService.UserPersistanceService; import org.pieShare.pieShareServer.tasks.LoopHoleListenerTask; import org.pieShare.pieShareServer.tasks.LoopHoleServerAckTask; import org.pieShare.pieShareServer.tasks.RegisterTask; import org.pieShare.pieShareServer.tasks.WaitForAckFromClientTask; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; /** * * @author Richard */ @Configuration public class ServiceConfiguration { @Bean @Lazy public ServerService serverService() { ServerService service = new ServerService(); service.setBeanService(beanService()); return service; } @Bean @Lazy public BeanService beanService() { return new BeanService(); } @Bean @Lazy public ExecutorService javaExecutorService() { return java.util.concurrent.Executors.newCachedThreadPool(); } @Bean @Lazy public PieExecutorService pieExecutorService() { PieExecutorService service = PieExecutorService.newCachedPieExecutorService(); service.setExecutorFactory(this.pieExecutorTaskFactory()); return service; } @Bean @Lazy public PieExecutorTaskFactory pieExecutorTaskFactory() { PieExecutorTaskFactory factory = new PieExecutorTaskFactory(); factory.setBeanService(this.beanService()); factory.setTasks(this.javaMap()); return factory; } @Bean @Lazy @Scope(value = "prototype") public Map javaMap() { return new HashMap(); } @Bean @Lazy public JacksonSerializerService jacksonSerializerService() { return new JacksonSerializerService(); } @Bean @Lazy public LoopHoleListenerTask loopHoleListenerTask() { LoopHoleListenerTask task = new LoopHoleListenerTask(); task.setExcuterService(pieExecutorService()); task.setSerializerService(jacksonSerializerService()); return task; } @Bean @Lazy public LoopHoleService loopHoleService() { LoopHoleService service = new LoopHoleService(); service.setBeanService(beanService()); service.setExecutorService(pieExecutorService()); service.setUserPersistanceService(userPersistanceService()); service.setSerializerService(jacksonSerializerService()); service.setExecutorFactory(pieExecutorTaskFactory()); return service; } @Bean @Lazy public UserPersistanceService userPersistanceService() { UserPersistanceService service = new UserPersistanceService(); return service; } @Bean @Lazy @Scope(value = "prototype") public RegisterMessage registerMessage() { RegisterMessage message = new RegisterMessage(); return message; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleConnectionMessage connectionMessage() { LoopHoleConnectionMessage msg = new LoopHoleConnectionMessage(); return msg; } @Bean @Lazy @Scope(value = "prototype") public RegisterTask registerTask() { RegisterTask task = new RegisterTask(); task.setUserPersistanceService(userPersistanceService()); task.setLoopHoleService(loopHoleService()); return task; } @Bean @Lazy @Scope(value = "prototype") public WaitForAckFromClientTask waitForAckFromClientTask() { WaitForAckFromClientTask task = new WaitForAckFromClientTask(); task.setLoopHoleService(loopHoleService()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleServerAckTask loopHoleServerAckTask() { LoopHoleServerAckTask task = new LoopHoleServerAckTask(); task.setLoopHoleService(loopHoleService()); return task; } }