mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
MNT-12360 - Error on Alfresco Cloud accessing a content item: java.lang.OutOfMemoryError
- Fix to ensure download webscript is only using a readonly (non-buffered) txn - Activity creation only now performed in a new WRITE txn - UserAgent fix - handle as lowercase to avoid "FireFox" and "Firefox" issue - also added IE11 support to RFC5987 detection git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@86278 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -7,6 +7,6 @@
|
||||
<url>/slingshot/node/{store_type}/{store_id}/{id}/content{property}/{filename}?a={attach?}</url>
|
||||
<format default="">argument</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<transaction allow="readonly">required</transaction>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1855,6 +1855,7 @@
|
||||
<bean id="webscript.org.alfresco.slingshot.download.get" class="org.alfresco.slingshot.web.scripts.SlingshotContentGet" parent="webscript.org.alfresco.content.content.get">
|
||||
<property name="siteService" ref="SiteService" />
|
||||
<property name="poster" ref="activitiesPoster" />
|
||||
<property name="transactionHelper" ref="retryingTransactionHelper" />
|
||||
</bean>
|
||||
|
||||
<!-- Node browser web script -->
|
||||
|
@@ -142,16 +142,16 @@ public class ContentGet extends StreamContent implements ServletContextAware
|
||||
private void streamContentLocal(WebScriptRequest req, WebScriptResponse res, NodeRef nodeRef, boolean attach, QName propertyQName) throws IOException
|
||||
{
|
||||
String userAgent = req.getHeader("User-Agent");
|
||||
|
||||
boolean rfc5987Supported = (null != userAgent) && (userAgent.contains("MSIE") || userAgent.contains(" Chrome/") || userAgent.contains(" FireFox/"));
|
||||
userAgent = userAgent != null ? userAgent.toLowerCase() : "";
|
||||
boolean rfc5987Supported = (userAgent.contains("msie") || userAgent.contains(" trident/") || userAgent.contains(" chrome/") || userAgent.contains(" firefox/"));
|
||||
|
||||
if (attach && rfc5987Supported)
|
||||
{
|
||||
String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
|
||||
//IE use file extension to get mimetype
|
||||
//So we set correct extension. see MNT-11246
|
||||
if(userAgent.contains("MSIE"))
|
||||
// IE use file extension to get mimetype
|
||||
// So we set correct extension. see MNT-11246
|
||||
if (userAgent.contains("msie") || userAgent.contains(" trident/"))
|
||||
{
|
||||
String mimeType = contentService.getReader(nodeRef, propertyQName).getMimetype();
|
||||
if (!mimetypeService.getMimetypes(FilenameUtils.getExtension(name)).contains(mimeType))
|
||||
|
@@ -24,6 +24,8 @@ import java.util.Map;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.Client;
|
||||
import org.alfresco.repo.Client.ClientType;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||
import org.alfresco.repo.web.scripts.content.ContentGet;
|
||||
import org.alfresco.service.cmr.activities.ActivityPoster;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@@ -48,6 +50,7 @@ public class SlingshotContentGet extends ContentGet
|
||||
{
|
||||
protected SiteService siteService;
|
||||
private ActivityPoster poster;
|
||||
private RetryingTransactionHelper transactionHelper;
|
||||
|
||||
public void setSiteService(SiteService siteService)
|
||||
{
|
||||
@@ -59,9 +62,12 @@ public class SlingshotContentGet extends ContentGet
|
||||
this.poster = poster;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.web.scripts.content.ContentGet#execute(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.WebScriptResponse)
|
||||
*/
|
||||
public void setTransactionHelper(RetryingTransactionHelper transactionHelper)
|
||||
{
|
||||
this.transactionHelper = transactionHelper;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(final WebScriptRequest req, final WebScriptResponse res) throws IOException
|
||||
{
|
||||
@@ -87,9 +93,17 @@ public class SlingshotContentGet extends ContentGet
|
||||
{
|
||||
filename = (String)this.nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
}
|
||||
final String strFilename = filename;
|
||||
transactionHelper.doInTransaction(new RetryingTransactionCallback<Void>() {
|
||||
@Override
|
||||
public Void execute() throws Throwable
|
||||
{
|
||||
// post an activity - mirror the mechanism as if from the Share application
|
||||
poster.postFileFolderActivity(ActivityPoster.DOWNLOADED, null, null,
|
||||
site.getShortName(), null, nodeRef, filename, "documentlibrary", Client.asType(ClientType.webclient), null);
|
||||
site.getShortName(), null, nodeRef, strFilename, "documentlibrary", Client.asType(ClientType.webclient), null);
|
||||
return null;
|
||||
}
|
||||
}, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user