Migrate to simplified implementation using improved client/server model and proper dependency injection

This commit is contained in:
2015-06-21 14:52:18 +01:00
parent 20a235781d
commit 50567a9846
19 changed files with 136 additions and 407 deletions

View File

@@ -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);
}
}