mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD (5.2) to 5.2.N (5.2.1)
126382 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 120441 jvonka: RA-727: REST fwk - fix GET node binary resource (setting of content info response headers) - including encoding (Content-Type charset) & locale (Content-Language) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126728 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1161,8 +1161,14 @@ public class NodesImpl implements Nodes
|
||||
throw new InvalidArgumentException("NodeId of content is expected: "+nodeRef);
|
||||
}
|
||||
|
||||
ContentData cd = (ContentData)nodeService.getProperty(nodeRef, ContentModel.PROP_CONTENT);
|
||||
org.alfresco.rest.framework.resource.content.ContentInfo ci = null;
|
||||
if (cd != null) {
|
||||
ci = new org.alfresco.rest.framework.resource.content.ContentInfoImpl(cd.getMimetype(), cd.getEncoding(), cd.getSize(), cd.getLocale());
|
||||
}
|
||||
|
||||
// TODO attachment header - update (or extend ?) REST fwk
|
||||
return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT);
|
||||
return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT, ci);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -38,12 +38,14 @@ public class NodeBinaryResource implements BinaryResource
|
||||
|
||||
final NodeRef nodeRef;
|
||||
final QName propertyQName;
|
||||
final ContentInfo contentInfo;
|
||||
|
||||
public NodeBinaryResource(NodeRef nodeRef, QName propertyQName)
|
||||
public NodeBinaryResource(NodeRef nodeRef, QName propertyQName, ContentInfo contentInfo)
|
||||
{
|
||||
super();
|
||||
this.nodeRef = nodeRef;
|
||||
this.propertyQName = propertyQName;
|
||||
this.contentInfo = contentInfo;
|
||||
}
|
||||
|
||||
public NodeRef getNodeRef()
|
||||
@@ -55,4 +57,8 @@ public class NodeBinaryResource implements BinaryResource
|
||||
{
|
||||
return this.propertyQName;
|
||||
}
|
||||
|
||||
public ContentInfo getContentInfo() {
|
||||
return this.contentInfo;
|
||||
}
|
||||
}
|
||||
|
@@ -53,6 +53,7 @@ import org.springframework.extensions.webscripts.Description.RequiredCache;
|
||||
import org.springframework.extensions.webscripts.Format;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
import org.springframework.extensions.webscripts.WebScriptResponse;
|
||||
import org.springframework.extensions.webscripts.WrappingWebScriptResponse;
|
||||
import org.springframework.extensions.webscripts.servlet.WebScriptServletResponse;
|
||||
|
||||
/**
|
||||
@@ -244,15 +245,22 @@ public abstract class ApiWebScript extends AbstractWebScript
|
||||
//Set content info on the response
|
||||
res.setContentType(contentInfo.getMimeType());
|
||||
res.setContentEncoding(contentInfo.getEncoding());
|
||||
|
||||
if (res instanceof WrappingWebScriptResponse)
|
||||
{
|
||||
WrappingWebScriptResponse wrappedRes = ((WrappingWebScriptResponse) res);
|
||||
res = wrappedRes.getNext();
|
||||
}
|
||||
|
||||
if (res instanceof WebScriptServletResponse)
|
||||
{
|
||||
WebScriptServletResponse servletResponse = (WebScriptServletResponse) res;
|
||||
if (contentInfo.getLength() > 0)
|
||||
{
|
||||
if (contentInfo.getLength()>0 && contentInfo.getLength() < Integer.MAX_VALUE)
|
||||
{
|
||||
servletResponse.getHttpServletResponse().setContentLength((int)contentInfo.getLength());
|
||||
}
|
||||
if (contentInfo.getLength() > 0 && contentInfo.getLength() < Integer.MAX_VALUE)
|
||||
{
|
||||
servletResponse.getHttpServletResponse().setContentLength((int) contentInfo.getLength());
|
||||
}
|
||||
}
|
||||
if (contentInfo.getLocale() != null)
|
||||
{
|
||||
@@ -260,7 +268,6 @@ public abstract class ApiWebScript extends AbstractWebScript
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setResolver(ExceptionResolver<Exception> resolver)
|
||||
|
@@ -38,6 +38,8 @@ import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAct
|
||||
import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction.ReadById;
|
||||
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
|
||||
import org.alfresco.rest.framework.resource.content.BinaryResource;
|
||||
import org.alfresco.rest.framework.resource.content.ContentInfo;
|
||||
import org.alfresco.rest.framework.resource.content.NodeBinaryResource;
|
||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||
import org.alfresco.rest.framework.resource.parameters.Params;
|
||||
import org.alfresco.rest.framework.resource.parameters.Params.RecognizedParams;
|
||||
@@ -220,7 +222,11 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
|
||||
Object result = executeInternal(resource, params);
|
||||
if (result instanceof BinaryResource)
|
||||
{
|
||||
executionCallback.onSuccess(result, null);
|
||||
ContentInfo ci = null;
|
||||
if (result instanceof NodeBinaryResource) {
|
||||
ci = ((NodeBinaryResource)result).getContentInfo();
|
||||
}
|
||||
executionCallback.onSuccess(result, ci);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user