Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main.java.Platform.demo;
- import java.time.Clock;
- import java.time.Instant;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- import main.java.Platform.Chimera.implementation.Platform.ChimeraExecutable;
- import main.java.Platform.Chimera.implementation.Platform.Transaction.Annotation.Transaction;
- import main.java.Platform.Chimera.implementation.common.ChimeraSignature;
- public class DemoApp extends ChimeraExecutable {
- private List<String> log = new ArrayList<>();
- public DemoApp(DemoUser user) {
- super(user);
- }
- @Override
- public void main() {
- Scanner in = new Scanner(System.in);
- //literally a bug in the AspectJ compiler that a while/for will not work here
- recurseInsteadOfWhile(in);
- }
- private void recurseInsteadOfWhile(Scanner in){
- while (true) {
- System.out.print("> ");
- String what = in.nextLine();
- ChimeraSignature sig = user.sign(what);
- if (what.equals("!exit")) {
- System.out.println("<chat end>");
- in.close();
- System.out.println(this.getState());
- return;
- }
- timeStamp(Clock.systemUTC().instant());
- say((DemoUser) this.user, what, sig);
- }
- }
- @Transaction
- public void timeStamp(Instant time){
- log.add(time.toString());
- }
- @Transaction
- public void say(DemoUser who, String what, ChimeraSignature sig) {
- if(who.verifySignature(what, sig))
- log.add(who.getName() + ": " + what);
- printState();
- }
- private void printState() {
- System.out.println("==== LOG ====");
- for (String s : log) {
- System.out.println(s);
- }
- System.out.println("=============");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement