package org.async.rmi;
import org.async.rmi.config.Configuration;
import org.async.rmi.modules.Exporter;
import org.async.rmi.modules.ObjectRepository;
import org.async.rmi.modules.Transport;
import org.async.rmi.modules.Util;
import org.async.rmi.net.NettyTransport;
/**
* Created by Barak Bar Orion
* 12/10/14.
*/
public class Modules {
private static Modules instance;
private Configuration configuration;
private Exporter exporter;
private Transport transport;
private Util util;
private ObjectRepository objectRepository;
private Modules() {
configuration = Configuration.readDefault();
setExporter(new DynamicExporter());
setTransport(new NettyTransport());
setUtil(new RMIUtil());
setObjectRepository(new ObjectRepository());
}
public static synchronized Modules getInstance(){
if(instance == null){
instance = new Modules();
}
return instance;
}
public Configuration getConfiguration() {
return configuration;
}
public Exporter getExporter() {
return exporter;
}
public void setExporter(Exporter exporter) {
this.exporter = exporter;
}
public Transport getTransport() {
return transport;
}
public void setTransport(Transport transport) {
this.transport = transport;
}
public Util getUtil() {
return util;
}
public void setUtil(Util util) {
this.util = util;
}
public ObjectRepository getObjectRepository() {
return objectRepository;
}
public void setObjectRepository(ObjectRepository objectRepository) {
this.objectRepository = objectRepository;
}
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
}