javax.jcr.observation.ObservationManager类的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(13.1k)|赞(0)|评价(0)|浏览(116)

本文整理了Java中javax.jcr.observation.ObservationManager类的一些代码示例,展示了ObservationManager类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ObservationManager类的具体详情如下:
包路径:javax.jcr.observation.ObservationManager
类名称:ObservationManager

ObservationManager介绍

[英]The ObservationManager object.

Acquired via javax.jcr.Workspace#getObservationManager(). Allows for the registration and deregistration of event listeners.
[中]ObservationManager对象。
通过javax.jcr.Workspace#getObservationManager()获得。允许注册和注销事件侦听器。

代码示例

代码示例来源:origin: org.apache.sling/org.apache.sling.commons.testing

public EventHelper(Session s) throws RepositoryException {
  session = s;
  final int eventTypes = Event.NODE_ADDED | Event.NODE_REMOVED;
  final boolean isDeep = true;
  final boolean noLocal = false;
  session.getWorkspace().getObservationManager().addEventListener(
      this, eventTypes, "/" + WAIT_NODE_FOLDER, isDeep, null, null, noLocal);
  if(session.getRootNode().hasNode(WAIT_NODE_FOLDER)) {
    waitNodeFolder = session.getRootNode().getNode(WAIT_NODE_FOLDER);
  } else {
    waitNodeFolder = session.getRootNode().addNode(WAIT_NODE_FOLDER, "nt:unstructured");
  }
  session.save();
}

代码示例来源:origin: apache/jackrabbit

/**
 * Tests if events are only created for a sub tree of the workspace.
 */
public void testPath() throws RepositoryException {
  EventResult listener = new EventResult(log);
  obsMgr.addEventListener(listener, Event.NODE_ADDED, testRoot + "/" + nodeName1, true, null, null, false);
  Node n = testRootNode.addNode(nodeName1, testNodeType);
  n.addNode(nodeName2, testNodeType);
  testRootNode.getSession().save();
  Event[] events = listener.getEvents(DEFAULT_WAIT_TIMEOUT);
  obsMgr.removeEventListener(listener);
  checkNodeAdded(events, new String[]{nodeName1 + "/" + nodeName2}, null);
}

代码示例来源:origin: org.onehippo.cms7/hippo-repository-engine

public void logNodeTypeRegistryLastModifiedEvent(final String userData) {
  try {
    final Node autoExportConfigNode = monitorSession.getNode(autoExportConfig.getConfigPath());
    monitorSession.refresh(false);
    ObservationManager observationManager = monitorSession.getWorkspace().getObservationManager();
    observationManager.setUserData(userData);
    try {
      if (autoExportConfigNode.hasProperty(AutoExportConstants.CONFIG_NTR_LAST_MODIFIED_PROPERTY_NAME)) {
        autoExportConfigNode.getProperty(AutoExportConstants.CONFIG_NTR_LAST_MODIFIED_PROPERTY_NAME).remove();
      }
      autoExportConfigNode.setProperty(AutoExportConstants.CONFIG_NTR_LAST_MODIFIED_PROPERTY_NAME, System.currentTimeMillis());
      monitorSession.save();
      AutoExportServiceImpl.log.debug("journal logging changed nodetype prefix(es): [{}]",userData);
    } finally {
      observationManager.setUserData(null);
    }
  } catch (RepositoryException e) {
    AutoExportServiceImpl.log.error("Failed to generate journal event for NodeTypeRegistry change.", e);
  }
}

代码示例来源:origin: org.apache.jackrabbit/jackrabbit-core

/**
 * Utility method that removes all registered event listeners.
 */
