mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +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);
|
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
|
// TODO attachment header - update (or extend ?) REST fwk
|
||||||
return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT);
|
return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT, ci);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -38,12 +38,14 @@ public class NodeBinaryResource implements BinaryResource
|
|||||||
|
|
||||||
final NodeRef nodeRef;
|
final NodeRef nodeRef;
|
||||||
final QName propertyQName;
|
final QName propertyQName;
|
||||||
|
final ContentInfo contentInfo;
|
||||||
|
|
||||||
public NodeBinaryResource(NodeRef nodeRef, QName propertyQName)
|
public NodeBinaryResource(NodeRef nodeRef, QName propertyQName, ContentInfo contentInfo)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
this.nodeRef = nodeRef;
|
this.nodeRef = nodeRef;
|
||||||
this.propertyQName = propertyQName;
|
this.propertyQName = propertyQName;
|
||||||
|
this.contentInfo = contentInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NodeRef getNodeRef()
|
public NodeRef getNodeRef()
|
||||||
@@ -55,4 +57,8 @@ public class NodeBinaryResource implements BinaryResource
|
|||||||
{
|
{
|
||||||
return this.propertyQName;
|
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.Format;
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||||
import org.springframework.extensions.webscripts.WebScriptResponse;
|
import org.springframework.extensions.webscripts.WebScriptResponse;
|
||||||
|
import org.springframework.extensions.webscripts.WrappingWebScriptResponse;
|
||||||
import org.springframework.extensions.webscripts.servlet.WebScriptServletResponse;
|
import org.springframework.extensions.webscripts.servlet.WebScriptServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -244,15 +245,22 @@ public abstract class ApiWebScript extends AbstractWebScript
|
|||||||
//Set content info on the response
|
//Set content info on the response
|
||||||
res.setContentType(contentInfo.getMimeType());
|
res.setContentType(contentInfo.getMimeType());
|
||||||
res.setContentEncoding(contentInfo.getEncoding());
|
res.setContentEncoding(contentInfo.getEncoding());
|
||||||
|
|
||||||
|
if (res instanceof WrappingWebScriptResponse)
|
||||||
|
{
|
||||||
|
WrappingWebScriptResponse wrappedRes = ((WrappingWebScriptResponse) res);
|
||||||
|
res = wrappedRes.getNext();
|
||||||
|
}
|
||||||
|
|
||||||
if (res instanceof WebScriptServletResponse)
|
if (res instanceof WebScriptServletResponse)
|
||||||
{
|
{
|
||||||
WebScriptServletResponse servletResponse = (WebScriptServletResponse) res;
|
WebScriptServletResponse servletResponse = (WebScriptServletResponse) res;
|
||||||
if (contentInfo.getLength() > 0)
|
if (contentInfo.getLength() > 0)
|
||||||
{
|
{
|
||||||
if (contentInfo.getLength()>0 && contentInfo.getLength() < Integer.MAX_VALUE)
|
if (contentInfo.getLength() > 0 && contentInfo.getLength() < Integer.MAX_VALUE)
|
||||||
{
|
{
|
||||||
servletResponse.getHttpServletResponse().setContentLength((int)contentInfo.getLength());
|
servletResponse.getHttpServletResponse().setContentLength((int) contentInfo.getLength());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (contentInfo.getLocale() != null)
|
if (contentInfo.getLocale() != null)
|
||||||
{
|
{
|
||||||
@@ -260,7 +268,6 @@ public abstract class ApiWebScript extends AbstractWebScript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setResolver(ExceptionResolver<Exception> resolver)
|
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.EntityResourceAction.ReadById;
|
||||||
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
|
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
|
||||||
import org.alfresco.rest.framework.resource.content.BinaryResource;
|
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.CollectionWithPagingInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Params;
|
import org.alfresco.rest.framework.resource.parameters.Params;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Params.RecognizedParams;
|
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);
|
Object result = executeInternal(resource, params);
|
||||||
if (result instanceof BinaryResource)
|
if (result instanceof BinaryResource)
|
||||||
{
|
{
|
||||||
executionCallback.onSuccess(result, null);
|
ContentInfo ci = null;
|
||||||
|
if (result instanceof NodeBinaryResource) {
|
||||||
|
ci = ((NodeBinaryResource)result).getContentInfo();
|
||||||
|
}
|
||||||
|
executionCallback.onSuccess(result, ci);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user