/* * 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.pieShareApp.springConfiguration; import org.jgroups.JChannel; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.LoopHoleAckMessage; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.LoopHoleCompleteMessage; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.LoopHoleConnectionMessage; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.LoopHolePunchMessage; import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.RegisterMessage; import org.pieShare.pieTools.piePlate.model.serializer.jacksonSerializer.JGroupsPieAddress; import org.pieShare.pieTools.piePlate.service.channel.SymmetricEncryptedChannel; import org.pieShare.pieTools.piePlate.service.cluster.ClusterManagementService; import org.pieShare.pieTools.piePlate.service.cluster.jgroupsCluster.JGroupsClusterService; import org.pieShare.pieTools.piePlate.service.cluster.jgroupsCluster.ObjectBasedReceiver; import org.pieShare.pieTools.piePlate.service.loophole.LoopHoleFactory; import org.pieShare.pieTools.piePlate.service.loophole.LoopHoleService; import org.pieShare.pieTools.piePlate.service.serializer.jacksonSerializer.JacksonSerializerService; import org.pieShare.pieTools.piePlate.task.ChannelTask; import org.pieShare.pieTools.piePlate.task.LoopHoleAckTask; import org.pieShare.pieTools.piePlate.task.LoopHoleCompleteTask; import org.pieShare.pieTools.piePlate.task.LoopHoleConnectionTask; import org.pieShare.pieTools.piePlate.task.LoopHoleListenerTask; import org.pieShare.pieTools.piePlate.task.LoopHolePuncherTask; import org.springframework.beans.factory.annotation.Autowired; 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 Svetoslav */ @Configuration public class PiePlateConfiguration { @Autowired private PieUtilitiesConfiguration utilitiesConfiguration; @Bean @Lazy public ClusterManagementService clusterManagementService() { ClusterManagementService service = new ClusterManagementService(); service.setBeanService(this.utilitiesConfiguration.beanService()); service.setClusterAddedEventBase(this.utilitiesConfiguration.eventBase()); service.setClusterRemovedEventBase(this.utilitiesConfiguration.eventBase()); service.setMap(this.utilitiesConfiguration.javaMap()); return service; } @Bean @Lazy public JacksonSerializerService jacksonSerializerService() { return new JacksonSerializerService(); } @Bean @Lazy @Scope(value = "prototype") public ObjectBasedReceiver objectReceiver() { ObjectBasedReceiver receiver = new ObjectBasedReceiver(); receiver.setBeanService(this.utilitiesConfiguration.beanService()); receiver.setExecutorService(this.utilitiesConfiguration.pieExecutorService()); return receiver; } @Bean @Lazy @Scope(value = "prototype") public JChannel jChannel() throws Exception { return new JChannel(); } @Bean @Lazy @Scope(value = "prototype") public JGroupsClusterService clusterService() throws Exception { JGroupsClusterService service = new JGroupsClusterService(); service.setReceiver(this.objectReceiver()); service.setChannel(this.jChannel()); service.setClusterRemovedEventBase(this.utilitiesConfiguration.eventBase()); service.setShutdownService(this.utilitiesConfiguration.shutdownService()); return service; } @Bean @Lazy public JGroupsPieAddress jgroupsPieAddress() { return new JGroupsPieAddress(); } @Bean @Lazy @Scope(value = "prototype") public SymmetricEncryptedChannel symmetricEncryptedChannel() { SymmetricEncryptedChannel channel = new SymmetricEncryptedChannel(); channel.setEncoderService(this.utilitiesConfiguration.encodeService()); channel.setSerializerService(this.jacksonSerializerService()); return channel; } @Bean @Lazy @Scope(value = "prototype") public ChannelTask channelTask() { ChannelTask task = new ChannelTask(); task.setExecutorService(this.utilitiesConfiguration.pieExecutorService()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleService loopHoleService() { LoopHoleService service = new LoopHoleService(); service.setBeanService(utilitiesConfiguration.beanService()); service.setIdService(utilitiesConfiguration.idService()); service.setSerializerService(jacksonSerializerService()); service.setExecutorFactory(utilitiesConfiguration.pieExecutorTaskFactory()); service.setExecutorService(utilitiesConfiguration.pieExecutorService()); service.setLoopHoleFactory(loopHoleFactory()); return service; } @Bean @Lazy public LoopHoleFactory loopHoleFactory() { LoopHoleFactory fac = new LoopHoleFactory(); fac.setBeanService(utilitiesConfiguration.beanService()); fac.setIdService(utilitiesConfiguration.idService()); fac.setSerializerService(jacksonSerializerService()); fac.setNewLoopHoleConnectionEvent(utilitiesConfiguration.eventBase()); fac.setExecutorFactory(utilitiesConfiguration.pieExecutorTaskFactory()); fac.setExecutorService(utilitiesConfiguration.pieExecutorService()); fac.setUdpPortService(utilitiesConfiguration.udpPortService()); return fac; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleListenerTask loopHoleListenerTask() { LoopHoleListenerTask task = new LoopHoleListenerTask(); task.setExcuterService(utilitiesConfiguration.pieExecutorService()); task.setSerializerService(jacksonSerializerService()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHolePuncherTask holePuncherTask() { LoopHolePuncherTask task = new LoopHolePuncherTask(); task.setBeanService(utilitiesConfiguration.beanService()); task.setFactory(loopHoleFactory()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleAckTask loopHoleAckTask() { LoopHoleAckTask task = new LoopHoleAckTask(); task.setLoopHoleFactory(loopHoleFactory()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleConnectionTask loopHoleConnectionTask() { LoopHoleConnectionTask task = new LoopHoleConnectionTask(); task.setBeanService(utilitiesConfiguration.beanService()); task.setLoopHoleFactory(loopHoleFactory()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleCompleteTask loopHoleCompleteTask() { LoopHoleCompleteTask task = new LoopHoleCompleteTask(); task.setLoopholeFactory(loopHoleFactory()); return task; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleCompleteMessage loopHoleCompleteMessage() { LoopHoleCompleteMessage msg = new LoopHoleCompleteMessage(); return msg; } @Bean @Lazy @Scope(value = "prototype") public RegisterMessage registerMessage() { RegisterMessage message = new RegisterMessage(); return message; } @Bean @Lazy @Scope(value = "prototype") public LoopHolePunchMessage punchMessage() { LoopHolePunchMessage msg = new LoopHolePunchMessage(); return msg; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleConnectionMessage connectionMessage() { LoopHoleConnectionMessage msg = new LoopHoleConnectionMessage(); return msg; } @Bean @Lazy @Scope(value = "prototype") public LoopHoleAckMessage ackMessage() { LoopHoleAckMessage msg = new LoopHoleAckMessage(); return msg; } }