package fucoin.actions; import akka.actor.ActorRef; import akka.actor.UntypedActorContext; import fucoin.wallet.AbstractNode; public abstract class Action<T extends AbstractNode> { private ActorRef self; public final void doAction(T abstractNode) { this.self = abstractNode.getSelf(); onAction(abstractNode.getSender(), abstractNode.getSelf(), abstractNode.getContext(), abstractNode); } protected abstract void onAction(ActorRef sender, ActorRef self, UntypedActorContext context, T abstractNode); public void log(String string) { System.out.println(self.path().name() + ": " + string); } }