diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index ad0e25ca42..31aaf020de 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -2262,10 +2262,11 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic List groups = getPermissionGroups(shortName, authorityName); for (String group : groups) { - int index = group.indexOf(shortName) + shortName.length(); + String shortNamePattern = '_' + shortName + '_'; + int index = group.lastIndexOf(shortNamePattern) + (shortNamePattern).length(); if (index != -1) { - result.add(group.substring(index + 1)); + result.add(group.substring(index)); } } return result; diff --git a/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java b/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java index 425f0025ba..c313557ca1 100644 --- a/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java @@ -40,6 +40,7 @@ import javax.mail.internet.MimeMessage; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.MailActionExecuter; import org.alfresco.repo.management.subsystems.ApplicationContextFactory; +import org.alfresco.repo.processor.TemplateServiceImpl; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.site.SiteModel; @@ -51,9 +52,7 @@ import org.alfresco.service.cmr.invitation.InvitationService; import org.alfresco.service.cmr.invitation.ModeratedInvitation; import org.alfresco.service.cmr.invitation.NominatedInvitation; import org.alfresco.service.cmr.repository.TemplateService; -import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.PersonService; -import org.alfresco.service.cmr.security.PersonService.PersonInfo; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; @@ -62,7 +61,6 @@ import org.alfresco.util.PropertyMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.ReflectionUtils; -import org.alfresco.repo.processor.TemplateServiceImpl; /** * Unit tests of Invitation Service @@ -661,6 +659,39 @@ public abstract class AbstractInvitationServiceImplTest extends BaseAlfrescoSpri } } + /** + * MNT-15614 Site with name "IT" cannot be managed properly + * + * @throws Exception + */ + public void test_MNT15614() throws Exception + { + String[] siteNames = {"it", "site", "GROUP"}; + String inviteeUserName = USER_ONE; + Invitation.ResourceType resourceType = Invitation.ResourceType.WEB_SITE; + + String inviteeRole = SiteModel.SITE_COLLABORATOR; + String acceptUrl = "froob"; + String rejectUrl = "marshmallow"; + + this.authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + + for (String siteName : siteNames) + { + SiteInfo siteInfoRed = siteService.getSite(siteName); + if (siteInfoRed == null) + { + siteService.createSite("InviteSitePreset", siteName, "InviteSiteTitle", + "InviteSiteDescription", SiteVisibility.MODERATED); + } + + // Invite user + NominatedInvitation nominatedInvitation = invitationService.inviteNominated( + inviteeUserName, resourceType, siteName, inviteeRole, acceptUrl, rejectUrl); + assertNotNull("nominated invitation is null", nominatedInvitation); + } + } + /** * Test nominated user - new user with whitespace in name. Related to * ETHREEOH-3030. diff --git a/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java index 7a601fafdf..af8fe61fb9 100644 --- a/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -869,6 +869,33 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest startNewTransaction(); } + public void testMNT_15614() throws Exception + { + RetryingTransactionCallback work = new RetryingTransactionCallback() + { + + @Override + public Object execute() throws Throwable + { + String[] siteNames = { "it", "site", "GROUP" }; + + authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + + for (String siteName : siteNames) + { + siteService.createSite(siteName, siteName, siteName, siteName, SiteVisibility.PUBLIC); + assertEquals( SiteModel.SITE_MANAGER, siteService.getMembersRole(siteName, AuthenticationUtil.getAdminUserName())); + siteService.deleteSite(siteName); + } + + return null; + } + }; + endTransaction(); + transactionService.getRetryingTransactionHelper().doInTransaction(work); + startNewTransaction(); + } + /** * Test listSite case sensitivity */