private void removeRegisteredEventListeners() {
  try {
    ObservationManager manager = getWorkspace().getObservationManager();
    // Use a copy to avoid modifying the set of registered listeners
    // while iterating over it
    Collection<EventListener> listeners =
      IteratorUtils.toList(manager.getRegisteredEventListeners());
    for (EventListener listener : listeners) {
      try {
        manager.removeEventListener(listener);
      } catch (RepositoryException e) {
        log.warn("Error removing event listener: " + listener, e);
      }
    }
  } catch (RepositoryException e) {
    log.warn("Error removing event listeners", e);
  }
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-engine

void subscribe(JcrListener listener, Node node) throws RepositoryException {
  synchronized (upstream) {
    Session session = node.getSession();
    String uuid = node.getProperty(HippoNodeType.HIPPO_DOCBASE).getString();
    String[] uuids = {uuid};
    if ("hippofacnav:facetnavigation".equals(node.getPrimaryNodeType().getName())) {
      uuids = uuid.split(",\\s*");
    }
    UpstreamEntry entry = new UpstreamEntry();
    entry.listener = listener;
    entry.rootListeners = new LinkedList<FacetRootListener>();
    upstream.add(entry);
    ObservationManager obMgr = session.getWorkspace().getObservationManager();
    for (String id : uuids) {
      try {
        String docbase = session.getNodeByIdentifier(id).getPath();
        // CMS7-5568: facet navigation can have multiple docbases.
        FacetRootListener rootListener = new FacetRootListener(node.getPath(), session.getUserID(), listener);
        obMgr.addEventListener(rootListener, Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_CHANGED, docbase, true,
                   null, null, false);
        entry.rootListeners.add(rootListener);
      } catch (ItemNotFoundException e) {
        log.warn("The {} property of facet node {} refers to a non-existing UUID '{}'",
             new Object[]{HippoNodeType.HIPPO_DOCBASE, node.getPath(), uuid});
      }
    }
  }
}

代码示例来源:origin: apache/jackrabbit-oak

Node testNode = session.getRootNode().addNode(testNodeName);
testNode.setProperty("foo", "bar");
testNode.setProperty("foo2", "bar0");
session.save();
ObservationManager observationManager = observingSession.getWorkspace().getObservationManager();
  observationManager.addEventListener(listener, PROPERTY_CHANGED, testNodePath, true, null, null, false);

代码示例来源:origin: apache/jackrabbit

public void testRenameEventHandling() throws RepositoryException {
  Session s = getHelper().getSuperuserSession();
  ObservationManager mgr = s.getWorkspace().getObservationManager();
  EventResult result = new EventResult(log);
  try {
    mgr.addEventListener(result, Event.PERSIST|Event.NODE_ADDED|Event.NODE_MOVED|Event.NODE_REMOVED, testRootNode.getPath(), true, null, null, false);
    NodeIterator it = testRootNode.getNodes();
    Node n = it.nextNode();
    String name = n.getName();
    JackrabbitNode node = (JackrabbitNode) n;
    node.rename(name.toUpperCase());
    superuser.save();
    boolean foundMove = false;
    for (Event event : result.getEvents(5000)) {
      if (Event.NODE_MOVED == event.getType()) {
        foundMove = true;
        break;
      }
    }
    if (!foundMove) {
      fail("Expected NODE_MOVED event upon renaming a node.");
    }
  } finally {
    mgr.removeEventListener(result);
    s.logout();
  }
}

代码示例来源:origin: org.apache.jackrabbit/jackrabbit-core

Listener(GarbageCollector gc, Session session)
    throws UnsupportedRepositoryOperationException,
    RepositoryException {
  this.gc = gc;
  this.session = session;
  Workspace ws = session.getWorkspace();
  manager = ws.getObservationManager();
  manager.addEventListener(this, Event.NODE_MOVED, "/", true, null,
      null, false);
}

代码示例来源:origin: ModeShape/modeshape

session.getWorkspace()
    .getObservationManager()
    .addEventListener(listener, Event.NODE_ADDED, null, true, null, null, false);
session2.getWorkspace().getObservationManager().setUserData(userData);
Node addedNode = session2.getRootNode().addNode("node1", UNSTRUCTURED);
session2.save();
      + addedNode.getPath(),
      containsPath(listener, addedNode.getPath()));

