use of org.alfresco.sync.repo.Client in project alfresco-repository by Alfresco.
the class EventsServiceImpl method authorityAddedToGroup.
@Override
public void authorityAddedToGroup(String parentGroup, String childAuthority) {
if (includeEventType(AuthorityAddedToGroupEvent.EVENT_TYPE)) {
String username = AuthenticationUtil.getFullyAuthenticatedUser();
String networkId = TenantUtil.getCurrentDomain();
String txnId = AlfrescoTransactionSupport.getTransactionId();
long timestamp = System.currentTimeMillis();
Client client = getAlfrescoClient(ClientUtil.from(FileFilterMode.getClient()));
Event event = AuthorityAddedToGroupEvent.builder().parentGroup(parentGroup).authorityName(childAuthority).seqNumber(nextSequenceNumber()).txnId(txnId).networkId(networkId).timestamp(timestamp).username(username).client(client).build();
sendEvent(event);
}
}
use of org.alfresco.sync.repo.Client in project alfresco-repository by Alfresco.
the class EventsServiceImpl method grantLocalPermission.
@Override
public void grantLocalPermission(NodeRef nodeRef, String authority, String permission) {
NodeInfo nodeInfo = getNodeInfo(nodeRef, LocalPermissionGrantedEvent.EVENT_TYPE);
if (nodeInfo.checkNodeInfo()) {
String username = AuthenticationUtil.getFullyAuthenticatedUser();
String networkId = TenantUtil.getCurrentDomain();
String name = nodeInfo.getName();
String nodeId = nodeInfo.getNodeId();
String siteId = nodeInfo.getSiteId();
String txnId = AlfrescoTransactionSupport.getTransactionId();
List<String> nodePaths = nodeInfo.getPaths();
List<List<String>> pathNodeIds = nodeInfo.getParentNodeIds();
long timestamp = System.currentTimeMillis();
Long modificationTime = nodeInfo.getModificationTimestamp();
String nodeType = nodeInfo.getType().toPrefixString(namespaceService);
Client alfrescoClient = getAlfrescoClient(nodeInfo.getClient());
Set<String> aspects = nodeInfo.getAspectsAsStrings();
Map<String, Serializable> properties = nodeInfo.getProperties();
LocalPermissionGrantedEvent event = LocalPermissionGrantedEvent.builder().authority(authority).permission(permission).seqNumber(nextSequenceNumber()).name(name).txnId(txnId).timestamp(timestamp).networkId(networkId).siteId(siteId).nodeId(nodeId).nodeType(nodeType).paths(nodePaths).parentNodeIds(pathNodeIds).username(username).nodeModificationTime(modificationTime).client(alfrescoClient).aspects(aspects).nodeProperties(properties).build();
sendEvent(event);
}
}
use of org.alfresco.sync.repo.Client in project alfresco-repository by Alfresco.
the class AbstractEventsService method afterRollback.
@Override
public void afterRollback() {
String txnId = AlfrescoTransactionSupport.getTransactionId();
long timestamp = System.currentTimeMillis();
String networkId = TenantUtil.getCurrentDomain();
String username = AuthenticationUtil.getFullyAuthenticatedUser();
Client alfrescoClient = getAlfrescoClient(null);
Event event = new TransactionRolledBackEvent(nextSequenceNumber(), txnId, networkId, timestamp, username, alfrescoClient);
if (logger.isDebugEnabled()) {
logger.debug("sendEvent " + event);
}
try {
messageProducer.send(event);
} catch (MessagingException e) {
// throw new AlfrescoRuntimeException("Failed to send event", e);
// TODO just log for now. How to deal with no running ActiveMQ?
logger.error("Failed to send event " + event, e);
} finally {
TxnEvents events = (TxnEvents) AlfrescoTransactionSupport.getResource(EVENTS_KEY);
if (events != null) {
events.clear();
}
}
}
use of org.alfresco.sync.repo.Client in project alfresco-repository by Alfresco.
the class AbstractEventsService method afterCommit.
@Override
public void afterCommit() {
if (sendEventsBeforeCommit) {
if (!shouldSendCommitEvent()) {
return;
}
// send txn committed event
String txnId = AlfrescoTransactionSupport.getTransactionId();
long timestamp = System.currentTimeMillis();
String networkId = TenantUtil.getCurrentDomain();
String username = AuthenticationUtil.getFullyAuthenticatedUser();
Client alfrescoClient = getAlfrescoClient(null);
final Event event = new TransactionCommittedEvent(nextSequenceNumber(), txnId, networkId, timestamp, username, alfrescoClient);
if (logger.isDebugEnabled()) {
logger.debug("sendEvent " + event);
}
// Need to execute this in another read txn because Camel/JMS expects it (the config now seems to
// require a txn)
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() {
@Override
public Void execute() throws Throwable {
messageProducer.send(event);
return null;
}
}, true, false);
} else {
// send all events
final TxnEvents transactionEvents = (TxnEvents) AlfrescoTransactionSupport.getResource(EVENTS_KEY);
if (transactionEvents != null) {
List<Event> filteredEvents = filterEventsBeforeSend(transactionEvents.getEvents());
updateTransactionEvents(transactionEvents, filteredEvents);
transactionEvents.sendEvents();
}
}
}
use of org.alfresco.sync.repo.Client in project alfresco-repository by Alfresco.
the class AbstractEventsService method getNodeInfo.
protected NodeInfo getNodeInfo(final NodeRef nodeRef, final String eventType) {
NodeInfo nodeInfo = AuthenticationUtil.runAsSystem(new RunAsWork<NodeInfo>() {
public NodeInfo doWork() throws Exception {
NodeInfo nodeInfo = null;
String txnId = AlfrescoTransactionSupport.getTransactionId();
if (!includeEventType(eventType)) {
nodeInfo = new NodeInfo(eventType, null, null, nodeRef, null, null, null, null, null, null, null, null, false, null, null);
} else if (nodeRef == null || !nodeService.exists(nodeRef)) {
nodeInfo = new NodeInfo(eventType, txnId, null, nodeRef, null, null, null, null, null, null, null, false, true, false, null);
} else {
FileFilterMode.Client filterclient = FileFilterMode.getClient();
Visibility visibility = hiddenAspect.getVisibility(filterclient, nodeRef);
QName type = nodeService.getType(nodeRef);
if (!typeMatches(type)) {
nodeInfo = new NodeInfo(eventType, txnId, null, nodeRef, null, null, null, null, null, null, null, true, true, false, false);
} else if (!visibility.equals(Visibility.Visible)) {
nodeInfo = new NodeInfo(eventType, txnId, null, nodeRef, null, null, null, null, null, null, null, true, true, true, true);
} else {
SiteInfo siteInfo = siteService.getSite(nodeRef);
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
Set<QName> aspects = nodeService.getAspects(nodeRef);
final String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
List<Path> nodePaths = Collections.singletonList(nodeService.getPath(nodeRef));
Date modifiedTime = (Date) nodeService.getProperty(nodeRef, ContentModel.PROP_MODIFIED);
Long modificationTimestamp = (modifiedTime != null ? modifiedTime.getTime() : null);
Status status = nodeService.getNodeStatus(nodeRef);
Client client = ClientUtil.from(filterclient);
nodeInfo = new NodeInfo(eventType, txnId, name, nodeRef, status, nodePaths, modificationTimestamp, type, aspects, siteId, client, true, true, true, true);
}
}
return nodeInfo;
}
});
return nodeInfo;
}
Aggregations