Guest User

Untitled

a guest
Oct 22nd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. public class Promises {
  2. private static class PageMetrics {
  3. Integer visits;
  4. Long avgMsOnPage;
  5.  
  6.  
  7. @Override
  8. public String toString() {
  9. return String.format("{ avgMsOnPage=%d, visits=%d }", avgMsOnPage, visits);
  10. }
  11. }
  12.  
  13. private static class Summary {
  14. PageMetrics pageMetrics;
  15.  
  16. long accountId;
  17. String description;
  18. }
  19.  
  20.  
  21. public static void main(String[] args) throws Exception {
  22. CompletableFuture<Summary> summaryPromise = CompletableFuture.supplyAsync(() -> {
  23. System.out.println("Creating summary object");
  24. return new Summary();
  25. }).thenCompose((Summary summaryInstance) -> CompletableFuture.supplyAsync(() -> {
  26. System.out.println("Populating summary object");
  27. summaryInstance.accountId = 1l;
  28. summaryInstance.description = "PageMetrics Summary";
  29.  
  30. // Arbitrary rest to demonstrate promise's behavior
  31. try {
  32. Thread.sleep(1000);
  33. } catch (InterruptedException e) {
  34. //
  35. }
  36.  
  37. return summaryInstance;
  38. })).thenCompose((Summary summaryInstance) -> CompletableFuture.supplyAsync(() -> {
  39. PageMetrics pageMetrics = new PageMetrics();
  40. pageMetrics.visits = 4128;
  41. pageMetrics.avgMsOnPage = 4000L;
  42. summaryInstance.pageMetrics = pageMetrics;
  43. return summaryInstance;
  44. }));
  45.  
  46. Summary summary = summaryPromise.get();
  47. System.out.println("Done!");
  48. System.out.println(summary.pageMetrics);
  49. }
  50. }
Add Comment
Please, Sign In to add comment