代码示例来源:origin: ModeShape/modeshape

.getWorkspace()
    .getObservationManager()
    .addEventListener(listener, ALL_EVENTS, "/folder1", true, null, new String[] { "nt:unstructured" }, false);
  Session writerSession = repository().login();
  String nodeName = "node" + i;
  writerSession.getNode("/folder1").addNode(nodeName);
  writerSession.save();
  writerSession.logout();
  txMgr.commit();
listenerSession.getWorkspace().getObservationManager().removeEventListener(listener);
listenerSession.logout();

代码示例来源:origin: apache/jackrabbit-oak

@Test
public void uuidFilter() throws RepositoryException, InterruptedException, ExecutionException {
  ExpectationListener listener = new ExpectationListener();
  observationManager.addEventListener(listener, ALL_EVENTS, "/", true,
      new String[]{test_uuid}, null, false);
  try {
    Node nonRefNode = getNode(TEST_PATH);
    Node refNode = nonRefNode.getNode(REFERENCEABLE_NODE);
    nonRefNode.addNode("n");
    listener.expect(refNode.addNode("r").getPath(), NODE_ADDED);
    getAdminSession().save();
    List<Expectation> missing = listener.getMissing(TIME_OUT, TimeUnit.SECONDS);
    assertTrue("Missing events: " + missing, missing.isEmpty());
    List<Event> unexpected = listener.getUnexpected();
    assertTrue("Unexpected events: " + unexpected, unexpected.isEmpty());
  }
  finally {
    observationManager.removeEventListener(listener);
  }
}

代码示例来源:origin: apache/jackrabbit

Node n1 = testRootNode.addNode(nodeName1);
n1.addMixin(mixVersionable);
testRootNode.save();
  ObservationManager obsMgr = s.getWorkspace().getObservationManager();
  obsMgr.addEventListener(listener, Event.NODE_ADDED, "/", true,
      null, null, false);
  Version v = n1.checkin();
  obsMgr.removeEventListener(listener);
  assertTrue("missing 'node removed': " + frozenPath, paths.contains(frozenPath));
} finally {
  s.logout();

代码示例来源:origin: org.onehippo.cms7/hippo-repository-engine

public UpdaterExecutor(Node updaterNode, final Session session) throws Exception {
  this.session = session;
  this.background = session.impersonate(new SimpleCredentials("system", new char[] {}));
  final String logLevel = JcrUtils.getStringProperty(updaterNode, HippoNodeType.HIPPOSYS_LOGLEVEL, null);
  report = new UpdaterExecutionReport(logLevel);
  try {
    updaterInfo = new UpdaterInfo(updaterNode);
  } catch (Exception e) {
    // log to report only: client needs to know about this but caller needs to do exception handling
    report.getLogger().error("Cannot run updater: " + e.getClass().getName() + ": " + e.getMessage());
    throw e;
  } finally {
    // we need to get node instance from our own session in order to save changes
    updaterNode = session.getNodeByIdentifier(updaterNode.getIdentifier());
    saveReport(updaterNode);
  }
  session.getWorkspace().getObservationManager().addEventListener(this, PROPERTY_EVENTS, updaterNode.getPath(), false, null, null, true);
}

代码示例来源:origin: ModeShape/modeshape

@FixFor( "MODE-1370" )
@Test
public void shouldReceiveUserDataWithEventWhenObservationSessionIsSameThatMadeChange() throws Exception {
  // register listener
  SimpleListener listener = addListener(1, Event.NODE_ADDED, null, false, null, null, false);
  // add node
  Node addedNode = getRoot().addNode("node1", UNSTRUCTURED);
  // Add user-data to the observation manager ...
  String userData = "my user data";
  getRoot().getSession().getWorkspace().getObservationManager().setUserData(userData);
  save();
  // event handling
  listener.waitForEvents();
  removeListener(listener);
  // tests
  checkResults(listener);
  assertTrue("Path for added node is wrong: actual=" + listener.getEvents().get(0).getPath() + ", expected="
        + addedNode.getPath(),
        containsPath(listener, addedNode.getPath()));
  // Now check the userdata in the events ...
  for (Event event : listener.events) {
    String eventUserData = event.getUserData();
    assertThat(eventUserData, is(userData));
  }
  // Now check the userdata ...
  assertThat(listener.userData.size(), is(not(0)));
  for (String receivedUserData : listener.userData) {
    assertThat(receivedUserData, is(userData));
  }
}

代码示例来源:origin: org.apache.sling/org.apache.sling.commons.testing

/**
   * Remove the event listener from the observation listener.
   */
  public void dispose() {
    try {
      session.getWorkspace().getObservationManager().removeEventListener(this);
    } catch (RepositoryException e) {
    }
  }
}

