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
This commit is contained in:
Nick Burch
2011-10-17 18:32:07 +00:00
parent 79551c3595
commit e621ff8353
3 changed files with 52 additions and 5 deletions

View File

@@ -26,6 +26,8 @@ import java.util.Map;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.alfresco.model.ContentModel; 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.lock.LockStatus;
import org.alfresco.service.cmr.model.FileExistsException; import org.alfresco.service.cmr.model.FileExistsException;
import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileFolderService;
@@ -168,6 +170,14 @@ public class PutMethod extends WebDAVMethod
// Write the new data to the content node // Write the new data to the content node
writer.putContent(is); 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 // Set the response status, depending if the node existed or not
m_response.setStatus(created ? HttpServletResponse.SC_CREATED : HttpServletResponse.SC_NO_CONTENT); m_response.setStatus(created ? HttpServletResponse.SC_CREATED : HttpServletResponse.SC_NO_CONTENT);
} }

View File

@@ -27,6 +27,7 @@ import java.util.StringTokenizer;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.lock.LockService; import org.alfresco.service.cmr.lock.LockService;
import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileFolderService;
@@ -75,6 +76,7 @@ public class WebDAVHelper
private DictionaryService m_dictionaryService; private DictionaryService m_dictionaryService;
private MimetypeService m_mimetypeService; private MimetypeService m_mimetypeService;
private LockService m_lockService; private LockService m_lockService;
private ActionService m_actionService;
private AuthenticationService m_authService; private AuthenticationService m_authService;
private PermissionService m_permissionService; private PermissionService m_permissionService;
@@ -96,6 +98,7 @@ public class WebDAVHelper
m_dictionaryService = m_serviceRegistry.getDictionaryService(); m_dictionaryService = m_serviceRegistry.getDictionaryService();
m_mimetypeService = m_serviceRegistry.getMimetypeService(); m_mimetypeService = m_serviceRegistry.getMimetypeService();
m_lockService = m_serviceRegistry.getLockService(); m_lockService = m_serviceRegistry.getLockService();
m_actionService = m_serviceRegistry.getActionService();
m_permissionService = m_serviceRegistry.getPermissionService(); m_permissionService = m_serviceRegistry.getPermissionService();
m_authService = authService; m_authService = authService;
@@ -170,6 +173,14 @@ public class WebDAVHelper
return m_lockService; return m_lockService;
} }
/**
* @return Return the action service
*/
public final ActionService getActionService()
{
return m_actionService;
}
/** /**
* *
* @return Return the permission service * @return Return the permission service

View File

@@ -51,6 +51,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.security.permissions.AccessDeniedException; import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.coci.CheckOutCheckInService; import org.alfresco.service.cmr.coci.CheckOutCheckInService;
import org.alfresco.service.cmr.lock.LockService; import org.alfresco.service.cmr.lock.LockService;
import org.alfresco.service.cmr.lock.LockStatus; import org.alfresco.service.cmr.lock.LockStatus;
@@ -662,6 +663,16 @@ public abstract class WebDAVMethod
return m_davHelper.getLockService(); 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 * 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();
}
} }