JcrObservationManager implements ObservationManager { @Override public EventJournal getEventJournal() { return session.repository().journalId() != null ? new JcrEventJournal() : null; } JcrObservationManager( JcrSession session,
                           Observable repositoryObservable ); @Override void addEventListener( EventListener listener,
                                  int eventTypes,
                                  String absPath,
                                  boolean isDeep,
                                  String[] uuid,
                                  String[] nodeTypeName,
                                  boolean noLocal ); @Override EventListenerIterator getRegisteredEventListeners(); @Override void removeEventListener( EventListener listener ); @Override void setUserData( String userData ); @Override EventJournal getEventJournal(); @Override EventJournal getEventJournal( int eventTypes,
                                         String absPath,
                                         boolean isDeep,
                                         String[] uuid,
                                         String[] nodeTypeName );  }
@Test @FixFor( "MODE-2019" ) public void shouldProvideFullEventJournal() throws Exception { Node node1 = getRoot().addNode("node1"); node1.setProperty("prop1", "value"); node1.setProperty("prop2", "value2"); Node node2 = getRoot().addNode("node2"); session.save(); Thread.sleep(100); node1.setProperty("prop2", "edited value"); node1.setProperty("prop1", (String) null); node2.remove(); session.save(); Thread.sleep(100); EventJournal eventJournal = getObservationManager().getEventJournal(); assertPathsInJournal(eventJournal, false, "/testroot/node1", "/testroot/node1/jcr:primaryType", "/testroot/node1/prop1", "/testroot/node1/prop2", "/testroot/node2/jcr:primaryType", "/testroot/node2/jcr:primaryType", "/testroot/node1/prop2", "/testroot/node1/prop1", "/testroot/node1/prop2"); }
@Test @FixFor( "MODE-2019" ) public void shouldProvideFilteredEventJournal() throws Exception { Node node1 = getRoot().addNode("node1"); getRoot().addNode("node2"); Node node3 = getRoot().addNode("node3"); session.save(); Thread.sleep(200); EventJournal eventJournal = getObservationManager().getEventJournal(org.modeshape.jcr.api.observation.Event.ALL_EVENTS, null, true, new String[]{node1.getIdentifier(), node3.getIdentifier()}, null); assertPathsInJournal(eventJournal, true, "/testroot/node1", "/testroot/node1/jcr:primaryType", "/testroot/node3", "/testroot/node3/jcr:primaryType"); }
@Test @FixFor( "MODE-2019" ) public void shouldSkipToEventsInJournal() throws Exception { long startingDate = System.currentTimeMillis(); getRoot().addNode("node1"); session.save(); Thread.sleep(100); long afterNode1 = System.currentTimeMillis(); getRoot().addNode("node2"); session.save(); Thread.sleep(100); long afterNode2 = System.currentTimeMillis(); getRoot().addNode("node3"); session.save(); Thread.sleep(100); long afterNode3 = System.currentTimeMillis(); EventJournal journal = getObservationManager().getEventJournal(); journal.skipTo(startingDate); assertPathsInJournal(journal, true, "/testroot/node1", "/testroot/node1/jcr:primaryType", "/testroot/node2", "/testroot/node2/jcr:primaryType", "/testroot/node3", "/testroot/node3/jcr:primaryType"); journal = getObservationManager().getEventJournal(); journal.skipTo(afterNode1); assertPathsInJournal(journal, true, "/testroot/node2", "/testroot/node2/jcr:primaryType", "/testroot/node3", "/testroot/node3/jcr:primaryType"); journal = getObservationManager().getEventJournal(); journal.skipTo(afterNode2); assertPathsInJournal(journal, true, "/testroot/node3", "/testroot/node3/jcr:primaryType"); journal = getObservationManager().getEventJournal(); journal.skipTo(afterNode3); assertFalse(journal.hasNext()); }