Migrate to simplified implementation using improved client/server model and proper dependency injection
This commit is contained in:
@@ -2,76 +2,45 @@ package com.github.boukefalos.ibuddy;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.picocontainer.Parameter;
|
||||
import org.picocontainer.parameters.ConstantParameter;
|
||||
|
||||
import base.exception.LoaderException;
|
||||
import base.loader.AbstractLoader;
|
||||
import base.work.Work;
|
||||
|
||||
import com.github.boukefalos.ibuddy.client.iBuddyTcpClient;
|
||||
import com.github.boukefalos.ibuddy.implementation.LocalImplementation;
|
||||
import com.github.boukefalos.ibuddy.implementation.TcpImplementation;
|
||||
import com.github.boukefalos.ibuddy.implementation.UdpImplementation;
|
||||
import com.github.boukefalos.ibuddy.server.iBuddyServer;
|
||||
import com.github.boukefalos.ibuddy.server.iBuddyTcpServer;
|
||||
import com.github.boukefalos.ibuddy.server.iBuddyUdpServer;
|
||||
import com.github.boukefalos.ibuddy.implementation.Local;
|
||||
import com.github.boukefalos.ibuddy.implementation.Remote;
|
||||
|
||||
public class Loader extends AbstractLoader {
|
||||
public class Loader extends AbstractLoader<Loader> {
|
||||
protected static final String PROPERTIES_FILE = "ibuddy.properties";
|
||||
|
||||
public Loader(Properties properties) {
|
||||
public Loader(Properties properties) throws LoaderException {
|
||||
super();
|
||||
|
||||
/* Add implementation */
|
||||
switch (properties.getProperty("implementation")) {
|
||||
case "local":
|
||||
pico.addComponent(LocalImplementation.class);
|
||||
pico.addComponent(Local.class);
|
||||
break;
|
||||
case "remote":
|
||||
//pico.addComponent(Remote.class);
|
||||
break;
|
||||
}
|
||||
pico.addComponent(Remote.class);
|
||||
|
||||
/* Add protocol */
|
||||
if (properties.getProperty("protocol") != null) {
|
||||
switch (properties.getProperty("protocol")) {
|
||||
case "tcp":
|
||||
pico.addComponent(TcpImplementation.class, TcpImplementation.class, new Parameter[]{
|
||||
new ConstantParameter(properties.getProperty("remote.host")),
|
||||
new ConstantParameter(Integer.valueOf(properties.getProperty("remote.port")))});
|
||||
break;
|
||||
case "udp":
|
||||
pico.addComponent(UdpImplementation.class, UdpImplementation.class, new Parameter[] {
|
||||
new ConstantParameter(properties.getProperty("remote.host")),
|
||||
new ConstantParameter(Integer.valueOf(properties.getProperty("remote.port")))});
|
||||
break;
|
||||
}
|
||||
/* Add sender implementation */
|
||||
addSender(properties);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Add server */
|
||||
if (properties.getProperty("server") != null) {
|
||||
switch (properties.getProperty("server.protocol")) {
|
||||
case "tcp":
|
||||
pico.addComponent(iBuddyTcpServer.class, iBuddyTcpServer.class, new Parameter[]{
|
||||
new ConstantParameter(getiBuddy()),
|
||||
new ConstantParameter(Integer.valueOf(properties.getProperty("server.port"))),
|
||||
new ConstantParameter(iBuddyTcpClient.class)});
|
||||
break;
|
||||
case "udp":
|
||||
pico.addComponent(iBuddyUdpServer.class, iBuddyUdpServer.class, new Parameter[]{
|
||||
new ConstantParameter(getiBuddy()),
|
||||
new ConstantParameter(Integer.valueOf(properties.getProperty("server.port")))});
|
||||
}
|
||||
|
||||
pico.addComponent(Server.class);
|
||||
|
||||
/* Add server forwarder implementation */
|
||||
addForwarder(properties);
|
||||
}
|
||||
}
|
||||
|
||||
public iBuddy getiBuddy() {
|
||||
public iBuddy getiBuddy() {
|
||||
return pico.getComponent(iBuddy.class);
|
||||
}
|
||||
|
||||
public Work getServer() {
|
||||
return (Work) pico.getComponent(iBuddyServer.class);
|
||||
public Server getServer() {
|
||||
return pico.getComponent(Server.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user