use of com.enonic.xp.event.Event in project xp by enonic.
the class ClusterEventReceiver method onMessage.
@Override
public void onMessage(final Message<Event> message) {
final Member publishingMember = message.getPublishingMember();
if (publishingMember == null || !publishingMember.localMember()) {
final Event forwardedEvent = Event.create(message.getMessageObject()).distributed(false).localOrigin(false).build();
this.eventPublisher.publish(forwardedEvent);
}
}
use of com.enonic.xp.event.Event in project xp by enonic.
the class NodeEventListenerTest method node_renamed_event.
@Test
public void node_renamed_event() throws Exception {
final NodeId nodeId = NodeId.from("node1");
final NodePath nodePath = NodePath.create(NodePath.ROOT, "nodeName").build();
final Node sourceNode = Node.create().id(nodeId).parentPath(nodePath.getParentPath()).name(nodePath.getLastElement().toString()).build();
final Node movedNode = Node.create(sourceNode).parentPath(NodePath.create("newParent").build()).build();
final Event localEvent = NodeEvents.renamed(sourceNode.path(), movedNode);
nodeEventListener.onEvent(Event.create(localEvent).localOrigin(false).build());
final NodeMovedParams nodeMovedParams = new NodeMovedParams(sourceNode.path(), movedNode.path(), sourceNode.id());
Mockito.verify(nodeStorageService, Mockito.times(1)).handleNodeMoved(Mockito.eq(nodeMovedParams), Mockito.isA(InternalContext.class));
}
use of com.enonic.xp.event.Event in project xp by enonic.
the class ProjectContentEventListener method doHandleContentEvent.
private void doHandleContentEvent(final List<Map<String, String>> nodes, final String type) {
createAdminContext().runWith(() -> {
final Branch branch = Branch.from(nodes.stream().findAny().orElseThrow(() -> new IllegalArgumentException("nodes cannot be empty")).get("branch"));
if (!ContentConstants.BRANCH_DRAFT.equals(branch)) {
return;
}
final List<ContentId> contentIds = nodes.stream().map(map -> ContentId.from(map.get("id"))).collect(Collectors.toList());
final List<String> repoNames = nodes.stream().map(map -> map.get("repo")).distinct().collect(Collectors.toList());
if (repoNames.size() != 1) {
throw new IllegalArgumentException(repoNames.size() > 1 ? "An event cannot contain nodes from different repositories" : "An event must contain 'repo' property");
}
final ProjectName currentProjectName = ProjectName.from(RepositoryId.from(repoNames.get(0)));
if (currentProjectName == null) {
return;
}
final Project sourceProject = this.projectService.list().stream().filter(project -> currentProjectName.equals(project.getName())).findAny().orElseThrow(() -> new ProjectNotFoundException(currentProjectName));
this.projectService.list().stream().filter(project -> currentProjectName.equals(project.getParent())).forEach(targetProject -> {
final ContentEventsSyncParams.Builder paramsBuilder = ContentEventsSyncParams.create().addContentIds(contentIds).sourceProject(sourceProject.getName()).targetProject(targetProject.getName());
switch(type) {
case "node.created":
case "node.duplicated":
paramsBuilder.syncEventType(ContentSyncEventType.CREATED);
break;
case "node.updated":
case "node.pushed":
paramsBuilder.syncEventType(ContentSyncEventType.UPDATED);
break;
case "node.manualOrderUpdated":
paramsBuilder.syncEventType(ContentSyncEventType.MANUAL_ORDER_UPDATED);
break;
case "node.sorted":
paramsBuilder.syncEventType(ContentSyncEventType.SORTED);
break;
case "node.renamed":
paramsBuilder.syncEventType(ContentSyncEventType.RENAMED);
break;
case "node.moved":
paramsBuilder.syncEventType(ContentSyncEventType.MOVED);
break;
case "node.deleted":
paramsBuilder.syncEventType(ContentSyncEventType.DELETED);
break;
default:
LOG.debug("Ignoring node type: {}", type);
break;
}
final ContentEventsSyncParams params = paramsBuilder.build();
if (params.getSyncType() != null) {
contentSynchronizer.sync(params);
}
});
if (sourceProject.getParent() != null && "node.deleted".equals(type)) {
this.projectService.list().stream().filter(project -> project.getName().equals(sourceProject.getParent())).forEach(parentProject -> contentSynchronizer.sync(ContentSyncParams.create().addContentIds(contentIds).sourceProject(parentProject.getName()).targetProject(sourceProject.getName()).build()));
}
});
}
Aggregations