diff --git a/config/alfresco/discussions-services-context.xml b/config/alfresco/discussions-services-context.xml
index 44700bace0..ce6c370faf 100644
--- a/config/alfresco/discussions-services-context.xml
+++ b/config/alfresco/discussions-services-context.xml
@@ -106,9 +106,9 @@
-
+
diff --git a/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java b/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java
index 4987398d2f..6996244fcd 100644
--- a/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java
+++ b/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2011 Alfresco Software Limited.
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
*
* This file is part of Alfresco
*
@@ -48,11 +48,11 @@ import org.alfresco.repo.query.NodeWithTargetsEntity;
import org.alfresco.repo.query.NodeWithTargetsEntity.TargetAndTypeId;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.site.SiteServiceImpl;
+import org.alfresco.repo.tenant.TenantService;
import org.alfresco.service.cmr.discussion.DiscussionService;
import org.alfresco.service.cmr.discussion.PostInfo;
import org.alfresco.service.cmr.discussion.PostWithReplies;
import org.alfresco.service.cmr.discussion.TopicInfo;
-import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentService;
@@ -100,9 +100,9 @@ public class DiscussionServiceImpl implements DiscussionService
private ContentService contentService;
private TaggingService taggingService;
private NamespaceService namespaceService;
- private FileFolderService fileFolderService;
private TransactionService transactionService;
private NamedObjectRegistry> cannedQueryRegistry;
+ private TenantService tenantService;
public void setNodeDAO(NodeDAO nodeDAO)
{
@@ -139,11 +139,6 @@ public class DiscussionServiceImpl implements DiscussionService
this.namespaceService = namespaceService;
}
- public void setFileFolderService(FileFolderService fileFolderService)
- {
- this.fileFolderService = fileFolderService;
- }
-
public void setTransactionService(TransactionService transactionService)
{
this.transactionService = transactionService;
@@ -157,6 +152,14 @@ public class DiscussionServiceImpl implements DiscussionService
this.cannedQueryRegistry = cannedQueryRegistry;
}
+ /**
+ * Set the {@link TenantService}
+ */
+ public void setTenantService(TenantService tenantService)
+ {
+ this.tenantService = tenantService;
+ }
+
/**
* Fetches the Discussions Container on a site, creating as required if requested.
*/
@@ -832,6 +835,7 @@ public class DiscussionServiceImpl implements DiscussionService
// References a node outside of this topic
continue;
}
+ nodeRef = tenantService.getBaseName(nodeRef);
if (id.equals(e.getId()))
{
// Self reference
diff --git a/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java b/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java
index ccccc01272..a92dd017cc 100644
--- a/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java
+++ b/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2011 Alfresco Software Limited.
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
*
* This file is part of Alfresco
*
@@ -34,7 +34,11 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.site.SiteModel;
+import org.alfresco.repo.tenant.TenantAdminService;
+import org.alfresco.repo.tenant.TenantUtil;
+import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.dictionary.DictionaryService;
@@ -53,7 +57,6 @@ import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.cmr.site.SiteVisibility;
import org.alfresco.service.cmr.tagging.TaggingService;
import org.alfresco.service.namespace.QName;
-import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ApplicationContextHelper;
import org.alfresco.util.Pair;
import org.alfresco.util.PropertyMap;
@@ -86,16 +89,21 @@ public class DiscussionServiceImplTest
private static NodeService PUBLIC_NODE_SERVICE;
private static PersonService PERSON_SERVICE;
private static RetryingTransactionHelper TRANSACTION_HELPER;
- private static TransactionService TRANSACTION_SERVICE;
private static PermissionService PERMISSION_SERVICE;
private static SiteService SITE_SERVICE;
private static TaggingService TAGGING_SERVICE;
+ private static TenantAdminService TENANT_ADMIN_SERVICE;
private static final String TEST_USER = DiscussionServiceImplTest.class.getSimpleName() + "_testuser";
private static final String ADMIN_USER = AuthenticationUtil.getAdminUserName();
+
+ private static final String TENANT_DOMAIN = (DiscussionServiceImplTest.class.getSimpleName() + "Tenant").toLowerCase();
+ private static final String TENANT_ADMIN_USER = ADMIN_USER + "@" + TENANT_DOMAIN;
+ private static final String TENANT_TEST_USER = TEST_USER + "@" + TENANT_DOMAIN;
private static SiteInfo DISCUSSION_SITE;
private static SiteInfo ALTERNATE_DISCUSSION_SITE;
+ private static SiteInfo TENANT_DISCUSSION_SITE;
private static NodeRef FORUM_NODE;
/**
@@ -117,10 +125,12 @@ public class DiscussionServiceImplTest
PUBLIC_NODE_SERVICE = (NodeService)testContext.getBean("NodeService");
PERSON_SERVICE = (PersonService)testContext.getBean("personService");
TRANSACTION_HELPER = (RetryingTransactionHelper)testContext.getBean("retryingTransactionHelper");
- TRANSACTION_SERVICE = (TransactionService)testContext.getBean("TransactionService");
PERMISSION_SERVICE = (PermissionService)testContext.getBean("permissionService");
SITE_SERVICE = (SiteService)testContext.getBean("siteService");
TAGGING_SERVICE = (TaggingService)testContext.getBean("TaggingService");
+ TENANT_ADMIN_SERVICE = testContext.getBean("tenantAdminService", TenantAdminService.class);
+
+ createTenantAndTestSites();
// Do the setup as admin
AuthenticationUtil.setFullyAuthenticatedUser(ADMIN_USER);
@@ -381,6 +391,99 @@ public class DiscussionServiceImplTest
}
}
+ @Test
+ public void tenantCreateNewTopicAndPostAndReply() throws Exception
+ {
+ TenantUtil.runAsUserTenant(new TenantRunAsWork