diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 990b00cef0..a777ccc4cd 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -932,16 +932,17 @@ public class SiteServiceImpl implements SiteService, SiteModel } /** - * Gets the site node reference for a particular node reference + * This method gets the st:site NodeRef for the Share Site which contains the given NodeRef. + * If the given NodeRef is not contained within a Share Site, then null is returned. * - * @param nodeRef node reference + * @param nodeRef the node whose containing site is to be found. * @return NodeRef site node reference or null if node is not in a site */ private NodeRef getSiteNodeRef(NodeRef nodeRef) { NodeRef siteNodeRef = null; QName nodeRefType = nodeService.getType(nodeRef); - if (dictionaryService.isSubClass(TYPE_SITE, nodeRefType) == true) + if (dictionaryService.isSubClass(nodeRefType, TYPE_SITE) == true) { siteNodeRef = nodeRef; } diff --git a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java index 1e6fee6d06..ee1fee64f9 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -564,6 +564,14 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest siteInfo = this.siteService.getSite("testGetSite"); assertNotNull(siteInfo); checkSiteInfo(siteInfo, TEST_SITE_PRESET, "testGetSite", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PUBLIC); + + // Create a path to content within the site + NodeRef container = siteService.createContainer(siteInfo.getShortName(), "folder.component", ContentModel.TYPE_FOLDER, null); + NodeRef content = nodeService.createNode(container, ContentModel.ASSOC_CONTAINS, ContentModel.ASSOC_CONTAINS, ContentModel.TYPE_CONTENT).getChildRef(); + + // Get the site from the lower-level child node. + siteInfo = siteService.getSite(content); + checkSiteInfo(siteInfo, TEST_SITE_PRESET, "testGetSite", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PUBLIC); } public void testUpdateSite() diff --git a/source/java/org/alfresco/service/cmr/site/SiteService.java b/source/java/org/alfresco/service/cmr/site/SiteService.java index 40dd0b86cd..45644ec068 100644 --- a/source/java/org/alfresco/service/cmr/site/SiteService.java +++ b/source/java/org/alfresco/service/cmr/site/SiteService.java @@ -116,9 +116,11 @@ public interface SiteService SiteInfo getSite(String shortName); /** + * This method gets the {@link SiteInfo} for the Share Site which contains the given NodeRef. + * If the given NodeRef is not contained within a Share Site, then null is returned. * - * @param nodeRef - * @return + * @param nodeRef the node whose containing site's info is to be found. + * @return SiteInfo site information for the containing site or null if node is not in a site. */ @NotAuditable SiteInfo getSite(NodeRef nodeRef);