package io.muoncore.spring.transport; import io.muoncore.config.AutoConfiguration; import io.muoncore.transport.MuonTransport; import io.muoncore.transport.MuonTransportFactory; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; import java.util.Properties; public class MuonTransportFactoryBean implements FactoryBean<MuonTransport> { private Class<? extends MuonTransportFactory> type; private Properties properties; @Autowired private AutoConfiguration autoConfiguration; @Override public MuonTransport getObject() throws Exception { MuonTransportFactory factory = type.newInstance(); autoConfiguration.getProperties().putAll(properties); factory.setAutoConfiguration(autoConfiguration); return factory.build(autoConfiguration.getProperties()); } @Override public Class<?> getObjectType() { return MuonTransport.class; } @Override public boolean isSingleton() { return true; } public void setType(Class<? extends MuonTransportFactory> type) { this.type = type; } public void setProperties(Properties properties) { this.properties = properties; } }