Search in sources :

Example 56 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method addAspect.

@Override
@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public void addAspect(NodeRef nodeRef, QName aspectTypeQName, Map<QName, Serializable> aspectProperties) throws InvalidNodeRefException, InvalidAspectException {
    // check that the aspect is legal
    AspectDefinition aspectDef = dictionaryService.getAspect(aspectTypeQName);
    if (aspectDef == null) {
        throw new InvalidAspectException("The aspect is invalid: " + aspectTypeQName, aspectTypeQName);
    }
    // Don't allow spoofed aspect(s) to be added
    if (aspectTypeQName.equals(ContentModel.ASPECT_PENDING_DELETE)) {
        throw new IllegalArgumentException("The aspect is reserved for system use: " + aspectTypeQName);
    }
    // Check the properties
    if (aspectProperties == null) {
        // Make a map
        aspectProperties = Collections.emptyMap();
    }
    // Make the properties immutable to be sure that they are not used incorrectly
    aspectProperties = Collections.unmodifiableMap(aspectProperties);
    // Invoke policy behaviours
    invokeBeforeUpdateNode(nodeRef);
    // Add aspect and defaults
    Pair<Long, NodeRef> nodePair = getNodePairNotNull(nodeRef);
    // SetProperties common tasks
    setPropertiesCommonWork(nodePair, aspectProperties);
    boolean modified = addAspectsAndProperties(nodePair, aspectTypeQName, null, null, Collections.singleton(aspectTypeQName), aspectProperties, false);
    if (modified) {
        // Invoke policy behaviours
        invokeOnUpdateNode(nodeRef);
    }
}
Also used : InvalidAspectException(org.alfresco.service.cmr.dictionary.InvalidAspectException) NodeRef(org.alfresco.service.cmr.repository.NodeRef) AspectDefinition(org.alfresco.service.cmr.dictionary.AspectDefinition) Extend(org.alfresco.traitextender.Extend)

Example 57 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method getSourceAssocs.

@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public List<AssociationRef> getSourceAssocs(NodeRef targetRef, QNamePattern qnamePattern) {
    Pair<Long, NodeRef> targetNodePair = getNodePairNotNull(targetRef);
    Long targetNodeId = targetNodePair.getFirst();
    QName qnameFilter = null;
    if (qnamePattern instanceof QName) {
        qnameFilter = (QName) qnamePattern;
    }
    Collection<Pair<Long, AssociationRef>> assocPairs = nodeDAO.getSourceNodeAssocs(targetNodeId, qnameFilter);
    List<AssociationRef> nodeAssocRefs = new ArrayList<AssociationRef>(assocPairs.size());
    for (Pair<Long, AssociationRef> assocPair : assocPairs) {
        AssociationRef assocRef = assocPair.getSecond();
        // check qname pattern, if not already filtered
        if (qnameFilter == null && !qnamePattern.isMatch(assocRef.getTypeQName())) {
            // the assoc name doesn't match the pattern given
            continue;
        }
        nodeAssocRefs.add(assocRef);
    }
    // done
    return nodeAssocRefs;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) QName(org.alfresco.service.namespace.QName) ArrayList(java.util.ArrayList) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef) AssociationRef(org.alfresco.service.cmr.repository.AssociationRef) Pair(org.alfresco.util.Pair) Extend(org.alfresco.traitextender.Extend)

Example 58 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method getTargetAssocs.

@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public List<AssociationRef> getTargetAssocs(NodeRef sourceRef, QNamePattern qnamePattern) {
    Pair<Long, NodeRef> sourceNodePair = getNodePairNotNull(sourceRef);
    Long sourceNodeId = sourceNodePair.getFirst();
    QName qnameFilter = null;
    if (qnamePattern instanceof QName) {
        qnameFilter = (QName) qnamePattern;
    }
    Collection<Pair<Long, AssociationRef>> assocPairs = nodeDAO.getTargetNodeAssocs(sourceNodeId, qnameFilter);
    List<AssociationRef> nodeAssocRefs = new ArrayList<AssociationRef>(assocPairs.size());
    for (Pair<Long, AssociationRef> assocPair : assocPairs) {
        AssociationRef assocRef = assocPair.getSecond();
        // check qname pattern, if not already filtered
        if (qnameFilter == null && !qnamePattern.isMatch(assocRef.getTypeQName())) {
            // the assoc name doesn't match the pattern given
            continue;
        }
        nodeAssocRefs.add(assocRef);
    }
    // done
    return nodeAssocRefs;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) QName(org.alfresco.service.namespace.QName) ArrayList(java.util.ArrayList) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef) AssociationRef(org.alfresco.service.cmr.repository.AssociationRef) Pair(org.alfresco.util.Pair) Extend(org.alfresco.traitextender.Extend)

