mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Feature/acs 1785 impl rest api for versions (#654)
* ACS-1783 Refactor Rest Api for Nodes * ACS-1783 Fix config default * ACS-1783 Updates for review * ACS-1785 Impl Rest Api for versions * ACS-1783 Fix missing properties defaults * ACS-1785 Minor code tidy up * ACS-1783 Remove properties defaults * ACS-1783 Omit enabled default * ACS-1785 Fix public-rest-context
This commit is contained in:
@@ -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
|
||||||
@@ -26,16 +26,22 @@
|
|||||||
package org.alfresco.rest.api.nodes;
|
package org.alfresco.rest.api.nodes;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.content.directurl.DirectAccessUrlDisabledException;
|
||||||
import org.alfresco.repo.node.integrity.IntegrityException;
|
import org.alfresco.repo.node.integrity.IntegrityException;
|
||||||
import org.alfresco.repo.policy.BehaviourFilter;
|
import org.alfresco.repo.policy.BehaviourFilter;
|
||||||
import org.alfresco.repo.version.Version2Model;
|
import org.alfresco.repo.version.Version2Model;
|
||||||
import org.alfresco.repo.version.VersionModel;
|
import org.alfresco.repo.version.VersionModel;
|
||||||
|
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.UserInfo;
|
import org.alfresco.rest.api.model.UserInfo;
|
||||||
import org.alfresco.rest.api.model.VersionOptions;
|
import org.alfresco.rest.api.model.VersionOptions;
|
||||||
import org.alfresco.rest.framework.BinaryProperties;
|
import org.alfresco.rest.framework.BinaryProperties;
|
||||||
import org.alfresco.rest.framework.Operation;
|
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.core.exceptions.EntityNotFoundException;
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
import org.alfresco.rest.framework.core.exceptions.PermissionDeniedException;
|
import org.alfresco.rest.framework.core.exceptions.PermissionDeniedException;
|
||||||
import org.alfresco.rest.framework.resource.RelationshipResource;
|
import org.alfresco.rest.framework.resource.RelationshipResource;
|
||||||
@@ -46,6 +52,7 @@ 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.coci.CheckOutCheckInService;
|
import org.alfresco.service.cmr.coci.CheckOutCheckInService;
|
||||||
|
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.security.AccessStatus;
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
import org.alfresco.service.cmr.security.PermissionService;
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
@@ -80,6 +87,12 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
{
|
{
|
||||||
protected VersionService versionService;
|
protected VersionService versionService;
|
||||||
protected BehaviourFilter behaviourFilter;
|
protected BehaviourFilter behaviourFilter;
|
||||||
|
private DirectAccessUrlHelper directAccessUrlHelper;
|
||||||
|
|
||||||
|
public void setDirectAccessUrlHelper(DirectAccessUrlHelper directAccessUrlHelper)
|
||||||
|
{
|
||||||
|
this.directAccessUrlHelper = directAccessUrlHelper;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet()
|
public void afterPropertiesSet()
|
||||||
@@ -288,4 +301,32 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation("requestNodeDirectAccessUrl")
|
||||||
|
@WebApiParam (name = "requestNodeDirectAccessUrl", 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();
|
||||||
|
Version version = findVersion(nodeId, versionId);
|
||||||
|
if (version != null)
|
||||||
|
{
|
||||||
|
NodeRef versionNodeRef = version.getFrozenStateNodeRef();
|
||||||
|
|
||||||
|
DirectAccessUrl directAccessUrl;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
directAccessUrl = nodes.requestContentDirectUrl(versionNodeRef, attachment, validFor);
|
||||||
|
}
|
||||||
|
catch (DirectAccessUrlDisabledException ex)
|
||||||
|
{
|
||||||
|
throw new DisabledServiceException(ex.getMessage());
|
||||||
|
}
|
||||||
|
return directAccessUrl;
|
||||||
|
}
|
||||||
|
throw new EntityNotFoundException(nodeId+"-"+versionId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user