mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
75026: Merged WAT2 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 71710: Raises a ContentReadEvent when content is downloaded via webdav git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@75354 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -77,6 +77,7 @@
|
|||||||
<property name="urlPathPrefix">
|
<property name="urlPathPrefix">
|
||||||
<value>${system.webdav.url.path.prefix}</value>
|
<value>${system.webdav.url.path.prefix}</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="eventPublisher" ref="eventPublisher" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="defaultImageResolver" class="org.alfresco.repo.utils.FacesImageResolver" />
|
<bean id="defaultImageResolver" class="org.alfresco.repo.utils.FacesImageResolver" />
|
||||||
|
@@ -314,6 +314,7 @@ public class GetMethod extends WebDAVMethod
|
|||||||
{
|
{
|
||||||
if (byteRanges != null && byteRanges.startsWith(RANGE_HEADER_UNIT_SPECIFIER))
|
if (byteRanges != null && byteRanges.startsWith(RANGE_HEADER_UNIT_SPECIFIER))
|
||||||
{
|
{
|
||||||
|
m_davHelper.publishReadEvent(realNodeInfo, reader.getMimetype(), reader.getSize(), byteRanges.substring(6), reader.getEncoding());
|
||||||
HttpRangeProcessor rangeProcessor = new HttpRangeProcessor(getContentService());
|
HttpRangeProcessor rangeProcessor = new HttpRangeProcessor(getContentService());
|
||||||
String userAgent = m_request.getHeader(WebDAV.HEADER_USER_AGENT);
|
String userAgent = m_request.getHeader(WebDAV.HEADER_USER_AGENT);
|
||||||
|
|
||||||
@@ -336,7 +337,7 @@ public class GetMethod extends WebDAVMethod
|
|||||||
// there is content associated with the node
|
// there is content associated with the node
|
||||||
m_response.setHeader(WebDAV.HEADER_CONTENT_LENGTH, Long.toString(reader.getSize()));
|
m_response.setHeader(WebDAV.HEADER_CONTENT_LENGTH, Long.toString(reader.getSize()));
|
||||||
m_response.setHeader(WebDAV.HEADER_CONTENT_TYPE, reader.getMimetype());
|
m_response.setHeader(WebDAV.HEADER_CONTENT_TYPE, reader.getMimetype());
|
||||||
|
m_davHelper.publishReadEvent(realNodeInfo, reader.getMimetype(), reader.getSize(), null, reader.getEncoding());
|
||||||
// copy the content to the response output stream
|
// copy the content to the response output stream
|
||||||
reader.getContent(m_response.getOutputStream());
|
reader.getContent(m_response.getOutputStream());
|
||||||
}
|
}
|
||||||
|
@@ -32,8 +32,13 @@ import java.util.regex.Pattern;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.alfresco.events.types.ContentReadEvent;
|
||||||
|
import org.alfresco.events.types.ContentReadRangeEvent;
|
||||||
|
import org.alfresco.events.types.Event;
|
||||||
import org.alfresco.jlan.util.IPAddress;
|
import org.alfresco.jlan.util.IPAddress;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.events.EventPreparator;
|
||||||
|
import org.alfresco.repo.events.EventPublisher;
|
||||||
import org.alfresco.repo.lock.LockUtils;
|
import org.alfresco.repo.lock.LockUtils;
|
||||||
import org.alfresco.repo.model.filefolder.HiddenAspect;
|
import org.alfresco.repo.model.filefolder.HiddenAspect;
|
||||||
import org.alfresco.repo.policy.BehaviourFilter;
|
import org.alfresco.repo.policy.BehaviourFilter;
|
||||||
@@ -56,6 +61,7 @@ import org.alfresco.service.cmr.security.PermissionService;
|
|||||||
import org.alfresco.service.cmr.site.SiteService;
|
import org.alfresco.service.cmr.site.SiteService;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.util.EqualsHelper;
|
import org.alfresco.util.EqualsHelper;
|
||||||
|
import org.alfresco.util.FileFilterMode.Client;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.extensions.surf.util.URLDecoder;
|
import org.springframework.extensions.surf.util.URLDecoder;
|
||||||
@@ -86,7 +92,7 @@ public class WebDAVHelper
|
|||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
protected static Log logger = LogFactory.getLog("org.alfresco.webdav.protocol");
|
protected static Log logger = LogFactory.getLog("org.alfresco.webdav.protocol");
|
||||||
|
|
||||||
// Service registry TODO: eliminate this - not dependency injection!
|
// Service registry TODO: eliminate this - not dependency injection!
|
||||||
private ServiceRegistry m_serviceRegistry;
|
private ServiceRegistry m_serviceRegistry;
|
||||||
|
|
||||||
@@ -103,6 +109,7 @@ public class WebDAVHelper
|
|||||||
private PermissionService m_permissionService;
|
private PermissionService m_permissionService;
|
||||||
private TenantService m_tenantService;
|
private TenantService m_tenantService;
|
||||||
private HiddenAspect m_hiddenAspect;
|
private HiddenAspect m_hiddenAspect;
|
||||||
|
private EventPublisher eventPublisher;
|
||||||
|
|
||||||
// pattern is tested against full path after it has been lower cased.
|
// pattern is tested against full path after it has been lower cased.
|
||||||
private Pattern m_renameShufflePattern = Pattern.compile("(.*/\\..*)|(.*[a-f0-9]{8}+$)|(.*\\.tmp$)|(.*\\.wbk$)|(.*\\.bak$)|(.*\\~$)|(.*backup.*\\.do[ct]{1}[x]?[m]?$)|(.*\\.sb\\-\\w{8}\\-\\w{6}$)");
|
private Pattern m_renameShufflePattern = Pattern.compile("(.*/\\..*)|(.*[a-f0-9]{8}+$)|(.*\\.tmp$)|(.*\\.wbk$)|(.*\\.bak$)|(.*\\~$)|(.*backup.*\\.do[ct]{1}[x]?[m]?$)|(.*\\.sb\\-\\w{8}\\-\\w{6}$)");
|
||||||
@@ -318,6 +325,14 @@ public class WebDAVHelper
|
|||||||
this.m_namespaceService = namespaceService;
|
this.m_namespaceService = namespaceService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param eventPublisher the eventPublisher service
|
||||||
|
*/
|
||||||
|
public void setEventPublisher(EventPublisher eventPublisher)
|
||||||
|
{
|
||||||
|
this.eventPublisher = eventPublisher;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param dictionaryService the dictionary service
|
* @param dictionaryService the dictionary service
|
||||||
*/
|
*/
|
||||||
@@ -1063,6 +1078,39 @@ public class WebDAVHelper
|
|||||||
return urlStr.toString();
|
return urlStr.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies listeners that a read has taken place
|
||||||
|
* @param nodeRef
|
||||||
|
* @param propertyQName
|
||||||
|
* @param attach
|
||||||
|
* @param mimetype
|
||||||
|
* @param size
|
||||||
|
*/
|
||||||
|
protected void publishReadEvent(final FileInfo realNodeInfo, final String mimetype, final Long size, final String contentEncoding, final String range)
|
||||||
|
{
|
||||||
|
|
||||||
|
eventPublisher.publishEvent(new EventPreparator(){
|
||||||
|
@Override
|
||||||
|
public Event prepareEvent(String user, String networkId, String transactionId)
|
||||||
|
{
|
||||||
|
SiteService siteService = getServiceRegistry().getSiteService();
|
||||||
|
final String siteId = siteService.getSiteShortName(realNodeInfo.getNodeRef());
|
||||||
|
|
||||||
|
if (StringUtils.hasText(range))
|
||||||
|
{
|
||||||
|
return new ContentReadRangeEvent(user, networkId, transactionId, realNodeInfo.getNodeRef().getId(),
|
||||||
|
siteId, realNodeInfo.getType().toString(), Client.webdav, mimetype, size, contentEncoding, range);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new ContentReadEvent(ContentReadEvent.DOWNLOAD, user, networkId, transactionId, realNodeInfo.getNodeRef().getId(),
|
||||||
|
siteId, realNodeInfo.getType().toString(), Client.webdav, mimetype, size, contentEncoding);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public String getRepositoryPath(HttpServletRequest request)
|
public String getRepositoryPath(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
// Try and get the path
|
// Try and get the path
|
||||||
|
Reference in New Issue
Block a user