Example 59 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method createStore.

/**
 * Defers to the typed service
 */
@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public StoreRef createStore(String protocol, String identifier) {
    StoreRef storeRef = new StoreRef(protocol, identifier);
    // invoke policies
    invokeBeforeCreateStore(ContentModel.TYPE_STOREROOT, storeRef);
    // create a new one
    Pair<Long, NodeRef> rootNodePair = nodeDAO.newStore(storeRef);
    NodeRef rootNodeRef = rootNodePair.getSecond();
    // invoke policies
    invokeOnCreateStore(rootNodeRef);
    // Done
    return storeRef;
}
Also used : StoreRef(org.alfresco.service.cmr.repository.StoreRef) NodeRef(org.alfresco.service.cmr.repository.NodeRef) Extend(org.alfresco.traitextender.Extend)

Example 60 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method createAssociation.

@Override
@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public AssociationRef createAssociation(NodeRef sourceRef, NodeRef targetRef, QName assocTypeQName) throws InvalidNodeRefException, AssociationExistsException {
    // The node(s) involved may not be pending deletion
    checkPendingDelete(sourceRef);
    checkPendingDelete(targetRef);
    Pair<Long, NodeRef> sourceNodePair = getNodePairNotNull(sourceRef);
    long sourceNodeId = sourceNodePair.getFirst();
    Pair<Long, NodeRef> targetNodePair = getNodePairNotNull(targetRef);
    long targetNodeId = targetNodePair.getFirst();
    // we are sure that the association doesn't exist - make it
    Long assocId = nodeDAO.newNodeAssoc(sourceNodeId, targetNodeId, assocTypeQName, -1);
    AssociationRef assocRef = new AssociationRef(assocId, sourceRef, assocTypeQName, targetRef);
    // Invoke policy behaviours
    invokeOnCreateAssociation(assocRef);
    // Add missing aspects
    addAspectsAndPropertiesAssoc(sourceNodePair, assocTypeQName, null, null, null, null, false);
    return assocRef;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef) AssociationRef(org.alfresco.service.cmr.repository.AssociationRef) Extend(org.alfresco.traitextender.Extend)

Aggregations

Extend (org.alfresco.traitextender.Extend)75 NodeRef (org.alfresco.service.cmr.repository.NodeRef)47 ChildAssociationRef (org.alfresco.service.cmr.repository.ChildAssociationRef)25 QName (org.alfresco.service.namespace.QName)21 ArrayList (java.util.ArrayList)19 Pair (org.alfresco.util.Pair)15 HashSet (java.util.HashSet)10 Serializable (java.io.Serializable)9 MutableInt (org.apache.commons.lang3.mutable.MutableInt)9 HashMap (java.util.HashMap)8 LinkedHashSet (java.util.LinkedHashSet)8 ChildAssocRefQueryCallback (org.alfresco.repo.domain.node.NodeDAO.ChildAssocRefQueryCallback)8 AssociationRef (org.alfresco.service.cmr.repository.AssociationRef)8 LockStatus (org.alfresco.service.cmr.lock.LockStatus)6 Version (org.alfresco.service.cmr.version.Version)6 NodeDAO (org.alfresco.repo.domain.node.NodeDAO)5 LockState (org.alfresco.repo.lock.mem.LockState)5 PermissionReference (org.alfresco.repo.security.permissions.PermissionReference)5 StoreRef (org.alfresco.service.cmr.repository.StoreRef)5 Map (java.util.Map)4