代码示例来源:origin: apache/jackrabbit-oak

@Test
public void testRename() throws RepositoryException, ExecutionException, InterruptedException {
  Node testNode = getNode(TEST_PATH);
  Session session = testNode.getSession();
  Node nodeA = testNode.addNode("a");
  String parentPath = testNode.getPath();
  session.save();
  assumeTrue(nodeA instanceof JackrabbitNode);
  ExpectationListener listener = new ExpectationListener();
  observationManager.addEventListener(listener, NODE_MOVED, "/", true, null, null, false);
  ((JackrabbitNode) nodeA).rename("b");
  listener.expectMove(parentPath + "/a", parentPath + "/b");
  session.save();
  List<Expectation> missing = listener.getMissing(TIME_OUT, TimeUnit.SECONDS);
  assertTrue("Missing events: " + missing, missing.isEmpty());
  List<Event> unexpected = listener.getUnexpected();
  assertTrue("Unexpected events: " + unexpected, unexpected.isEmpty());
}

代码示例来源:origin: apache/jackrabbit-oak

@Test
public void removeSubtree() throws RepositoryException, ExecutionException, InterruptedException {
  Node n = getNode(TEST_PATH);
  n.addNode("a").addNode("b").addNode("c");
  getAdminSession().save();
  ExpectationListener listener = new ExpectationListener();
  observationManager.addEventListener(listener, ALL_EVENTS, "/", true, null, null, false);
  listener.expectRemove(n.getNode("a")).remove();
  getAdminSession().save();
  List<Expectation> missing = listener.getMissing(TIME_OUT, TimeUnit.SECONDS);
  assertTrue("Missing events: " + missing, missing.isEmpty());
  List<Event> unexpected = listener.getUnexpected();
  assertTrue("Unexpected events: " + unexpected, unexpected.isEmpty());
}

代码示例来源:origin: apache/jackrabbit

public void testIsDeepTrue() throws RepositoryException {
  Node n1 = testRootNode.addNode(nodeName1);
  Node n2 = n1.addNode(nodeName2);
  journal = obsMgr.getEventJournal();
  skipToNow();
  superuser.save();
  checkJournal(new String[]{n1.getPath(), n2.getPath()}, new String[0]);
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-engine

private void subscribe() throws RepositoryException {
  if (!isvirtual) {
    ObservationManager obMgr = session.getWorkspace().getObservationManager();
    String[] uuid = null;
    if (uuids != null) {
      uuid = uuids.toArray(new String[uuids.size()]);
    obMgr.addEventListener(this, eventTypes, path, isDeep, uuid, nodeTypes, noLocal);
    for (Node node = root; node.getDepth() > 0; ) {
      if (JcrHelper.isVirtualRoot(node)) {
        fro.subscribe(this, node);
        break;
      node = node.getParent();
    listenerPath = root.getPath();
    cmsEventDispatcherService.subscribe(listenerPath, this);
  } catch (PathNotFoundException pnfe) {

代码示例来源:origin: apache/jackrabbit

public void setUserData(String userData) throws RepositoryException {
    session.getWorkspace().getObservationManager().setUserData(userData);
  }
}

相关文章