From 29743b47b3f647d66847e46070ab3ed4f9a0971e Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 28 Mar 2012 15:49:13 +0000 Subject: [PATCH] WebDAV: fix broken litmus tests NullPointerExceptions were being caused when affected node is not within a site and when no Content-Type header was sent by the client. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@34866 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/webdav/DeleteMethod.java | 2 +- .../org/alfresco/repo/webdav/PutMethod.java | 4 ++-- .../org/alfresco/repo/webdav/WebDAVHelper.java | 17 +++++++++++------ .../org/alfresco/repo/webdav/WebDAVMethod.java | 2 -- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/source/java/org/alfresco/repo/webdav/DeleteMethod.java b/source/java/org/alfresco/repo/webdav/DeleteMethod.java index af1da7a626..2f4ca64977 100644 --- a/source/java/org/alfresco/repo/webdav/DeleteMethod.java +++ b/source/java/org/alfresco/repo/webdav/DeleteMethod.java @@ -139,7 +139,7 @@ public class DeleteMethod extends WebDAVMethod implements ActivityPostProducer String tenantDomain = getTenantDomain(); // Check there is enough information to publish site activity. - if (!siteId.equals(DEFAULT_SITE_ID)) + if (!siteId.equals(WebDAVHelper.EMPTY_SITE_ID)) { SiteService siteService = getServiceRegistry().getSiteService(); NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY); diff --git a/source/java/org/alfresco/repo/webdav/PutMethod.java b/source/java/org/alfresco/repo/webdav/PutMethod.java index 28b5a70432..056a0e569b 100644 --- a/source/java/org/alfresco/repo/webdav/PutMethod.java +++ b/source/java/org/alfresco/repo/webdav/PutMethod.java @@ -240,7 +240,7 @@ public class PutMethod extends WebDAVMethod implements ActivityPostProducer // If the mime-type determined by the repository is different // from the original specified in the request, update it. - if (!m_strContentType.equals(writer.getMimetype())) + if (m_strContentType == null || !m_strContentType.equals(writer.getMimetype())) { String oldMimeType = m_strContentType; m_strContentType = writer.getMimetype(); @@ -347,7 +347,7 @@ public class PutMethod extends WebDAVMethod implements ActivityPostProducer String siteId = getSiteId(); String tenantDomain = getTenantDomain(); - if (siteId.equals(DEFAULT_SITE_ID)) + if (siteId.equals(WebDAVHelper.EMPTY_SITE_ID)) { // There is not enough information to publish site activity. return; diff --git a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java index 8b7cd29008..34294e361b 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java @@ -24,8 +24,6 @@ import java.util.Collections; import java.util.List; import java.util.StringTokenizer; -import javax.servlet.http.HttpServletRequest; - import org.alfresco.model.ContentModel; import org.alfresco.repo.tenant.TenantService; import org.alfresco.service.ServiceRegistry; @@ -67,7 +65,7 @@ public class WebDAVHelper // Path seperator public static final String PathSeperator = "/"; public static final char PathSeperatorChar = '/'; - private static final String DEFAULT_SITE_ID = null; + public static final String EMPTY_SITE_ID = ""; // Logging private static Log logger = LogFactory.getLog("org.alfresco.webdav.protocol"); @@ -659,11 +657,18 @@ public class WebDAVHelper { FileInfo fileInfo = getNodeForPath(method.getRootNodeRef(), method.getPath(), method.getServletPath()); SiteInfo siteInfo = siteService.getSite(fileInfo.getNodeRef()); - siteId = siteInfo.getShortName(); + if (siteInfo != null) + { + siteId = siteInfo.getShortName(); + } + else + { + throw new RuntimeException("Node is not contained by a site: " + method.getPath()); + } } - catch (FileNotFoundException error) + catch (Exception error) { - siteId = DEFAULT_SITE_ID; + siteId = EMPTY_SITE_ID; } return siteId; } diff --git a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java index dbc5b860c0..381b784889 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java @@ -86,8 +86,6 @@ import org.xml.sax.SAXException; */ public abstract class WebDAVMethod { - protected static final String DEFAULT_SITE_ID = ""; - // Log output protected static Log logger = LogFactory.getLog("org.alfresco.webdav.protocol");