Package org.alfresco.rest.api.impl
Class NodesImpl
java.lang.Object
org.alfresco.rest.api.impl.NodesImpl
- All Implemented Interfaces:
Nodes
Centralises access to file/folder/node services and maps between representations.
Note:
This class was originally used for returning some basic node info when listing Favourites.
It has now been re-purposed and extended to implement the new Nodes (RESTful) API for
managing files & folders, as well as custom node types.
- Since:
- publicapi1.0
- Author:
- steveglover, janv, Jamal Kaabi-Mofrad
-
Field Summary
FieldsModifier and TypeFieldDescriptionFields inherited from interface org.alfresco.rest.api.Nodes
OP_CREATE, OP_DELETE, OP_UPDATE, OP_UPDATE_PERMISSIONS, PARAM_ASSOC_TYPE, PARAM_AUTO_RENAME, PARAM_CREATEBYUSER, PARAM_CREATEDAT, PARAM_INCLUDE_ALLOWABLEOPERATIONS, PARAM_INCLUDE_ASPECTNAMES, PARAM_INCLUDE_ASSOCIATION, PARAM_INCLUDE_DEFINITION, PARAM_INCLUDE_ISFAVORITE, PARAM_INCLUDE_ISLINK, PARAM_INCLUDE_ISLOCKED, PARAM_INCLUDE_PATH, PARAM_INCLUDE_PERMISSIONS, PARAM_INCLUDE_PROPERTIES, PARAM_INCLUDE_SUBTYPES, PARAM_ISFILE, PARAM_ISFOLDER, PARAM_ISPRIMARY, PARAM_MIMETYPE, PARAM_MODIFIEDAT, PARAM_MODIFIEDBYUSER, PARAM_NAME, PARAM_NODETYPE, PARAM_OVERWRITE, PARAM_PERMANENT, PARAM_RELATIVE_PATH, PARAM_SIZEINBYTES, PARAM_VERSION_COMMENT, PARAM_VERSION_MAJOR, PATH_MY, PATH_ROOT, PATH_SHARED
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddChildren
(String parentNodeId, List<AssocChild> entities) void
addCustomAspects
(NodeRef nodeRef, List<String> aspectNames, List<org.alfresco.service.namespace.QName> excludedAspects) Add aspects to the specified NodeRef.addTargets
(String sourceNodeId, List<AssocTarget> entities) protected Set<org.alfresco.service.namespace.QName>
buildAssocTypes
(org.alfresco.service.namespace.QName assocTypeQName) buildSearchTypesAndIgnoreAspects
(Parameters parameters) buildSearchTypesAndIgnoreAspects
(org.alfresco.service.namespace.QName nodeTypeQName, boolean includeSubTypes, Set<org.alfresco.service.namespace.QName> ignoreQNameTypes, Boolean includeFiles, Boolean includeFolders) createNode
(String parentFolderNodeId, Node nodeInfo, Parameters parameters) Create node - folder or (empty) file.org.alfresco.service.namespace.QName
createQName
(String qnameStr) Helper to create a QName from either a fully qualified or short-name QName stringprotected List<org.alfresco.service.namespace.QName>
createQNames
(List<String> qnameStrList, List<org.alfresco.service.namespace.QName> excludedProps) Helper to create a QName from either a fully qualified or short-name QName stringprotected void
createVersion
(NodeRef nodeRef, boolean isVersioned, VersionType versionType, String reason) void
deleteNode
(String nodeId, Parameters parameters) Delete the given node.protected static String
determineActivityType
(org.alfresco.rest.api.impl.NodesImpl.Activity_Type activity_type, boolean isFolder) protected ActionService
protected ActivityInfo
getActivityInfo
(NodeRef parentNodeRef, NodeRef nodeRef) org.alfresco.service.namespace.QName
getAssocType
(String assocTypeQNameStr) org.alfresco.service.namespace.QName
getAssocType
(String assocTypeQNameStr, boolean mandatory) protected AuthorityService
getContent
(String fileNodeId, Parameters parameters, boolean recordActivity) Download file content.getContent
(NodeRef nodeRef, Parameters parameters, boolean recordActivity) Download file content.protected ContentService
protected org.alfresco.service.cmr.dictionary.DictionaryService
getDocument
(NodeRef nodeRef) Deprecated.note: currently required for backwards compat' (Favourites API)protected FileFolderService
Deprecated.note: currently required for backwards compat' (Favourites API)getFolderOrDocument
(String nodeId, Parameters parameters) Get the folder or document representation (as appropriate) for the given node.getFolderOrDocument
(NodeRef nodeRef, NodeRef parentNodeRef, org.alfresco.service.namespace.QName nodeTypeQName, List<String> includeParam, Map<String, UserInfo> mapUserInfo) Get the folder or document representation (as appropriate) for the given node.getFolderOrDocumentFullInfo
(NodeRef nodeRef, NodeRef parentNodeRef, org.alfresco.service.namespace.QName nodeTypeQName, Parameters parameters, Map<String, UserInfo> mapUserInfo) protected List<FilterProp>
getListChildrenFilterProps
(Parameters parameters) Returns a List of filter properties specified by request parameters.getListChildrenSortProps
(Parameters parameters) Returns a List of sort properties specified by the "sorting" request parameter.Returns the default sort order.protected LockService
protected MimetypeService
protected org.alfresco.service.namespace.NamespaceService
Deprecated.review usage (backward compat')Deprecated.review usage (backward compat')protected NodeService
protected OwnableService
protected PermissionService
protected PersonService
protected ActivityPoster
protected QuickShareLinks
protected Repository
protected RetryingTransactionHelper
protected SiteService
protected VirtualStore
protected ThumbnailService
Deprecated.protected VersionService
void
init()
protected boolean
isSpecialNode
(NodeRef nodeRef, org.alfresco.service.namespace.QName type) Check for special case: additional node validation (pending common lower-level service support) for blacklist of system nodes that should not be deleted or locked, eg.boolean
isSubClass
(NodeRef nodeRef, org.alfresco.service.namespace.QName ofClassQName, boolean validateNodeRef) Determines whether the type of the given nodeRef is a sub-class of another class or not.listChildren
(String parentFolderNodeId, Parameters parameters) Get list of children of a parent folder.lock
(String nodeId, LockInfo lockInfo, Parameters parameters) Lock a nodelookupPathInfo
(NodeRef nodeRefIn, ChildAssociationRef archivedParentAssoc) Returns the path to the given nodeRefnodeRefIn
or the archived nodeRefarchivedParentAssoc
.mapFromNodeAspects
(Set<org.alfresco.service.namespace.QName> nodeAspects, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedAspects) Map from aspects (Set of QName) retrieved from the repository to a map List of String required that can be formatted/expressed as required by the API JSON response for get nodes, get person etc.mapFromNodeProperties
(Map<org.alfresco.service.namespace.QName, Serializable> nodeProps, List<String> selectParam, Map<String, UserInfo> mapUserInfo, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedProps) Convert from node properties (map of QName to Serializable) retrieved from the respository to a map of String to Object that can be formatted/expressed as required by the API JSON response for get nodes, get person etc.Set<org.alfresco.service.namespace.QName>
mapToNodeAspects
(List<String> aspectNames) Map from a String representation of aspect names to a set of QName objects, as used by the repository.Map<org.alfresco.service.namespace.QName,
Serializable> mapToNodeProperties
(Map<String, Object> props) Map from the JSON API format of properties (String to Object) to the typical node properties map used by the repository (QName to Serializable).protected FileInfo
moveOrCopyImpl
(NodeRef nodeRef, NodeRef parentNodeRef, String name, boolean isCopy) moveOrCopyNode
(String sourceNodeId, String targetParentId, String name, Parameters parameters, boolean isCopy) Move or Copy nodeboolean
nodeMatches
(NodeRef nodeRef, Set<org.alfresco.service.namespace.QName> expectedTypes, Set<org.alfresco.service.namespace.QName> excludedTypes) protected void
postActivity
(org.alfresco.rest.api.impl.NodesImpl.Activity_Type activity_type, ActivityInfo activityInfo, boolean aSync) Posts activities based on the activity_type.protected void
processNodePermissions
(NodeRef nodeRef, Node nodeInfo) requestContentDirectUrl
(NodeRef nodeRef, boolean attachment, Long validFor) Gets a presigned URL to directly access content.protected NodeRef
resolveNodeByPath
(NodeRef parentNodeRef, String path, boolean checkForCompanyHome) void
setBehaviourFilter
(BehaviourFilter behaviourFilter) void
setClassDefinitionMapper
(ClassDefinitionMapper classDefinitionMapper) void
setIgnoreTypes
(Set<String> ignoreTypesAndAspects) void
setNonAttachContentTypes
(String nonAttachAllowListStr) void
setPersonLookupProperties
(Set<String> personLookupProperties) void
setPoster
(ActivityPoster poster) void
setQuickShareLinks
(QuickShareLinks quickShareLinks) void
setRepositoryHelper
(Repository repositoryHelper) void
void
setSmartStore
(VirtualStore smartStore) protected boolean
typeMatches
(org.alfresco.service.namespace.QName type, Set<org.alfresco.service.namespace.QName> expectedTypes, Set<org.alfresco.service.namespace.QName> excludedTypes) unlock
(String nodeId, Parameters parameters) Unlock a nodeupdateContent
(String fileNodeId, BasicContentInfo contentInfo, InputStream stream, Parameters parameters) Uploads file content (updates existing node with new content).void
updateCustomAspects
(NodeRef nodeRef, List<String> aspectNames, List<org.alfresco.service.namespace.QName> excludedAspects) Update aspects for the specified NodeRef.updateNode
(String nodeId, Node nodeInfo, Parameters parameters) Update node meta-data.protected NodeRef
updateNodeImpl
(String nodeId, Node nodeInfo, Parameters parameters) upload
(String parentFolderNodeId, org.springframework.extensions.webscripts.servlet.FormData formData, Parameters parameters) Uploads file content and meta-data into the repository.void
validateAspects
(List<String> aspectNames, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedAspects) validateNode
(String nodeId) validateNode
(NodeRef nodeRef) validateNode
(StoreRef storeRef, String nodeId) validateOrLookupNode
(String nodeId, String path) void
validateProperties
(Map<String, Object> properties, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedProperties) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.alfresco.rest.api.Nodes
requestContentDirectUrl, requestContentDirectUrl, requestContentDirectUrl
-
Field Details
-
PARAM_SYNONYMS_QNAME
-
-
Constructor Details
-
NodesImpl
public NodesImpl()
-
-
Method Details
-
setNonAttachContentTypes
-
init
public void init() -
setServiceRegistry
-
setBehaviourFilter
-
setRepositoryHelper
-
setIgnoreTypes
-
setPersonLookupProperties
-
setPoster
-
setSmartStore
-
setClassDefinitionMapper
-
validateNode
- Specified by:
validateNode
in interfaceNodes
-
validateNode
- Specified by:
validateNode
in interfaceNodes
-
validateNode
- Specified by:
validateNode
in interfaceNodes
-
nodeMatches
public boolean nodeMatches(NodeRef nodeRef, Set<org.alfresco.service.namespace.QName> expectedTypes, Set<org.alfresco.service.namespace.QName> excludedTypes) - Specified by:
nodeMatches
in interfaceNodes
-
isSubClass
public boolean isSubClass(NodeRef nodeRef, org.alfresco.service.namespace.QName ofClassQName, boolean validateNodeRef) Description copied from interface:Nodes
Determines whether the type of the given nodeRef is a sub-class of another class or not.- Specified by:
isSubClass
in interfaceNodes
- Parameters:
nodeRef
- source nodeRefofClassQName
- the class to test againstvalidateNodeRef
- whether to validate the given source node or not- Returns:
- true if the type of the given nodeRef is a sub-class of another class, otherwise false
-
typeMatches
-
getNode
Deprecated.review usage (backward compat')Description copied from interface:Nodes
Get the node representation for the given node. -
getNode
Deprecated.review usage (backward compat') -
getDocument
Deprecated.note: currently required for backwards compat' (Favourites API)Description copied from interface:Nodes
Get the document representation for the given node.- Specified by:
getDocument
in interfaceNodes
- Parameters:
nodeRef
- NodeRef- Returns:
- Document
-
getFolder
Deprecated.note: currently required for backwards compat' (Favourites API)Description copied from interface:Nodes
Get the folder representation for the given node. -
validateOrLookupNode
- Specified by:
validateOrLookupNode
in interfaceNodes
-
resolveNodeByPath
-
getFolderOrDocument
Description copied from interface:Nodes
Get the folder or document representation (as appropriate) for the given node.- Specified by:
getFolderOrDocument
in interfaceNodes
- Parameters:
nodeId
- String nodeId or well-known alias, eg. "-root-" or "-my-"parameters
- theParameters
object to get the parameters passed into the request including: - incPrimaryParent- Returns:
-
getFolderOrDocumentFullInfo
public Node getFolderOrDocumentFullInfo(NodeRef nodeRef, NodeRef parentNodeRef, org.alfresco.service.namespace.QName nodeTypeQName, Parameters parameters, Map<String, UserInfo> mapUserInfo) - Specified by:
getFolderOrDocumentFullInfo
in interfaceNodes
-
getFolderOrDocument
public Node getFolderOrDocument(NodeRef nodeRef, NodeRef parentNodeRef, org.alfresco.service.namespace.QName nodeTypeQName, List<String> includeParam, Map<String, UserInfo> mapUserInfo) Description copied from interface:Nodes
Get the folder or document representation (as appropriate) for the given node.- Specified by:
getFolderOrDocument
in interfaceNodes
- Parameters:
nodeRef
- A real Node- Returns:
-
lookupPathInfo
Description copied from interface:Nodes
Returns the path to the given nodeRefnodeRefIn
or the archived nodeRefarchivedParentAssoc
.- Specified by:
lookupPathInfo
in interfaceNodes
- Parameters:
nodeRefIn
- the NodeRefarchivedParentAssoc
- the ChildAssociationRef of the archived NodeRef- Returns:
- the path to the given node
-
mapToNodeAspects
Description copied from interface:Nodes
Map from a String representation of aspect names to a set of QName objects, as used by the repository.- Specified by:
mapToNodeAspects
in interfaceNodes
- Returns:
-
mapToNodeProperties
public Map<org.alfresco.service.namespace.QName,Serializable> mapToNodeProperties(Map<String, Object> props) Description copied from interface:Nodes
Map from the JSON API format of properties (String to Object) to the typical node properties map used by the repository (QName to Serializable).- Specified by:
mapToNodeProperties
in interfaceNodes
- Returns:
-
mapFromNodeProperties
public Map<String,Object> mapFromNodeProperties(Map<org.alfresco.service.namespace.QName, Serializable> nodeProps, List<String> selectParam, Map<String, UserInfo> mapUserInfo, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedProps) Description copied from interface:Nodes
Convert from node properties (map of QName to Serializable) retrieved from the respository to a map of String to Object that can be formatted/expressed as required by the API JSON response for get nodes, get person etc.Returns null if there are no properties to return, rather than an empty map.
- Specified by:
mapFromNodeProperties
in interfaceNodes
- Returns:
- The map of properties, or null if none to return.
-
mapFromNodeAspects
public List<String> mapFromNodeAspects(Set<org.alfresco.service.namespace.QName> nodeAspects, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedAspects) Description copied from interface:Nodes
Map from aspects (Set of QName) retrieved from the repository to a map List of String required that can be formatted/expressed as required by the API JSON response for get nodes, get person etc.Returns null if there are no aspect names to return, rather than an empty list.
- Specified by:
mapFromNodeAspects
in interfaceNodes
- Returns:
- The list of aspect names, or null if none to return.
-
listChildren
public CollectionWithPagingInfo<Node> listChildren(String parentFolderNodeId, Parameters parameters) Description copied from interface:Nodes
Get list of children of a parent folder.- Specified by:
listChildren
in interfaceNodes
- Parameters:
parentFolderNodeId
- String id of parent folder node or well-known alias, eg. "-root-" or "-my-"parameters
- theParameters
object to get the parameters passed into the request including: - filter, sort & paging params (where, orderBy, skipCount, maxItems) - incFiles, incFolders (both true by default)- Returns:
- a paged list of
org.alfresco.rest.api.model.Node
objects
-
getListChildrenFilterProps
Returns a List of filter properties specified by request parameters.
- Parameters:
parameters
- TheParameters
object to get the parameters passed into the request including: - filter, sort & paging params (where, orderBy, skipCount, maxItems) - incFiles, incFolders (both true by default)- Returns:
- The list of
FilterProp
. Can be null.
-
getListChildrenSortProps
protected List<Pair<org.alfresco.service.namespace.QName,Boolean>> getListChildrenSortProps(Parameters parameters) Returns a List of sort properties specified by the "sorting" request parameter.
- Parameters:
parameters
- TheParameters
object to get the parameters passed into the request including: - filter, sort & paging params (where, orderBy, skipCount, maxItems) - incFiles, incFolders (both true by default)- Returns:
- The list of
Pair<QName, Boolean>
sort properties. If no sort parameters are found defaults togetListChildrenSortPropsDefault
.
-
getListChildrenSortPropsDefault
protected List<Pair<org.alfresco.service.namespace.QName,Boolean>> getListChildrenSortPropsDefault()Returns the default sort order.
- Returns:
- The list of
Pair<QName, Boolean>
sort properties.
-
buildAssocTypes
protected Set<org.alfresco.service.namespace.QName> buildAssocTypes(org.alfresco.service.namespace.QName assocTypeQName) -
buildSearchTypesAndIgnoreAspects
protected Pair<Set<org.alfresco.service.namespace.QName>,Set<org.alfresco.service.namespace.QName>> buildSearchTypesAndIgnoreAspects(org.alfresco.service.namespace.QName nodeTypeQName, boolean includeSubTypes, Set<org.alfresco.service.namespace.QName> ignoreQNameTypes, Boolean includeFiles, Boolean includeFolders) -
buildSearchTypesAndIgnoreAspects
protected Pair<Set<org.alfresco.service.namespace.QName>,Set<org.alfresco.service.namespace.QName>> buildSearchTypesAndIgnoreAspects(Parameters parameters) -
deleteNode
Description copied from interface:Nodes
Delete the given node. Note: will cascade delete for a folder.- Specified by:
deleteNode
in interfaceNodes
- Parameters:
nodeId
- String id of node (folder or document)parameters
- theParameters
object to get the parameters passed into the request - permanent (default false)
-
createNode
Description copied from interface:Nodes
Create node - folder or (empty) file.- Specified by:
createNode
in interfaceNodes
- Returns:
-
addCustomAspects
public void addCustomAspects(NodeRef nodeRef, List<String> aspectNames, List<org.alfresco.service.namespace.QName> excludedAspects) Description copied from interface:Nodes
Add aspects to the specified NodeRef. Aspects that appear in the exclusions list will be ignored.- Specified by:
addCustomAspects
in interfaceNodes
-
addChildren
- Specified by:
addChildren
in interfaceNodes
- Returns:
-
addTargets
- Specified by:
addTargets
in interfaceNodes
- Returns:
-
getAssocType
- Specified by:
getAssocType
in interfaceNodes
-
getAssocType
public org.alfresco.service.namespace.QName getAssocType(String assocTypeQNameStr, boolean mandatory) - Specified by:
getAssocType
in interfaceNodes
-
postActivity
protected void postActivity(org.alfresco.rest.api.impl.NodesImpl.Activity_Type activity_type, ActivityInfo activityInfo, boolean aSync) Posts activities based on the activity_type. If the method is called with aSync=true then a TransactionListener is used post the activity afterCommit. Otherwise the activity posting is done synchronously.- Parameters:
activity_type
-activityInfo
-aSync
-
-
getActivityInfo
-
determineActivityType
protected static String determineActivityType(org.alfresco.rest.api.impl.NodesImpl.Activity_Type activity_type, boolean isFolder) -
isSpecialNode
Check for special case: additional node validation (pending common lower-level service support) for blacklist of system nodes that should not be deleted or locked, eg. Company Home, Sites, Data Dictionary- Parameters:
nodeRef
-type
-- Returns:
-
updateNode
Description copied from interface:Nodes
Update node meta-data.- Specified by:
updateNode
in interfaceNodes
- Returns:
-
updateNodeImpl
-
processNodePermissions
-
moveOrCopyNode
public Node moveOrCopyNode(String sourceNodeId, String targetParentId, String name, Parameters parameters, boolean isCopy) Description copied from interface:Nodes
Move or Copy node- Specified by:
moveOrCopyNode
in interfaceNodes
- Returns:
-
updateCustomAspects
public void updateCustomAspects(NodeRef nodeRef, List<String> aspectNames, List<org.alfresco.service.namespace.QName> excludedAspects) Description copied from interface:Nodes
Update aspects for the specified NodeRef. An empty list will result in aspects being removed.- Specified by:
updateCustomAspects
in interfaceNodes
-
moveOrCopyImpl
-
getContent
Description copied from interface:Nodes
Download file content.- Specified by:
getContent
in interfaceNodes
recordActivity
- true, if an activity post is required.- Returns:
-
getContent
Description copied from interface:Nodes
Download file content.- Specified by:
getContent
in interfaceNodes
- Parameters:
nodeRef
- the content nodeRefrecordActivity
- true, if an activity post is required.- Returns:
-
updateContent
public Node updateContent(String fileNodeId, BasicContentInfo contentInfo, InputStream stream, Parameters parameters) Description copied from interface:Nodes
Uploads file content (updates existing node with new content). Note: may create a new version, depending on versioning behaviour.- Specified by:
updateContent
in interfaceNodes
- Returns:
-
createVersion
protected void createVersion(NodeRef nodeRef, boolean isVersioned, VersionType versionType, String reason) -
upload
public Node upload(String parentFolderNodeId, org.springframework.extensions.webscripts.servlet.FormData formData, Parameters parameters) Description copied from interface:Nodes
Uploads file content and meta-data into the repository.- Specified by:
upload
in interfaceNodes
- Parameters:
parentFolderNodeId
- String id of parent folder node or well-known alias, eg. "-root-" or "-my-"formData
- theFormData
parameters
- theParameters
object to get the parameters passed into the request- Returns:
Node
if successful
-
createQName
Helper to create a QName from either a fully qualified or short-name QName string- Specified by:
createQName
in interfaceNodes
- Parameters:
qnameStr
- Fully qualified or short-name QName string- Returns:
- QName
-
createQNames
protected List<org.alfresco.service.namespace.QName> createQNames(List<String> qnameStrList, List<org.alfresco.service.namespace.QName> excludedProps) Helper to create a QName from either a fully qualified or short-name QName string- Parameters:
qnameStrList
- list of fully qualified or short-name QName stringexcludedProps
-- Returns:
- a list of
QName
objects
-
lock
Description copied from interface:Nodes
Lock a node -
unlock
Description copied from interface:Nodes
Unlock a node -
requestContentDirectUrl
Gets a presigned URL to directly access content.- Specified by:
requestContentDirectUrl
in interfaceNodes
- Parameters:
nodeRef
- The node reference for which to obtain the direct accessURL
attachment
-true
if an attachmentURL
is requested,false
for an embeddedURL
.validFor
- The time at which the direct accessURL
will expire.- Returns:
- A direct access
URL
object for the content.
-
validateAspects
public void validateAspects(List<String> aspectNames, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedAspects) - Specified by:
validateAspects
in interfaceNodes
-
validateProperties
public void validateProperties(Map<String, Object> properties, List<String> excludedNS, List<org.alfresco.service.namespace.QName> excludedProperties) - Specified by:
validateProperties
in interfaceNodes
-
getNodeService
-
getDictionaryService
protected org.alfresco.service.cmr.dictionary.DictionaryService getDictionaryService() -
getFileFolderService
-
getNamespaceService
protected org.alfresco.service.namespace.NamespaceService getNamespaceService() -
getPermissionService
-
getMimetypeService
-
getContentService
-
getActionService
-
getVersionService
-
getPersonService
-
getOwnableService
-
getAuthorityService
-
getThumbnailService
Deprecated. -
getSiteService
-
getPoster
-
getRetryingTransactionHelper
-
getLockService
-
getSmartStore
-
getRepositoryHelper
-