From e621ff8353bb598cd3221b17e93634924aedbb6b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 17 Oct 2011 18:32:07 +0000 Subject: [PATCH] ALF-10618 Trigger the metadata extractor on webdav uploads, to mirror the behaviour on other content upload routes git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31299 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/webdav/PutMethod.java | 10 ++++++ .../alfresco/repo/webdav/WebDAVHelper.java | 11 ++++++ .../alfresco/repo/webdav/WebDAVMethod.java | 36 ++++++++++++++++--- 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/repo/webdav/PutMethod.java b/source/java/org/alfresco/repo/webdav/PutMethod.java index 67b6532005..39099f27d7 100644 --- a/source/java/org/alfresco/repo/webdav/PutMethod.java +++ b/source/java/org/alfresco/repo/webdav/PutMethod.java @@ -26,6 +26,8 @@ import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.alfresco.model.ContentModel; +import org.alfresco.repo.action.executer.ContentMetadataExtracter; +import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.lock.LockStatus; import org.alfresco.service.cmr.model.FileExistsException; import org.alfresco.service.cmr.model.FileFolderService; @@ -167,6 +169,14 @@ public class PutMethod extends WebDAVMethod // Write the new data to the content node writer.putContent(is); + + // Ask for the document metadata to be extracted + Action extract = getActionService().createAction(ContentMetadataExtracter.EXECUTOR_NAME); + if(extract != null) + { + extract.setExecuteAsynchronously(true); + getActionService().executeAction(extract, contentNodeInfo.getNodeRef()); + } // Set the response status, depending if the node existed or not m_response.setStatus(created ? HttpServletResponse.SC_CREATED : HttpServletResponse.SC_NO_CONTENT); diff --git a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java index 934ad89489..4107d22248 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java @@ -27,6 +27,7 @@ import java.util.StringTokenizer; import org.alfresco.model.ContentModel; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.lock.LockService; import org.alfresco.service.cmr.model.FileFolderService; @@ -75,6 +76,7 @@ public class WebDAVHelper private DictionaryService m_dictionaryService; private MimetypeService m_mimetypeService; private LockService m_lockService; + private ActionService m_actionService; private AuthenticationService m_authService; private PermissionService m_permissionService; @@ -96,6 +98,7 @@ public class WebDAVHelper m_dictionaryService = m_serviceRegistry.getDictionaryService(); m_mimetypeService = m_serviceRegistry.getMimetypeService(); m_lockService = m_serviceRegistry.getLockService(); + m_actionService = m_serviceRegistry.getActionService(); m_permissionService = m_serviceRegistry.getPermissionService(); m_authService = authService; @@ -170,6 +173,14 @@ public class WebDAVHelper return m_lockService; } + /** + * @return Return the action service + */ + public final ActionService getActionService() + { + return m_actionService; + } + /** * * @return Return the permission service diff --git a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java index a1edd39c0e..ba76b51724 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java @@ -51,6 +51,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.security.permissions.AccessDeniedException; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.coci.CheckOutCheckInService; import org.alfresco.service.cmr.lock.LockService; import org.alfresco.service.cmr.lock.LockStatus; @@ -662,6 +663,16 @@ public abstract class WebDAVMethod return m_davHelper.getLockService(); } + /** + * Convenience method to return the action service + * + * @return ActionService + */ + protected final ActionService getActionService() + { + return m_davHelper.getActionService(); + } + /** * Convenience method to return the permission service * @@ -1474,9 +1485,24 @@ public abstract class WebDAVMethod } } - - - - - + public String toString() + { + StringBuffer sb = new StringBuffer(); + + if(m_request != null) + { + sb.append("WebDAV "); + sb.append(m_request.getMethod()); + sb.append(" request for "); + sb.append(m_strPath); + } + else + { + sb.append("Inactive WebDAV request via "); + String clz = getClass().getName(); + sb.append(clz.substring(clz.lastIndexOf('.')+1)); + } + + return sb.toString(); + } }