mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Feature/acs 1924 remove version renditions end point (#688)
* Revert "ACS-1833 - Test requestContentDirectUrl for Versions Renditions REST API endpoint (#675)" This reverts commit4aaae012
* ACS-1924 Remove endpoint for version rendition DAUs * ACS-1924 Correct WebApiParams To restore the direct access url version renditions code, do not just revert the whole commit. Instead: * Restore commit4aaae012
(this is the api test for direct access url version renditions) * Revert commit44ecb9d
(this is the endpoint for version rendition DAUs) * Do not revert commit7157328
(This is a correction the WebApiParams for several direct access url endpoints)
This commit is contained in:
@@ -120,7 +120,7 @@ public class NodeRenditionsRelation implements RelationshipResourceAction.Read<R
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation("request-direct-access-url")
|
@Operation("request-direct-access-url")
|
||||||
@WebApiParam (name = "requestRenditionDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
@WebApiParam (name = "directAccessUrlRequest", title = "Request direct access url", description = "Options for direct access url request", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
@WebApiDescription(title = "Request content url",
|
@WebApiDescription(title = "Request content url",
|
||||||
description="Generates a direct access URL.",
|
description="Generates a direct access URL.",
|
||||||
successStatus = HttpServletResponse.SC_OK)
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
@@ -26,28 +26,18 @@
|
|||||||
|
|
||||||
package org.alfresco.rest.api.nodes;
|
package org.alfresco.rest.api.nodes;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.alfresco.repo.content.directurl.DirectAccessUrlDisabledException;
|
|
||||||
import org.alfresco.rest.api.DirectAccessUrlHelper;
|
|
||||||
import org.alfresco.rest.api.Renditions;
|
import org.alfresco.rest.api.Renditions;
|
||||||
import org.alfresco.rest.api.model.DirectAccessUrlRequest;
|
|
||||||
import org.alfresco.rest.api.model.Rendition;
|
import org.alfresco.rest.api.model.Rendition;
|
||||||
import org.alfresco.rest.framework.BinaryProperties;
|
import org.alfresco.rest.framework.BinaryProperties;
|
||||||
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.core.ResourceParameter;
|
|
||||||
import org.alfresco.rest.framework.core.exceptions.DisabledServiceException;
|
|
||||||
import org.alfresco.rest.framework.resource.RelationshipResource;
|
import org.alfresco.rest.framework.resource.RelationshipResource;
|
||||||
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
|
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
|
||||||
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceBinaryAction;
|
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceBinaryAction;
|
||||||
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.rest.framework.webscripts.WithResponse;
|
|
||||||
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.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.util.PropertyCheck;
|
import org.alfresco.util.PropertyCheck;
|
||||||
@@ -62,7 +52,6 @@ import org.springframework.extensions.webscripts.Status;
|
|||||||
* - POST /nodes/{nodeId}/versions/{versionId}/renditions
|
* - POST /nodes/{nodeId}/versions/{versionId}/renditions
|
||||||
* - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}
|
* - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}
|
||||||
* - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content
|
* - GET /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content
|
||||||
* - POST /nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/requestVersionDirectAccessUrl
|
|
||||||
*
|
*
|
||||||
* @author janv
|
* @author janv
|
||||||
*/
|
*/
|
||||||
@@ -74,18 +63,12 @@ public class NodeVersionRenditionsRelation implements RelationshipResourceAction
|
|||||||
InitializingBean
|
InitializingBean
|
||||||
{
|
{
|
||||||
private Renditions renditions;
|
private Renditions renditions;
|
||||||
private DirectAccessUrlHelper directAccessUrlHelper;
|
|
||||||
|
|
||||||
public void setRenditions(Renditions renditions)
|
public void setRenditions(Renditions renditions)
|
||||||
{
|
{
|
||||||
this.renditions = renditions;
|
this.renditions = renditions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDirectAccessUrlHelper(DirectAccessUrlHelper directAccessUrlHelper)
|
|
||||||
{
|
|
||||||
this.directAccessUrlHelper = directAccessUrlHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception
|
public void afterPropertiesSet() throws Exception
|
||||||
{
|
{
|
||||||
@@ -132,28 +115,4 @@ public class NodeVersionRenditionsRelation implements RelationshipResourceAction
|
|||||||
return renditions.getContent(nodeRef, versionId, renditionId, parameters);
|
return renditions.getContent(nodeRef, versionId, renditionId, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation ("request-direct-access-url")
|
|
||||||
@WebApiParam (name = "requestVersionRenditionDirectAccessUrl", 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 nodeId, String versionId, DirectAccessUrlRequest directAccessUrlRequest, Parameters parameters, WithResponse withResponse)
|
|
||||||
{
|
|
||||||
boolean attachment = directAccessUrlHelper.getAttachment(directAccessUrlRequest);
|
|
||||||
Long validFor = directAccessUrlHelper.getDefaultExpiryTimeInSec();
|
|
||||||
NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId);
|
|
||||||
String renditionId = parameters.getRelationship2Id();
|
|
||||||
|
|
||||||
DirectAccessUrl directAccessUrl;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
directAccessUrl = renditions.requestContentDirectUrl(nodeRef, versionId, renditionId, attachment, validFor);
|
|
||||||
}
|
|
||||||
catch (DirectAccessUrlDisabledException ex)
|
|
||||||
{
|
|
||||||
throw new DisabledServiceException(ex.getMessage());
|
|
||||||
}
|
|
||||||
return directAccessUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -303,7 +303,7 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation("request-direct-access-url")
|
@Operation("request-direct-access-url")
|
||||||
@WebApiParam (name = "requestVersionDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
@WebApiParam (name = "directAccessUrlRequest", title = "Request direct access url", description = "Options for direct access url request", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
@WebApiDescription(title = "Request content url",
|
@WebApiDescription(title = "Request content url",
|
||||||
description="Generates a direct access URL.",
|
description="Generates a direct access URL.",
|
||||||
successStatus = HttpServletResponse.SC_OK)
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
@@ -203,7 +203,7 @@ public class NodesEntityResource implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation("request-direct-access-url")
|
@Operation("request-direct-access-url")
|
||||||
@WebApiParam(name = "requestNodeDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
@WebApiParam(name = "directAccessUrlRequest", title = "Request direct access url", description = "Options for direct access url request", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
@WebApiDescription(title = "Request content url",
|
@WebApiDescription(title = "Request content url",
|
||||||
description="Generates a direct access URL.",
|
description="Generates a direct access URL.",
|
||||||
successStatus = HttpServletResponse.SC_OK)
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
@@ -101,7 +101,7 @@ public class TrashcanEntityResource implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation("request-direct-access-url")
|
@Operation("request-direct-access-url")
|
||||||
@WebApiParam(name = "requestDeletedNodeDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
@WebApiParam(name = "directAccessUrlRequest", title = "Request direct access url", description = "Options for direct access url request", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
@WebApiDescription(title = "Request content url",
|
@WebApiDescription(title = "Request content url",
|
||||||
description="Generates a direct access URL.",
|
description="Generates a direct access URL.",
|
||||||
successStatus = HttpServletResponse.SC_OK)
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
@@ -90,7 +90,7 @@ public class TrashcanRenditionsRelation
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation ("request-direct-access-url")
|
@Operation ("request-direct-access-url")
|
||||||
@WebApiParam (name = "requestArchivedNodeRenditionDirectAccessUrl", title = "Request direct access url", description = "Request direct access url", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
@WebApiParam (name = "directAccessUrlRequest", title = "Request direct access url", description = "Options for direct access url request", kind = ResourceParameter.KIND.HTTP_BODY_OBJECT)
|
||||||
@WebApiDescription(title = "Request content url",
|
@WebApiDescription(title = "Request content url",
|
||||||
description="Generates a direct access URL.",
|
description="Generates a direct access URL.",
|
||||||
successStatus = HttpServletResponse.SC_OK)
|
successStatus = HttpServletResponse.SC_OK)
|
||||||
|
@@ -1429,7 +1429,6 @@
|
|||||||
|
|
||||||
<bean class="org.alfresco.rest.api.nodes.NodeVersionRenditionsRelation">
|
<bean class="org.alfresco.rest.api.nodes.NodeVersionRenditionsRelation">
|
||||||
<property name="renditions" ref="Renditions" />
|
<property name="renditions" ref="Renditions" />
|
||||||
<property name="directAccessUrlHelper" ref="directAccessUrlHelper" />
|
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean class="org.alfresco.rest.api.quicksharelinks.QuickShareLinkRenditionsRelation">
|
<bean class="org.alfresco.rest.api.quicksharelinks.QuickShareLinkRenditionsRelation">
|
||||||
|
@@ -141,8 +141,6 @@ public class NodeApiTest extends AbstractSingleNetworkSiteTest
|
|||||||
private String groupA = null;
|
private String groupA = null;
|
||||||
private String groupB = null;
|
private String groupB = null;
|
||||||
|
|
||||||
private final static long DELAY_IN_MS = 500;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception
|
public void setup() throws Exception
|
||||||
{
|
{
|
||||||
@@ -6368,112 +6366,5 @@ public class NodeApiTest extends AbstractSingleNetworkSiteTest
|
|||||||
|
|
||||||
HttpResponse dauResponse = post(getRequestContentDirectUrl(contentNodeId), null, null, null, null, 501);
|
HttpResponse dauResponse = post(getRequestContentDirectUrl(contentNodeId), null, null, null, null, 501);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCreateRenditionForNewVersion() throws Exception
|
|
||||||
{
|
|
||||||
setRequestContext(user1);
|
|
||||||
|
|
||||||
RepoService.TestNetwork networkN1;
|
|
||||||
RepoService.TestPerson userOneN1;
|
|
||||||
Site userOneN1Site;
|
|
||||||
|
|
||||||
networkN1 = repoService.createNetworkWithAlias("ping", true);
|
|
||||||
networkN1.create();
|
|
||||||
userOneN1 = networkN1.createUser();
|
|
||||||
|
|
||||||
setRequestContext(networkN1.getId(), userOneN1.getId(), null);
|
|
||||||
|
|
||||||
String siteTitle = "RandomSite" + System.currentTimeMillis();
|
|
||||||
userOneN1Site = createSite(siteTitle, SiteVisibility.PRIVATE);
|
|
||||||
|
|
||||||
String PROP_LTM = "cm:lastThumbnailModification";
|
|
||||||
|
|
||||||
String RENDITION_NAME = "imgpreview";
|
|
||||||
|
|
||||||
String userId = userOneN1.getId();
|
|
||||||
setRequestContext(networkN1.getId(), userOneN1.getId(), null);
|
|
||||||
|
|
||||||
// Create a folder within the site document's library
|
|
||||||
String folderName = "folder" + System.currentTimeMillis();
|
|
||||||
String parentId = getSiteContainerNodeId(userOneN1Site.getId(), "documentLibrary");
|
|
||||||
String folder_Id = createNode(parentId, folderName, TYPE_CM_FOLDER, null).getId();
|
|
||||||
|
|
||||||
// Create multipart request - pdf file
|
|
||||||
String fileName = "quick.pdf";
|
|
||||||
File file = getResourceFile(fileName);
|
|
||||||
MultiPartRequest reqBody = MultiPartBuilder.create()
|
|
||||||
.setFileData(new FileData(fileName, file))
|
|
||||||
.build();
|
|
||||||
Map<String, String> params = Collections.singletonMap("include", "properties");
|
|
||||||
|
|
||||||
// Upload quick.pdf file into 'folder' - do not include request to create 'doclib' thumbnail
|
|
||||||
HttpResponse response = post(getNodeChildrenUrl(folder_Id), reqBody.getBody(), params, null, "alfresco", reqBody.getContentType(), 201);
|
|
||||||
Document document1 = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
|
||||||
String contentNodeId = document1.getId();
|
|
||||||
assertNotNull(document1.getProperties());
|
|
||||||
|
|
||||||
// pause briefly
|
|
||||||
Thread.sleep(DELAY_IN_MS);
|
|
||||||
|
|
||||||
// Get rendition (not created yet) information for node
|
|
||||||
response = getSingle(getNodeRenditionsUrl(contentNodeId), RENDITION_NAME, 200);
|
|
||||||
Rendition rendition = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Rendition.class);
|
|
||||||
assertNotNull(rendition);
|
|
||||||
assertEquals(Rendition.RenditionStatus.NOT_CREATED, rendition.getStatus());
|
|
||||||
|
|
||||||
params = new HashMap<>();
|
|
||||||
params.put("placeholder", "false");
|
|
||||||
getSingle(getNodeRenditionsUrl(contentNodeId), (RENDITION_NAME+"/content"), params, 404);
|
|
||||||
|
|
||||||
// Create and get 'imgpreview' rendition
|
|
||||||
rendition = createAndGetRendition(contentNodeId, RENDITION_NAME);
|
|
||||||
assertNotNull(rendition);
|
|
||||||
|
|
||||||
params = new HashMap<>();
|
|
||||||
params.put("placeholder", "false");
|
|
||||||
response = getSingle(getNodeRenditionsUrl(contentNodeId), (RENDITION_NAME+"/content"), params, 200);
|
|
||||||
|
|
||||||
byte[] renditionBytes1 = response.getResponseAsBytes();
|
|
||||||
assertNotNull(renditionBytes1);
|
|
||||||
|
|
||||||
// check node details ...
|
|
||||||
params = Collections.singletonMap("include", "properties");
|
|
||||||
response = getSingle(NodesEntityResource.class, contentNodeId, params, 200);
|
|
||||||
Document document1b = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
|
||||||
assertEquals(document1b.getModifiedByUser().getId(), document1.getModifiedByUser().getId());
|
|
||||||
|
|
||||||
// upload another version of "quick.pdf" and check again
|
|
||||||
fileName = "quick-2.pdf";
|
|
||||||
file = getResourceFile(fileName);
|
|
||||||
reqBody = MultiPartBuilder.create()
|
|
||||||
.setFileData(new FileData("quick.pdf", file))
|
|
||||||
.setOverwrite(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
response = post(getNodeChildrenUrl(folder_Id), reqBody.getBody(), null, null, "alfresco", reqBody.getContentType(), 201);
|
|
||||||
Document document2 = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
|
||||||
assertEquals(contentNodeId, document2.getId());
|
|
||||||
|
|
||||||
// wait to allow new version of the rendition to be created ...
|
|
||||||
Thread.sleep(DELAY_IN_MS * 4);
|
|
||||||
|
|
||||||
params = new HashMap<>();
|
|
||||||
params.put("placeholder", "false");
|
|
||||||
response = getSingle(getNodeRenditionsUrl(contentNodeId), (RENDITION_NAME+"/content"), params, 200);
|
|
||||||
assertNotNull(response.getResponseAsBytes());
|
|
||||||
|
|
||||||
// check rendition binary has changed
|
|
||||||
assertNotEquals(renditionBytes1, response.getResponseAsBytes());
|
|
||||||
|
|
||||||
params = Collections.singletonMap("include", "properties");
|
|
||||||
response = getSingle(NodesEntityResource.class, contentNodeId, params, 200);
|
|
||||||
Document document2b = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
|
||||||
|
|
||||||
String contentNodeId2b = document2b.getId();
|
|
||||||
HttpResponse dauResponse = post(getRequestContentDirectUrl(contentNodeId2b), null, null, null, null, 501);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user