diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java index 2d9f6c3d3ff80f735ea1f260846c3e1f846b5a92..36991aba69288b73e9196b5b2199d35abdb90fa6 100644 --- a/src/main/java/fucoin/Main.java +++ b/src/main/java/fucoin/Main.java @@ -16,7 +16,7 @@ import java.util.List; public class Main { - private static int numberOfWallets = 2; + private static int numberOfWallets = 1; private static ActorSystem cSystem; diff --git a/src/main/java/fucoin/MainRemote.java b/src/main/java/fucoin/MainRemote.java index 3568dd0fab0d175956a2e2a0f875008336c93b5f..9080f7b4e42d96b7b62f22f6c787fd00da6efb46 100644 --- a/src/main/java/fucoin/MainRemote.java +++ b/src/main/java/fucoin/MainRemote.java @@ -15,9 +15,17 @@ public class MainRemote { public static void main(String[] args) throws InterruptedException { + //Load configuration from current directory or from resources directory of jar File file = new File("application.conf"); - System.out.println("config found? " + file.exists()); Config config = ConfigFactory.parseFile(file); + if (!file.exists()) { + System.out.println("Load default application.conf"); + config = ConfigFactory.parseResources("application.conf"); + } else { + System.out.println("Load local application.conf"); + } + + //Init System Actor System ActorSystem system = ActorSystem.create("Test", config); Address address = new Address("akka.tcp", "Core", "127.0.0.1", 1234); diff --git a/src/main/java/fucoin/actions/Action.java b/src/main/java/fucoin/actions/Action.java index 7bb94e8e3884c9b26fff1d1f01ace868b173d530..cb4b42a6806ae640ee2a147ab254db4e81a63250 100644 --- a/src/main/java/fucoin/actions/Action.java +++ b/src/main/java/fucoin/actions/Action.java @@ -4,7 +4,9 @@ import akka.actor.ActorRef; import akka.actor.UntypedActorContext; import fucoin.AbstractNode; -public abstract class Action<T extends AbstractNode> { +import java.io.Serializable; + +public abstract class Action<T extends AbstractNode> implements Serializable{ private ActorRef self; public final void doAction(T abstractNode) { diff --git a/src/main/java/fucoin/actions/join/ActionJoin.java b/src/main/java/fucoin/actions/join/ActionJoin.java index 8c1699f4e6505be874a5ce02605e8a3d68dc4bf8..e224ddb34fd577e7e1349f31725444bfdbb27c2d 100644 --- a/src/main/java/fucoin/actions/join/ActionJoin.java +++ b/src/main/java/fucoin/actions/join/ActionJoin.java @@ -12,6 +12,7 @@ public class ActionJoin extends GeneralAction { UntypedActorContext context, AbstractNode node) { ActionJoinAnswer aja = new ActionJoinAnswer(); aja.someNeighbors.putAll(node.getKnownNeighbors()); + System.out.println("Answer to "+sender.path().name()); sender.tell(aja, self); } diff --git a/src/main/java/fucoin/gui/WalletGuiControlImpl.java b/src/main/java/fucoin/gui/WalletGuiControlImpl.java index 3cf3fb42a5a5074ce01db4ab5f3afbf20fe01c00..518ee8094f1e1727875c09c3ee44097da8440cf4 100644 --- a/src/main/java/fucoin/gui/WalletGuiControlImpl.java +++ b/src/main/java/fucoin/gui/WalletGuiControlImpl.java @@ -1,5 +1,6 @@ package fucoin.gui; +import akka.actor.ActorSelection; import fucoin.wallet.AbstractWallet; import javax.swing.*; @@ -59,7 +60,12 @@ public class WalletGuiControlImpl implements WalletGuiControl { JTextField sendToNewEdt = new JTextField(); centerup2.add(sendToNewEdt, BorderLayout.CENTER); JButton addNewButton = new JButton("Add"); - addNewButton.addActionListener(e -> txtSendTo.addItem(sendToNewEdt.getText())); + addNewButton.addActionListener(e -> { + ActorSelection selection = wallet.getContext().actorSelection(sendToNewEdt.getText()); + System.out.println(selection); + //selection.tell("Hallo!", self()); + //txtSendTo.addItem(); + }); centerup2.add(addNewButton, BorderLayout.EAST); centerPanel.add(centerup2); diff --git a/src/main/java/fucoin/wallet/WalletImpl.java b/src/main/java/fucoin/wallet/WalletImpl.java index 5cb6e220b39923bcbb1c14b4c74ca9a3466f83e4..7efa22df6d2615a8a31d4be0fa3474b2fa8ca2cb 100644 --- a/src/main/java/fucoin/wallet/WalletImpl.java +++ b/src/main/java/fucoin/wallet/WalletImpl.java @@ -1,6 +1,7 @@ package fucoin.wallet; import akka.actor.ActorRef; +import akka.actor.ActorSelection; import akka.actor.Props; import fucoin.actions.ClientAction; import fucoin.actions.join.ActionJoin; @@ -11,6 +12,8 @@ import fucoin.actions.transaction.ActionGetAmountAnswer; import fucoin.actions.transaction.ActionInvokeSentMoney; import fucoin.gui.WalletGuiControl; +import javax.swing.*; + public class WalletImpl extends AbstractWallet { private ActorRef preKnownNeighbour; @@ -29,6 +32,14 @@ public class WalletImpl extends AbstractWallet { this.preKnownNeighbourName = preKnownNeighbourName; this.preKnownNeighbour = preKnownNeighbour; this.remoteSuperVisorActor = remoteSuperVisorActor; + + if(remoteSuperVisorActor == null){ + String path = JOptionPane.showInputDialog(null, "Enter a neighbour address: "); + System.out.println(path); + ActorSelection selection = getContext().actorSelection(path); + selection.tell(new ActionJoin(), self()); + //selection.tell("Hallo!", self()); + } } public static Props props(ActorRef preKnownNeighbour, String preKnownNeighbourName, @@ -59,6 +70,10 @@ public class WalletImpl extends AbstractWallet { ((ClientAction) message).doAction(this); } + if (message instanceof ActionJoin){ + ((ActionJoin) message).doAction(this); + } + } @Override