tdudzik

Untitled

Aug 16th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.59 KB | None | 0 0
  1. Producer:
  2.  
  3. // Początkowe dane
  4. List<Title> titles = new ArrayList<>();
  5.  
  6. titles.add(new Title("Title 1"));
  7. titles.add(new Title("Title 2"));
  8. titles.add(new Title("Title 3"));
  9.  
  10. // Folder w którym przechowywane są dane (docelowo dane będą pewnie przechowywane na Amazonie S3, wtedy zamiast
  11. // HollowFilesystemPublisher/Announcer trzeba będzie użyć/napisać odpowiednie klasy dla Amazona)
  12. File publishDir = new File(SCRATCH_DIR, "publish-dir");
  13. publishDir.mkdir();
  14.  
  15. HollowProducer.Publisher publisher = new HollowFilesystemPublisher(publishDir);
  16. HollowProducer.Announcer announcer = new HollowFilesystemAnnouncer(publishDir);
  17.  
  18. HollowProducer producer = HollowProducer
  19.   .withPublisher(publisher)
  20.   .withAnnouncer(announcer)
  21.   .build();
  22.  
  23. producer.runCycle(state -> titles.forEach(state::add));
  24.  
  25. Thread.sleep(4000);
  26.  
  27. titles.add(new Title("Title 4"));
  28. producer.runCycle(state -> titles.forEach(state::add)); // O ile dobrze rozumiem, zawsze powinno się publikować wszystkie dane
  29. // Hollow dba o to, żeby publikowana była tylko delta (dzięki temu mamy mniejszy ruch na sieci)
  30.  
  31. // Generowanie API dla consumera
  32. //        HollowWriteStateEngine writeEngine = new HollowWriteStateEngine();
  33. //        HollowObjectMapper mapper = new HollowObjectMapper(writeEngine);
  34. //        mapper.initializeTypeState(Title.class);
  35.  
  36. //        HollowAPIGenerator generator = new HollowAPIGenerator.Builder()
  37. //                .withAPIClassname("TitleAPI")
  38. //                .withPackageName("io.github.tdudzik.testproject.consumer.api.generated")
  39. //                .withDataModel(writeEngine)
  40. //                .build();
  41. //        generator.generateFiles("C:/Users/Tomasz_Dudzik/Projects/test-project/src/main/java/io/github/tdudzik/testproject/consumer/api/generated");
  42.  
  43. Consumer:
  44.  
  45. // Analogicznie do Producera
  46. File publishDir = new File(SCRATCH_DIR, "publish-dir");
  47.  
  48. HollowFilesystemBlobRetriever blobRetriever = new HollowFilesystemBlobRetriever(publishDir);
  49. HollowFilesystemAnnouncementWatcher announcementWatcher = new HollowFilesystemAnnouncementWatcher(publishDir);
  50.  
  51. HollowConsumer consumer = HollowConsumer
  52.   .withBlobRetriever(blobRetriever)
  53.   .withAnnouncementWatcher(announcementWatcher)
  54.   .withGeneratedAPIClass(TitleAPI.class)
  55.   .build();
  56.  
  57. consumer.triggerRefresh();
  58.  
  59. TitleAPI titleApi = (TitleAPI) consumer.getAPI();
  60. for (Title title : titleApi.getAllTitle()) {
  61.   System.out.println(title.getName().getValue());
  62. }
  63.  
  64. Thread.sleep(6000);
  65.  
  66. // Tym razem wyświetlone zostaną zaktualizowane dane
  67. for (Title title : titleApi.getAllTitle()) {
  68.   System.out.println(title.getName().getValue());
  69. }
Advertisement
Add Comment
Please, Sign In to add comment