mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Feature/acs 1787 endpoint for deleted nodes (#672)
* Deleted Nodes DAU Skeleton * Copyright Dates Update * Spring Wiring and Default Method * Operation Name Change * Removal of unnecesary Method Calls and JavaDoc update * Updates from Review
This commit is contained in:
committed by
GitHub
parent
cff733bbdf
commit
f7e6320a83
@@ -2,7 +2,7 @@
|
|||||||
* #%L
|
* #%L
|
||||||
* Alfresco Remote API
|
* Alfresco Remote API
|
||||||
* %%
|
* %%
|
||||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
* Copyright (C) 2005 - 2021 Alfresco Software Limited
|
||||||
* %%
|
* %%
|
||||||
* This file is part of the Alfresco software.
|
* This file is part of the Alfresco software.
|
||||||
* If the software was purchased under a paid Alfresco license, the terms of
|
* If the software was purchased under a paid Alfresco license, the terms of
|
||||||
@@ -34,6 +34,7 @@ import org.alfresco.rest.api.model.UserInfo;
|
|||||||
import org.alfresco.rest.framework.resource.content.BinaryResource;
|
import org.alfresco.rest.framework.resource.content.BinaryResource;
|
||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||||
|
import org.alfresco.service.cmr.repository.DirectAccessUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles trashcan / deleted nodes
|
* Handles trashcan / deleted nodes
|
||||||
@@ -99,4 +100,27 @@ public interface DeletedNodes
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
CollectionWithPagingInfo<Rendition> getRenditions(String archivedId, Parameters parameters);
|
CollectionWithPagingInfo<Rendition> getRenditions(String archivedId, Parameters parameters);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a presigned URL to directly access content.
|
||||||
|
*
|
||||||
|
* @param archivedId The node id for which to obtain the direct access {@code URL}
|
||||||
|
* @param attachment {@code true} if an attachment {@code URL} is requested, {@code false} for an embedded {@code URL}, {@code true} by default.
|
||||||
|
* @return A direct access {@code URL} object for the content.
|
||||||
|
*/
|
||||||
|
default DirectAccessUrl requestContentDirectUrl(String archivedId, boolean attachment)
|
||||||
|
{
|
||||||
|
return requestContentDirectUrl(archivedId, attachment, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a presigned URL to directly access content.
|
||||||
|
*
|
||||||
|
* @param archivedId The node id for which to obtain the direct access {@code URL}
|
||||||
|
* @param attachment {@code true} if an attachment {@code URL} is requested, {@code false} for an embedded {@code URL}, {@code true} by default.
|
||||||
|
* @param validFor The time at which the direct access {@code URL} will expire.
|
||||||
|
* @return A direct access {@code URL} object for the content.
|
||||||
|
*/
|
||||||
|
DirectAccessUrl requestContentDirectUrl(String archivedId, boolean attachment, Long validFor);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* #%L
|
* #%L
|
||||||
* Alfresco Remote API
|
* Alfresco Remote API
|
||||||
* %%
|
* %%
|
||||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
* Copyright (C) 2005 - 2021 Alfresco Software Limited
|
||||||
* %%
|
* %%
|
||||||
* This file is part of the Alfresco software.
|
* This file is part of the Alfresco software.
|
||||||
* If the software was purchased under a paid Alfresco license, the terms of
|
* If the software was purchased under a paid Alfresco license, the terms of
|
||||||
@@ -55,6 +55,7 @@ import org.alfresco.rest.framework.resource.content.BinaryResource;
|
|||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||||
import org.alfresco.rest.framework.tools.RecognizedParamsExtractor;
|
import org.alfresco.rest.framework.tools.RecognizedParamsExtractor;
|
||||||
|
import org.alfresco.service.cmr.repository.DirectAccessUrl;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
@@ -244,4 +245,15 @@ public class DeletedNodesImpl implements DeletedNodes, RecognizedParamsExtractor
|
|||||||
NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_ARCHIVE_SPACESSTORE, archivedId);
|
NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_ARCHIVE_SPACESSTORE, archivedId);
|
||||||
return renditions.getRenditions(nodeRef, parameters);
|
return renditions.getRenditions(nodeRef, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DirectAccessUrl requestContentDirectUrl(String originalNodeId, boolean attachment, Long validFor)
|
||||||
|
{
|
||||||
|
//First check the node is valid and has been archived.
|
||||||
|
NodeRef validatedNodeRef = nodes.validateNode(StoreRef.STORE_REF_ARCHIVE_SPACESSTORE, originalNodeId);
|
||||||
|
return nodes.requestContentDirectUrl(validatedNodeRef, attachment, validFor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* #%L
|
* #%L
|
||||||
* Alfresco Remote API
|
* Alfresco Remote API
|
||||||
* %%
|
* %%
|
||||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
* Copyright (C) 2005 - 2021 Alfresco Software Limited
|
||||||
* %%
|
* %%
|
||||||
* This file is part of the Alfresco software.
|
* This file is part of the Alfresco software.
|
||||||
* If the software was purchased under a paid Alfresco license, the terms of
|
* If the software was purchased under a paid Alfresco license, the terms of
|
||||||
@@ -28,7 +28,10 @@ package org.alfresco.rest.api.trashcan;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.alfresco.repo.content.directurl.DirectAccessUrlDisabledException;
|
||||||
import org.alfresco.rest.api.DeletedNodes;
|
import org.alfresco.rest.api.DeletedNodes;
|
||||||
|
import org.alfresco.rest.api.DirectAccessUrlHelper;
|
||||||
|
import org.alfresco.rest.api.model.DirectAccessUrlRequest;
|
||||||
import org.alfresco.rest.api.model.Node;
|
import org.alfresco.rest.api.model.Node;
|
||||||
import org.alfresco.rest.api.model.NodeTargetAssoc;
|
import org.alfresco.rest.api.model.NodeTargetAssoc;
|
||||||
import org.alfresco.rest.framework.BinaryProperties;
|
import org.alfresco.rest.framework.BinaryProperties;
|
||||||
@@ -36,6 +39,7 @@ import org.alfresco.rest.framework.Operation;
|
|||||||
import org.alfresco.rest.framework.WebApiDescription;
|
import org.alfresco.rest.framework.WebApiDescription;
|
||||||
import org.alfresco.rest.framework.WebApiParam;
|
import org.alfresco.rest.framework.WebApiParam;
|
||||||
import org.alfresco.rest.framework.core.ResourceParameter;
|
import org.alfresco.rest.framework.core.ResourceParameter;
|
||||||
|
import org.alfresco.rest.framework.core.exceptions.DisabledServiceException;
|
||||||
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
import org.alfresco.rest.framework.resource.EntityResource;
|
import org.alfresco.rest.framework.resource.EntityResource;
|
||||||
import org.alfresco.rest.framework.resource.actions.interfaces.BinaryResourceAction;
|
import org.alfresco.rest.framework.resource.actions.interfaces.BinaryResourceAction;
|
||||||
@@ -44,6 +48,7 @@ import org.alfresco.rest.framework.resource.content.BinaryResource;
|
|||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||||
import org.alfresco.rest.framework.webscripts.WithResponse;
|
import org.alfresco.rest.framework.webscripts.WithResponse;
|
||||||
|
import org.alfresco.service.cmr.repository.DirectAccessUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of an Entity Resource for handling archived content
|
* An implementation of an Entity Resource for handling archived content
|
||||||
@@ -55,12 +60,18 @@ public class TrashcanEntityResource implements
|
|||||||
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>, EntityResourceAction.Delete, BinaryResourceAction.Read
|
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>, EntityResourceAction.Delete, BinaryResourceAction.Read
|
||||||
{
|
{
|
||||||
private DeletedNodes deletedNodes;
|
private DeletedNodes deletedNodes;
|
||||||
|
private DirectAccessUrlHelper directAccessUrlHelper;
|
||||||
|
|
||||||
public void setDeletedNodes(DeletedNodes deletedNodes)
|
public void setDeletedNodes(DeletedNodes deletedNodes)
|
||||||
{
|
{
|
||||||
this.deletedNodes = deletedNodes;
|
this.deletedNodes = deletedNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDirectAccessUrlHelper(DirectAccessUrlHelper directAccessUrlHelper)
|
||||||
|
{
|
||||||
|
this.directAccessUrlHelper = directAccessUrlHelper;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CollectionWithPagingInfo<Node> readAll(Parameters params)
|
public CollectionWithPagingInfo<Node> readAll(Parameters params)
|
||||||
{
|
{
|
||||||
@@ -89,6 +100,27 @@ public class TrashcanEntityResource implements
|
|||||||
return deletedNodes.getContent(nodeId, null, parameters);
|
return deletedNodes.getContent(nodeId, null, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation("requestDeletedNodeDirectAccessUrl")
|
||||||
|
@WebApiParam(name = "requestDeletedNodeDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
|
@WebApiDescription(title = "Request content url",
|
||||||
|
description="Generates a direct access URL.",
|
||||||
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
public DirectAccessUrl requestContentDirectUrl(String originalNodeId, DirectAccessUrlRequest directAccessUrlRequest, Parameters parameters, WithResponse withResponse)
|
||||||
|
{
|
||||||
|
boolean attachment = directAccessUrlHelper.getAttachment(directAccessUrlRequest);
|
||||||
|
Long validFor = directAccessUrlHelper.getDefaultExpiryTimeInSec();
|
||||||
|
DirectAccessUrl directAccessUrl;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
directAccessUrl = deletedNodes.requestContentDirectUrl(originalNodeId, attachment, validFor);
|
||||||
|
}
|
||||||
|
catch (DirectAccessUrlDisabledException ex)
|
||||||
|
{
|
||||||
|
throw new DisabledServiceException(ex.getMessage());
|
||||||
|
}
|
||||||
|
return directAccessUrl;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String nodeId, Parameters parameters)
|
public void delete(String nodeId, Parameters parameters)
|
||||||
{
|
{
|
||||||
|
@@ -995,9 +995,9 @@
|
|||||||
|
|
||||||
<bean class="org.alfresco.rest.api.trashcan.TrashcanEntityResource">
|
<bean class="org.alfresco.rest.api.trashcan.TrashcanEntityResource">
|
||||||
<property name="deletedNodes" ref="DeletedNodes" />
|
<property name="deletedNodes" ref="DeletedNodes" />
|
||||||
|
<property name="directAccessUrlHelper" ref="directAccessUrlHelper" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<bean class="org.alfresco.rest.api.quicksharelinks.QuickShareLinkEntityResource">
|
<bean class="org.alfresco.rest.api.quicksharelinks.QuickShareLinkEntityResource">
|
||||||
<property name="quickShareLinks" ref="QuickShareLinks" />
|
<property name="quickShareLinks" ref="QuickShareLinks" />
|
||||||
</bean>
|
</bean>
|
||||||
|
Reference in New Issue
Block a user