mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
MT Share - initial checkpoint
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13459 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
<property name="feedDaoService" ref="feedDaoService"/>
|
<property name="feedDaoService" ref="feedDaoService"/>
|
||||||
<property name="feedControlDaoService" ref="feedControlDaoService"/>
|
<property name="feedControlDaoService" ref="feedControlDaoService"/>
|
||||||
<property name="authorityService" ref="AuthorityService"/>
|
<property name="authorityService" ref="AuthorityService"/>
|
||||||
|
<property name="tenantService" ref="tenantService"/>
|
||||||
<property name="userNamesAreCaseSensitive" value="${user.name.caseSensitive}"/>
|
<property name="userNamesAreCaseSensitive" value="${user.name.caseSensitive}"/>
|
||||||
<property name="feedGenerator" ref="feedGenerator"/>
|
<property name="feedGenerator" ref="feedGenerator"/>
|
||||||
<property name="maxFeedItems" value="100"/>
|
<property name="maxFeedItems" value="100"/>
|
||||||
@@ -59,6 +60,7 @@
|
|||||||
<property name="permissionService" ref="PermissionService"/>
|
<property name="permissionService" ref="PermissionService"/>
|
||||||
<property name="transactionService" ref="transactionService"/>
|
<property name="transactionService" ref="transactionService"/>
|
||||||
<property name="personService" ref="personService"/>
|
<property name="personService" ref="personService"/>
|
||||||
|
<property name="tenantService" ref="tenantService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="baseFeedGenerator" class="org.alfresco.repo.activities.feed.AbstractFeedGenerator" abstract="true" init-method="init">
|
<bean id="baseFeedGenerator" class="org.alfresco.repo.activities.feed.AbstractFeedGenerator" abstract="true" init-method="init">
|
||||||
|
@@ -56,6 +56,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Import activation extensions for Multi-Tenancy.
|
Import activation extensions for Multi-Tenancy.
|
||||||
-->
|
-->
|
||||||
|
<import resource="classpath:alfresco/mt/mt-base-context.xml"/>
|
||||||
<import resource="classpath*:alfresco/extension/mt/*-context.xml"/>
|
<import resource="classpath*:alfresco/extension/mt/*-context.xml"/>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@@ -319,34 +319,34 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean name="companyHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider">
|
<bean name="baseHomeFolderProvider" class="org.alfresco.repo.security.person.AbstractHomeFolderProvider" abstract="true">
|
||||||
<property name="serviceRegistry">
|
<property name="serviceRegistry">
|
||||||
<ref bean="ServiceRegistry" />
|
<ref bean="ServiceRegistry" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="homeFolderManager">
|
||||||
|
<ref bean="homeFolderManager" />
|
||||||
|
</property>
|
||||||
|
<property name="tenantService">
|
||||||
|
<ref bean="tenantService" />
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean name="companyHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider" parent="baseHomeFolderProvider">
|
||||||
<property name="path">
|
<property name="path">
|
||||||
<value>/${spaces.company_home.childname}</value>
|
<value>/${spaces.company_home.childname}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="storeUrl">
|
<property name="storeUrl">
|
||||||
<value>${spaces.store}</value>
|
<value>${spaces.store}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="homeFolderManager">
|
|
||||||
<ref bean="homeFolderManager" />
|
|
||||||
</property>
|
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean name="guestHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider">
|
<bean name="guestHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider" parent="baseHomeFolderProvider">
|
||||||
<property name="serviceRegistry">
|
|
||||||
<ref bean="ServiceRegistry" />
|
|
||||||
</property>
|
|
||||||
<property name="path">
|
<property name="path">
|
||||||
<value>/${spaces.company_home.childname}/${spaces.guest_home.childname}</value>
|
<value>/${spaces.company_home.childname}/${spaces.guest_home.childname}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="storeUrl">
|
<property name="storeUrl">
|
||||||
<value>${spaces.store}</value>
|
<value>${spaces.store}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="homeFolderManager">
|
|
||||||
<ref bean="homeFolderManager" />
|
|
||||||
</property>
|
|
||||||
<property name="userPermissions">
|
<property name="userPermissions">
|
||||||
<set>
|
<set>
|
||||||
<value>Consumer</value>
|
<value>Consumer</value>
|
||||||
@@ -354,25 +354,15 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean name="bootstrapHomeFolderProvider" class="org.alfresco.repo.security.person.BootstrapHomeFolderProvider">
|
<bean name="bootstrapHomeFolderProvider" class="org.alfresco.repo.security.person.BootstrapHomeFolderProvider" parent="baseHomeFolderProvider" />
|
||||||
<property name="homeFolderManager">
|
|
||||||
<ref bean="homeFolderManager" />
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean name="personalHomeFolderProvider" class="org.alfresco.repo.security.person.UIDBasedHomeFolderProvider">
|
<bean name="personalHomeFolderProvider" class="org.alfresco.repo.security.person.UIDBasedHomeFolderProvider" parent="baseHomeFolderProvider">
|
||||||
<property name="serviceRegistry">
|
|
||||||
<ref bean="ServiceRegistry" />
|
|
||||||
</property>
|
|
||||||
<property name="path">
|
<property name="path">
|
||||||
<value>/${spaces.company_home.childname}</value>
|
<value>/${spaces.company_home.childname}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="storeUrl">
|
<property name="storeUrl">
|
||||||
<value>${spaces.store}</value>
|
<value>${spaces.store}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="homeFolderManager">
|
|
||||||
<ref bean="homeFolderManager" />
|
|
||||||
</property>
|
|
||||||
<property name="inheritsPermissionsOnCreate">
|
<property name="inheritsPermissionsOnCreate">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -388,19 +378,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean name="userHomesHomeFolderProvider" class="org.alfresco.repo.security.person.UIDBasedHomeFolderProvider">
|
<bean name="userHomesHomeFolderProvider" class="org.alfresco.repo.security.person.UIDBasedHomeFolderProvider" parent="baseHomeFolderProvider">
|
||||||
<property name="serviceRegistry">
|
|
||||||
<ref bean="ServiceRegistry" />
|
|
||||||
</property>
|
|
||||||
<property name="path">
|
<property name="path">
|
||||||
<value>/${spaces.company_home.childname}/${spaces.user_homes.childname}</value>
|
<value>/${spaces.company_home.childname}/${spaces.user_homes.childname}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="storeUrl">
|
<property name="storeUrl">
|
||||||
<value>${spaces.store}</value>
|
<value>${spaces.store}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="homeFolderManager">
|
|
||||||
<ref bean="homeFolderManager" />
|
|
||||||
</property>
|
|
||||||
<property name="inheritsPermissionsOnCreate">
|
<property name="inheritsPermissionsOnCreate">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -449,6 +433,9 @@
|
|||||||
<property name="userNameLength">
|
<property name="userNameLength">
|
||||||
<value>6</value>
|
<value>6</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="tenantService">
|
||||||
|
<ref bean="tenantService"/>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- Used for generating passwords -->
|
<!-- Used for generating passwords -->
|
||||||
|
@@ -383,7 +383,7 @@
|
|||||||
<prop key="engineId">jbpm</prop>
|
<prop key="engineId">jbpm</prop>
|
||||||
<prop key="location">alfresco/workflow/invitation-moderated_processdefinition.xml</prop>
|
<prop key="location">alfresco/workflow/invitation-moderated_processdefinition.xml</prop>
|
||||||
<prop key="mimetype">text/xml</prop>
|
<prop key="mimetype">text/xml</prop>
|
||||||
<prop key="redeploy">true</prop>
|
<prop key="redeploy">false</prop>
|
||||||
</props>
|
</props>
|
||||||
|
|
||||||
|
|
||||||
|
@@ -7,26 +7,7 @@
|
|||||||
<!-- MT Admin Service Implementation -->
|
<!-- MT Admin Service Implementation -->
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
<bean id="tenantAdminService" class="org.alfresco.repo.tenant.MultiTAdminServiceImpl">
|
<bean id="tenantAdminService" parent="baseMultiTAdminService" />
|
||||||
|
|
||||||
<!--
|
|
||||||
<property name="nodeService" ref="NodeService"/>
|
|
||||||
-->
|
|
||||||
<property name="nodeService" ref="dbNodeServiceImpl"/> <!-- TODO - go direct, until we expose deleteStore via public NodeService API -->
|
|
||||||
<property name="dictionaryComponent" ref="dictionaryService"/>
|
|
||||||
<property name="authenticationComponent" ref="authenticationComponent"/>
|
|
||||||
<property name="repoAdminService" ref="RepoAdminService"/>
|
|
||||||
<property name="tenantService" ref="tenantService"/>
|
|
||||||
<property name="transactionService" ref="transactionComponent"/>
|
|
||||||
<property name="attributeService" ref="AttributeService"/>
|
|
||||||
<property name="passwordEncoder" ref="passwordEncoder"/>
|
|
||||||
<property name="tenantFileContentStore" ref="tenantFileContentStore"/>
|
|
||||||
<property name="workflowService" ref="WorkflowService"/>
|
|
||||||
<property name="repositoryExporterService" ref="repositoryExporterComponent"/>
|
|
||||||
<property name="workflowDeployer" ref="workflowBootstrap"/>
|
|
||||||
<property name="moduleService" ref="moduleService"/>
|
|
||||||
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="tenantInterpreter" class="org.alfresco.repo.tenant.TenantInterpreter">
|
<bean id="tenantInterpreter" class="org.alfresco.repo.tenant.TenantInterpreter">
|
||||||
<property name="transactionService" ref="transactionComponent"/>
|
<property name="transactionService" ref="transactionComponent"/>
|
||||||
|
28
config/alfresco/mt/mt-base-context.xml
Normal file
28
config/alfresco/mt/mt-base-context.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||||
|
|
||||||
|
<beans>
|
||||||
|
|
||||||
|
<bean id="baseMultiTAdminService" class="org.alfresco.repo.tenant.MultiTAdminServiceImpl" abstract="true">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<property name="nodeService" ref="NodeService"/>
|
||||||
|
-->
|
||||||
|
<property name="nodeService" ref="dbNodeServiceImpl"/> <!-- TODO - go direct, until we expose deleteStore via public NodeService API -->
|
||||||
|
<property name="dictionaryComponent" ref="dictionaryService"/>
|
||||||
|
<property name="authenticationComponent" ref="authenticationComponent"/>
|
||||||
|
<property name="repoAdminService" ref="RepoAdminService"/>
|
||||||
|
<property name="tenantService" ref="tenantService"/>
|
||||||
|
<property name="transactionService" ref="transactionComponent"/>
|
||||||
|
<property name="attributeService" ref="AttributeService"/>
|
||||||
|
<property name="passwordEncoder" ref="passwordEncoder"/>
|
||||||
|
<property name="tenantFileContentStore" ref="tenantFileContentStore"/>
|
||||||
|
<property name="workflowService" ref="WorkflowService"/>
|
||||||
|
<property name="repositoryExporterService" ref="repositoryExporterComponent"/>
|
||||||
|
<property name="moduleService" ref="moduleService"/>
|
||||||
|
|
||||||
|
<property name="siteAVMBootstrap" ref="siteAVMBootstrap"/>
|
||||||
|
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
@@ -828,7 +828,7 @@
|
|||||||
<value>org.alfresco.service.cmr.avm.AVMService</value>
|
<value>org.alfresco.service.cmr.avm.AVMService</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="target">
|
<property name="target">
|
||||||
<ref bean="avmServiceBase"/>
|
<ref bean="avmServiceMT"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="interceptorNames">
|
<property name="interceptorNames">
|
||||||
<list>
|
<list>
|
||||||
@@ -838,6 +838,15 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean id="avmServiceMT" class="org.alfresco.repo.avm.MultiTAVMService">
|
||||||
|
<property name="avmService">
|
||||||
|
<ref bean="avmServiceBase"/>
|
||||||
|
</property>
|
||||||
|
<property name="tenantService">
|
||||||
|
<ref bean="tenantService"/>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<bean id="avmServiceBase" class="org.alfresco.repo.avm.AVMServiceImpl">
|
<bean id="avmServiceBase" class="org.alfresco.repo.avm.AVMServiceImpl">
|
||||||
<property name="avmRepository">
|
<property name="avmRepository">
|
||||||
<ref bean="avmRepository"/>
|
<ref bean="avmRepository"/>
|
||||||
|
@@ -74,6 +74,7 @@
|
|||||||
<property name="sitesXPath">
|
<property name="sitesXPath">
|
||||||
<value>./${spaces.company_home.childname}/st:sites</value>
|
<value>./${spaces.company_home.childname}/st:sites</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="tenantService" ref="tenantService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="siteServiceScript" parent="baseJavaScriptExtension" class="org.alfresco.repo.site.script.ScriptSiteService">
|
<bean id="siteServiceScript" parent="baseJavaScriptExtension" class="org.alfresco.repo.site.script.ScriptSiteService">
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
<property name="nodeService" ref="NodeService"/>
|
<property name="nodeService" ref="NodeService"/>
|
||||||
<property name="searchService" ref="SearchService"/>
|
<property name="searchService" ref="SearchService"/>
|
||||||
<property name="namespaceService" ref="NamespaceService"/>
|
<property name="namespaceService" ref="NamespaceService"/>
|
||||||
|
<property name="tenantService" ref="tenantService"/>
|
||||||
|
<property name="tenantAdminService" ref="tenantAdminService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="workflowServiceImpl" class="org.alfresco.repo.workflow.WorkflowServiceImpl">
|
<bean id="workflowServiceImpl" class="org.alfresco.repo.workflow.WorkflowServiceImpl">
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -38,6 +38,7 @@ import org.alfresco.repo.activities.feed.control.FeedControlDaoService;
|
|||||||
import org.alfresco.repo.activities.post.ActivityPostDAO;
|
import org.alfresco.repo.activities.post.ActivityPostDAO;
|
||||||
import org.alfresco.repo.activities.post.ActivityPostDaoService;
|
import org.alfresco.repo.activities.post.ActivityPostDaoService;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.service.cmr.activities.ActivityService;
|
import org.alfresco.service.cmr.activities.ActivityService;
|
||||||
import org.alfresco.service.cmr.activities.FeedControl;
|
import org.alfresco.service.cmr.activities.FeedControl;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -69,6 +70,8 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
private AuthorityService authorityService;
|
private AuthorityService authorityService;
|
||||||
private FeedGenerator feedGenerator;
|
private FeedGenerator feedGenerator;
|
||||||
|
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
private int maxFeedItems = 100;
|
private int maxFeedItems = 100;
|
||||||
|
|
||||||
private boolean userNamesAreCaseSensitive = false;
|
private boolean userNamesAreCaseSensitive = false;
|
||||||
@@ -108,32 +111,37 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
this.feedGenerator = feedGenerator;
|
this.feedGenerator = feedGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public void postActivity(String activityType, String network, String appTool, String activityData)
|
public void postActivity(String activityType, String siteId, String appTool, String activityData)
|
||||||
{
|
{
|
||||||
postActivity(activityType, network, appTool, activityData, ActivityPostDAO.STATUS.PENDING);
|
postActivity(activityType, siteId, appTool, activityData, ActivityPostDAO.STATUS.PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
public void postActivity(String activityType, String network, String appTool, NodeRef nodeRef)
|
public void postActivity(String activityType, String siteId, String appTool, NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
sb.append("{").append("\"nodeRef\":\"").append(nodeRef.toString()).append("\"").append("}");
|
sb.append("{").append("\"nodeRef\":\"").append(nodeRef.toString()).append("\"").append("}");
|
||||||
|
|
||||||
postActivity(activityType, network, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
postActivity(activityType, siteId, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public void postActivity(String activityType, String network, String appTool, NodeRef nodeRef, String name)
|
public void postActivity(String activityType, String siteId, String appTool, NodeRef nodeRef, String name)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
@@ -142,13 +150,13 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
.append("\"name\":\"").append(name).append("\"")
|
.append("\"name\":\"").append(name).append("\"")
|
||||||
.append("}");
|
.append("}");
|
||||||
|
|
||||||
postActivity(activityType, network, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
postActivity(activityType, siteId, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.service.cmr.activities.ActivityService#postActivity(java.lang.String, java.lang.String, java.lang.String, org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
public void postActivity(String activityType, String network, String appTool, NodeRef nodeRef, String name, QName typeQName, NodeRef parentNodeRef)
|
public void postActivity(String activityType, String siteId, String appTool, NodeRef nodeRef, String name, QName typeQName, NodeRef parentNodeRef)
|
||||||
{
|
{
|
||||||
// primarily for delete node activities - eg. delete document, delete folder
|
// primarily for delete node activities - eg. delete document, delete folder
|
||||||
|
|
||||||
@@ -163,23 +171,23 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
.append("\"parentNodeRef\":\"").append(parentNodeRef.toString()).append("\"")
|
.append("\"parentNodeRef\":\"").append(parentNodeRef.toString()).append("\"")
|
||||||
.append("}");
|
.append("}");
|
||||||
|
|
||||||
postActivity(activityType, network, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
postActivity(activityType, siteId, appTool, sb.toString(), ActivityPostDAO.STATUS.PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postActivity(String activityType, String siteNetwork, String appTool, String activityData, ActivityPostDAO.STATUS status)
|
private void postActivity(String activityType, String siteId, String appTool, String activityData, ActivityPostDAO.STATUS status)
|
||||||
{
|
{
|
||||||
String currentUser = AuthenticationUtil.getFullyAuthenticatedUser();
|
String currentUser = AuthenticationUtil.getFullyAuthenticatedUser();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// optional - default to empty string
|
// optional - default to empty string
|
||||||
if (siteNetwork == null)
|
if (siteId == null)
|
||||||
{
|
{
|
||||||
siteNetwork = "";
|
siteId = "";
|
||||||
}
|
}
|
||||||
else if (siteNetwork.length() > MAX_LEN_SITE_ID)
|
else if (siteId.length() > MAX_LEN_SITE_ID)
|
||||||
{
|
{
|
||||||
throw new AlfrescoRuntimeException("Invalid site network - exceeds " + MAX_LEN_SITE_ID + " chars: " + siteNetwork);
|
throw new AlfrescoRuntimeException("Invalid siteId - exceeds " + MAX_LEN_SITE_ID + " chars: " + siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// optional - default to empty string
|
// optional - default to empty string
|
||||||
@@ -235,7 +243,9 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
Date postDate = new Date();
|
Date postDate = new Date();
|
||||||
ActivityPostDAO activityPost = new ActivityPostDAO();
|
ActivityPostDAO activityPost = new ActivityPostDAO();
|
||||||
activityPost.setUserId(currentUser);
|
activityPost.setUserId(currentUser);
|
||||||
activityPost.setSiteNetwork(siteNetwork);
|
|
||||||
|
activityPost.setSiteNetwork(tenantService.getName(siteId));
|
||||||
|
|
||||||
activityPost.setAppTool(appTool);
|
activityPost.setAppTool(appTool);
|
||||||
activityPost.setActivityData(activityData);
|
activityPost.setActivityData(activityData);
|
||||||
activityPost.setActivityType(activityType);
|
activityPost.setActivityType(activityType);
|
||||||
@@ -297,6 +307,8 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
List<ActivityFeedDAO> activityFeeds = null;
|
List<ActivityFeedDAO> activityFeeds = null;
|
||||||
if (siteId != null)
|
if (siteId != null)
|
||||||
{
|
{
|
||||||
|
siteId = tenantService.getName(siteId);
|
||||||
|
|
||||||
activityFeeds = feedDaoService.selectUserFeedEntries(feedUserId, format, siteId);
|
activityFeeds = feedDaoService.selectUserFeedEntries(feedUserId, format, siteId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -312,6 +324,8 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
activityFeed.setSiteNetwork(tenantService.getBaseName(activityFeed.getSiteNetwork()));
|
||||||
activityFeedEntries.add(activityFeed.getJSONString());
|
activityFeedEntries.add(activityFeed.getJSONString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -343,6 +357,8 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
siteId = tenantService.getName(siteId);
|
||||||
|
|
||||||
List<ActivityFeedDAO> activityFeeds = feedDaoService.selectSiteFeedEntries(siteId, format);
|
List<ActivityFeedDAO> activityFeeds = feedDaoService.selectSiteFeedEntries(siteId, format);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
@@ -353,6 +369,8 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
activityFeed.setSiteNetwork(tenantService.getBaseName(activityFeed.getSiteNetwork()));
|
||||||
activityFeedEntries.add(activityFeed.getJSONString());
|
activityFeedEntries.add(activityFeed.getJSONString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -504,4 +522,16 @@ public class ActivityServiceImpl implements ActivityService
|
|||||||
throw are;
|
throw are;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private FeedControl getTenantFeedControl(FeedControl feedControl)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private FeedControl getBaseFeedControl(FeedControl feedControl)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -33,6 +33,7 @@ import org.alfresco.repo.activities.post.ActivityPostDAO;
|
|||||||
import org.alfresco.repo.activities.post.ActivityPostDaoService;
|
import org.alfresco.repo.activities.post.ActivityPostDaoService;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -65,6 +66,7 @@ public class PostLookup
|
|||||||
private PermissionService permissionService;
|
private PermissionService permissionService;
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
private PersonService personService;
|
private PersonService personService;
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
public void setPostDaoService(ActivityPostDaoService postDaoService)
|
public void setPostDaoService(ActivityPostDaoService postDaoService)
|
||||||
{
|
{
|
||||||
@@ -91,6 +93,11 @@ public class PostLookup
|
|||||||
this.personService = personService;
|
this.personService = personService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform basic checks to ensure that the necessary dependencies were injected.
|
* Perform basic checks to ensure that the necessary dependencies were injected.
|
||||||
*/
|
*/
|
||||||
@@ -101,6 +108,7 @@ public class PostLookup
|
|||||||
PropertyCheck.mandatory(this, "permissionService", permissionService);
|
PropertyCheck.mandatory(this, "permissionService", permissionService);
|
||||||
PropertyCheck.mandatory(this, "transactionService", transactionService);
|
PropertyCheck.mandatory(this, "transactionService", transactionService);
|
||||||
PropertyCheck.mandatory(this, "personService", personService);
|
PropertyCheck.mandatory(this, "personService", personService);
|
||||||
|
PropertyCheck.mandatory(this, "tenantService", tenantService);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execute() throws JobExecutionException
|
public void execute() throws JobExecutionException
|
||||||
@@ -118,15 +126,22 @@ public class PostLookup
|
|||||||
logger.info("Update: " + activityPosts.size() + " activity posts");
|
logger.info("Update: " + activityPosts.size() + " activity posts");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ActivityPostDAO activityPost : activityPosts)
|
for (final ActivityPostDAO activityPost : activityPosts)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
postDaoService.startTransaction();
|
postDaoService.startTransaction();
|
||||||
|
|
||||||
JSONObject jo = new JSONObject(new JSONTokener(activityPost.getActivityData()));
|
final JSONObject jo = new JSONObject(new JSONTokener(activityPost.getActivityData()));
|
||||||
String postUserId = activityPost.getUserId();
|
final String postUserId = activityPost.getUserId();
|
||||||
|
|
||||||
|
// MT share
|
||||||
|
String tenantDomain = tenantService.getUserDomain(postUserId);
|
||||||
|
|
||||||
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
|
{
|
||||||
|
public Object doWork() throws Exception
|
||||||
|
{
|
||||||
if (! jo.isNull("nodeRef"))
|
if (! jo.isNull("nodeRef"))
|
||||||
{
|
{
|
||||||
String nodeRefStr = jo.getString("nodeRef");
|
String nodeRefStr = jo.getString("nodeRef");
|
||||||
@@ -159,6 +174,10 @@ public class PostLookup
|
|||||||
logger.debug("Updated: " + activityPost);
|
logger.debug("Updated: " + activityPost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||||
|
|
||||||
postDaoService.commitTransaction();
|
postDaoService.commitTransaction();
|
||||||
}
|
}
|
||||||
catch (JSONException e)
|
catch (JSONException e)
|
||||||
@@ -200,10 +219,6 @@ public class PostLookup
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Pair<String, String> lookupPerson(final String postUserId) throws JSONException
|
private Pair<String, String> lookupPerson(final String postUserId) throws JSONException
|
||||||
{
|
|
||||||
return AuthenticationUtil.runAs(new RunAsWork<Pair<String, String>>()
|
|
||||||
{
|
|
||||||
public Pair<String, String> doWork() throws Exception
|
|
||||||
{
|
{
|
||||||
RetryingTransactionHelper txnHelper = transactionService.getRetryingTransactionHelper();
|
RetryingTransactionHelper txnHelper = transactionService.getRetryingTransactionHelper();
|
||||||
|
|
||||||
@@ -232,8 +247,6 @@ public class PostLookup
|
|||||||
// execute in txn
|
// execute in txn
|
||||||
return txnHelper.doInTransaction(lookup, true);
|
return txnHelper.doInTransaction(lookup, true);
|
||||||
}
|
}
|
||||||
}, AuthenticationUtil.getSystemUserName());
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSONObject lookupNode(final NodeRef nodeRef, final String postUserId, final JSONObject jo) throws JSONException
|
private JSONObject lookupNode(final NodeRef nodeRef, final String postUserId, final JSONObject jo) throws JSONException
|
||||||
{
|
{
|
||||||
|
1032
source/java/org/alfresco/repo/avm/MultiTAVMService.java
Normal file
1032
source/java/org/alfresco/repo/avm/MultiTAVMService.java
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.repo.security.authentication;
|
package org.alfresco.repo.security.authentication;
|
||||||
|
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,6 +37,13 @@ public class BasicUserNameGenerator implements UserNameGenerator
|
|||||||
// user name length property
|
// user name length property
|
||||||
private int userNameLength;
|
private int userNameLength;
|
||||||
|
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the user name length
|
* Set the user name length
|
||||||
*
|
*
|
||||||
@@ -53,6 +61,11 @@ public class BasicUserNameGenerator implements UserNameGenerator
|
|||||||
*/
|
*/
|
||||||
public String generateUserName()
|
public String generateUserName()
|
||||||
{
|
{
|
||||||
return RandomStringUtils.randomNumeric(userNameLength);
|
String userName = RandomStringUtils.randomNumeric(userNameLength);
|
||||||
|
if (tenantService.isEnabled())
|
||||||
|
{
|
||||||
|
userName = tenantService.getDomainUser(userName, tenantService.getCurrentUserDomain());
|
||||||
|
}
|
||||||
|
return userName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -27,9 +27,11 @@ package org.alfresco.repo.security.person;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -67,6 +69,11 @@ public abstract class AbstractHomeFolderProvider implements HomeFolderProvider,
|
|||||||
*/
|
*/
|
||||||
private ServiceRegistry serviceRegistry;
|
private ServiceRegistry serviceRegistry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tenant service - required for MT-enabled environment, else optional
|
||||||
|
*/
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The path to a folder
|
* The path to a folder
|
||||||
*/
|
*/
|
||||||
@@ -75,7 +82,7 @@ public abstract class AbstractHomeFolderProvider implements HomeFolderProvider,
|
|||||||
/**
|
/**
|
||||||
* Cache the result of the path look up.
|
* Cache the result of the path look up.
|
||||||
*/
|
*/
|
||||||
private NodeRef pathNodeRef;
|
private Map<String, NodeRef> pathNodeRefs; // MT-aware
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The owner to set on creation of a home folder (if unset this will be the uid).
|
* The owner to set on creation of a home folder (if unset this will be the uid).
|
||||||
@@ -110,6 +117,8 @@ public abstract class AbstractHomeFolderProvider implements HomeFolderProvider,
|
|||||||
public AbstractHomeFolderProvider()
|
public AbstractHomeFolderProvider()
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
pathNodeRefs = new ConcurrentHashMap<String, NodeRef>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -228,6 +237,16 @@ public abstract class AbstractHomeFolderProvider implements HomeFolderProvider,
|
|||||||
this.serviceRegistry = serviceRegistry;
|
this.serviceRegistry = serviceRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the tenant service
|
||||||
|
*
|
||||||
|
* @param tenantService
|
||||||
|
*/
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inherit permissions when home folder are created?
|
* Inherit permissions when home folder are created?
|
||||||
*
|
*
|
||||||
@@ -289,15 +308,19 @@ public abstract class AbstractHomeFolderProvider implements HomeFolderProvider,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache path to node resolution/
|
* Cache path to node resolution
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected synchronized NodeRef getPathNodeRef()
|
protected NodeRef getPathNodeRef()
|
||||||
{
|
{
|
||||||
|
String tenantDomain = (tenantService != null ? tenantService.getCurrentUserDomain() : TenantService.DEFAULT_DOMAIN);
|
||||||
|
|
||||||
|
NodeRef pathNodeRef = pathNodeRefs.get(tenantDomain);
|
||||||
if (pathNodeRef == null)
|
if (pathNodeRef == null)
|
||||||
{
|
{
|
||||||
pathNodeRef = resolvePath(path);
|
pathNodeRef = resolvePath(path);
|
||||||
|
pathNodeRefs.put(tenantDomain, pathNodeRef);
|
||||||
}
|
}
|
||||||
return pathNodeRef;
|
return pathNodeRef;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -41,6 +41,7 @@ import org.alfresco.repo.cache.SimpleCache;
|
|||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.PolicyComponent;
|
||||||
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.permissions.PermissionServiceSPI;
|
import org.alfresco.repo.security.permissions.PermissionServiceSPI;
|
||||||
import org.alfresco.repo.tenant.TenantService;
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
||||||
@@ -233,7 +234,28 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
|
|||||||
* @return NodeRef of the person as specified by the username
|
* @return NodeRef of the person as specified by the username
|
||||||
* @throws NoSuchPersonException
|
* @throws NoSuchPersonException
|
||||||
*/
|
*/
|
||||||
public NodeRef getPerson(String userName)
|
public NodeRef getPerson(final String userName)
|
||||||
|
{
|
||||||
|
// MT share - for activity service system callback
|
||||||
|
if (tenantService.isEnabled() && (AuthenticationUtil.SYSTEM_USER_NAME.equals(AuthenticationUtil.getRunAsUser())) && tenantService.isTenantUser(userName))
|
||||||
|
{
|
||||||
|
final String tenantDomain = tenantService.getUserDomain(userName);
|
||||||
|
|
||||||
|
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<NodeRef>()
|
||||||
|
{
|
||||||
|
public NodeRef doWork() throws Exception
|
||||||
|
{
|
||||||
|
return getPersonImpl(userName);
|
||||||
|
}
|
||||||
|
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getPersonImpl(userName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NodeRef getPersonImpl(String userName)
|
||||||
{
|
{
|
||||||
NodeRef personNode = getPersonOrNull(userName);
|
NodeRef personNode = getPersonOrNull(userName);
|
||||||
if (personNode == null)
|
if (personNode == null)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -35,6 +35,7 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.repo.activities.ActivityType;
|
import org.alfresco.repo.activities.ActivityType;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.service.cmr.activities.ActivityService;
|
import org.alfresco.service.cmr.activities.ActivityService;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.model.FileFolderService;
|
import org.alfresco.service.cmr.model.FileFolderService;
|
||||||
@@ -107,6 +108,7 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
|||||||
private TaggingService taggingService;
|
private TaggingService taggingService;
|
||||||
private AuthorityService authorityService;
|
private AuthorityService authorityService;
|
||||||
private DictionaryService dictionaryService;
|
private DictionaryService dictionaryService;
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the path to the location of the sites root folder. For example:
|
* Set the path to the location of the sites root folder. For example:
|
||||||
@@ -211,6 +213,16 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
|||||||
this.dictionaryService = dictionaryService;
|
this.dictionaryService = dictionaryService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the tenant service
|
||||||
|
*
|
||||||
|
* @param tenantService tenant service
|
||||||
|
*/
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that all necessary properties and services have been provided.
|
* Checks that all necessary properties and services have been provided.
|
||||||
*/
|
*/
|
||||||
@@ -587,7 +599,30 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.service.cmr.site.SiteService#getSite(java.lang.String)
|
* @see org.alfresco.service.cmr.site.SiteService#getSite(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public SiteInfo getSite(String shortName)
|
public SiteInfo getSite(final String shortName)
|
||||||
|
{
|
||||||
|
// MT share - for activity service system callback
|
||||||
|
if (tenantService.isEnabled() && (AuthenticationUtil.SYSTEM_USER_NAME.equals(AuthenticationUtil.getRunAsUser())) && tenantService.isTenantName(shortName))
|
||||||
|
{
|
||||||
|
final String tenantDomain = tenantService.getDomain(shortName);
|
||||||
|
final String sName = tenantService.getBaseName(shortName, true);
|
||||||
|
|
||||||
|
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<SiteInfo>()
|
||||||
|
{
|
||||||
|
public SiteInfo doWork() throws Exception
|
||||||
|
{
|
||||||
|
SiteInfo site = getSiteImpl(sName);
|
||||||
|
return new SiteInfoImpl(site.getSitePreset(), shortName, site.getTitle(), site.getDescription(), site.getVisibility(), site.getCustomProperties(), site.getNodeRef());
|
||||||
|
}
|
||||||
|
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getSiteImpl(shortName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SiteInfo getSiteImpl(String shortName)
|
||||||
{
|
{
|
||||||
SiteInfo result = null;
|
SiteInfo result = null;
|
||||||
|
|
||||||
@@ -714,7 +749,29 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(String, String, String, boolean)
|
* @see org.alfresco.service.cmr.site.SiteService#listMembers(String, String, String, boolean)
|
||||||
*/
|
*/
|
||||||
public Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter, boolean collapseGroups)
|
public Map<String, String> listMembers(String shortName, final String nameFilter, final String roleFilter, final boolean collapseGroups)
|
||||||
|
{
|
||||||
|
// MT share - for activity service system callback
|
||||||
|
if (tenantService.isEnabled() && (AuthenticationUtil.SYSTEM_USER_NAME.equals(AuthenticationUtil.getRunAsUser())) && tenantService.isTenantName(shortName))
|
||||||
|
{
|
||||||
|
final String tenantDomain = tenantService.getDomain(shortName);
|
||||||
|
final String sName = tenantService.getBaseName(shortName, true);
|
||||||
|
|
||||||
|
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Map<String, String>>()
|
||||||
|
{
|
||||||
|
public Map<String, String> doWork() throws Exception
|
||||||
|
{
|
||||||
|
return listMembersImpl(sName, nameFilter, roleFilter, collapseGroups);
|
||||||
|
}
|
||||||
|
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return listMembersImpl(shortName, nameFilter, roleFilter, collapseGroups);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> listMembersImpl(String shortName, String nameFilter, String roleFilter, boolean collapseGroups)
|
||||||
{
|
{
|
||||||
NodeRef siteNodeRef = getSiteNodeRef(shortName);
|
NodeRef siteNodeRef = getSiteNodeRef(shortName);
|
||||||
if (siteNodeRef == null)
|
if (siteNodeRef == null)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -50,6 +50,7 @@ import org.alfresco.repo.node.db.DbNodeServiceImpl;
|
|||||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
|
import org.alfresco.repo.site.SiteAVMBootstrap;
|
||||||
import org.alfresco.repo.workflow.WorkflowDeployer;
|
import org.alfresco.repo.workflow.WorkflowDeployer;
|
||||||
import org.alfresco.service.cmr.admin.RepoAdminService;
|
import org.alfresco.service.cmr.admin.RepoAdminService;
|
||||||
import org.alfresco.service.cmr.attributes.AttributeService;
|
import org.alfresco.service.cmr.attributes.AttributeService;
|
||||||
@@ -93,8 +94,10 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
private TenantRoutingFileContentStore tenantFileContentStore;
|
private TenantRoutingFileContentStore tenantFileContentStore;
|
||||||
private WorkflowService workflowService;
|
private WorkflowService workflowService;
|
||||||
private RepositoryExporterService repositoryExporterService;
|
private RepositoryExporterService repositoryExporterService;
|
||||||
private WorkflowDeployer workflowDeployer;
|
|
||||||
private ModuleService moduleService;
|
private ModuleService moduleService;
|
||||||
|
private SiteAVMBootstrap siteAVMBootstrap;
|
||||||
|
|
||||||
|
private List<WorkflowDeployer> workflowDeployers = new ArrayList<WorkflowDeployer>();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tenant domain/ids are unique strings that are case-insensitive. Tenant ids must be valid filenames.
|
* Tenant domain/ids are unique strings that are case-insensitive. Tenant ids must be valid filenames.
|
||||||
@@ -182,9 +185,13 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
this.repositoryExporterService = repositoryExporterService;
|
this.repositoryExporterService = repositoryExporterService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated see setWorkflowDeployers
|
||||||
|
*/
|
||||||
public void setWorkflowDeployer(WorkflowDeployer workflowDeployer)
|
public void setWorkflowDeployer(WorkflowDeployer workflowDeployer)
|
||||||
{
|
{
|
||||||
this.workflowDeployer = workflowDeployer;
|
// NOOP
|
||||||
|
logger.warn(WARN_MSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setModuleService(ModuleService moduleService)
|
public void setModuleService(ModuleService moduleService)
|
||||||
@@ -192,6 +199,11 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
this.moduleService = moduleService;
|
this.moduleService = moduleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSiteAVMBootstrap(SiteAVMBootstrap siteAVMBootstrap)
|
||||||
|
{
|
||||||
|
this.siteAVMBootstrap = siteAVMBootstrap;
|
||||||
|
}
|
||||||
|
|
||||||
public static final String PROTOCOL_STORE_USER = "user";
|
public static final String PROTOCOL_STORE_USER = "user";
|
||||||
public static final String PROTOCOL_STORE_WORKSPACE = "workspace";
|
public static final String PROTOCOL_STORE_WORKSPACE = "workspace";
|
||||||
public static final String PROTOCOL_STORE_SYSTEM = "system";
|
public static final String PROTOCOL_STORE_SYSTEM = "system";
|
||||||
@@ -211,6 +223,7 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
|
|
||||||
private List<TenantDeployer> tenantDeployers = new ArrayList<TenantDeployer>();
|
private List<TenantDeployer> tenantDeployers = new ArrayList<TenantDeployer>();
|
||||||
|
|
||||||
|
private static final String WARN_MSG = "Please update your alfresco/extension/mt/mt-admin-context.xml to use baseMultiTAdminService (see latest alfresco/extension/mt/mt-admin-context.xml.sample)";
|
||||||
|
|
||||||
protected void checkProperties()
|
protected void checkProperties()
|
||||||
{
|
{
|
||||||
@@ -224,9 +237,22 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
PropertyCheck.mandatory(this, "TenantFileContentStore", tenantFileContentStore);
|
PropertyCheck.mandatory(this, "TenantFileContentStore", tenantFileContentStore);
|
||||||
PropertyCheck.mandatory(this, "WorkflowService", workflowService);
|
PropertyCheck.mandatory(this, "WorkflowService", workflowService);
|
||||||
PropertyCheck.mandatory(this, "RepositoryExporterService", repositoryExporterService);
|
PropertyCheck.mandatory(this, "RepositoryExporterService", repositoryExporterService);
|
||||||
PropertyCheck.mandatory(this, "WorkflowDeployer", workflowDeployer);
|
|
||||||
|
|
||||||
PropertyCheck.mandatory(this, "ModuleService - see updated alfresco/extension/mt/mt-admin-context.xml.sample", moduleService);
|
// for backwards compatibility only
|
||||||
|
|
||||||
|
if (moduleService == null)
|
||||||
|
{
|
||||||
|
// default for now
|
||||||
|
logger.warn(WARN_MSG);
|
||||||
|
moduleService = (ModuleService)ctx.getBean("moduleService");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (siteAVMBootstrap == null)
|
||||||
|
{
|
||||||
|
// default for now
|
||||||
|
logger.warn(WARN_MSG);
|
||||||
|
siteAVMBootstrap = (SiteAVMBootstrap)ctx.getBean("siteAVMBootstrap");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
|
||||||
@@ -350,6 +376,8 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
ImporterBootstrap spacesImporterBootstrap = (ImporterBootstrap)ctx.getBean("spacesBootstrap");
|
ImporterBootstrap spacesImporterBootstrap = (ImporterBootstrap)ctx.getBean("spacesBootstrap");
|
||||||
bootstrapSpacesTenantStore(spacesImporterBootstrap, tenantDomain);
|
bootstrapSpacesTenantStore(spacesImporterBootstrap, tenantDomain);
|
||||||
|
|
||||||
|
siteAVMBootstrap.bootstrap();
|
||||||
|
|
||||||
// notify listeners that tenant has been created & hence enabled
|
// notify listeners that tenant has been created & hence enabled
|
||||||
for (TenantDeployer tenantDeployer : tenantDeployers)
|
for (TenantDeployer tenantDeployer : tenantDeployers)
|
||||||
{
|
{
|
||||||
@@ -357,7 +385,10 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// bootstrap workflows
|
// bootstrap workflows
|
||||||
|
for (WorkflowDeployer workflowDeployer : workflowDeployers)
|
||||||
|
{
|
||||||
workflowDeployer.init();
|
workflowDeployer.init();
|
||||||
|
}
|
||||||
|
|
||||||
// bootstrap modules (if any)
|
// bootstrap modules (if any)
|
||||||
moduleService.startModules();
|
moduleService.startModules();
|
||||||
@@ -415,7 +446,10 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// bootstrap workflows
|
// bootstrap workflows
|
||||||
|
for (WorkflowDeployer workflowDeployer : workflowDeployers)
|
||||||
|
{
|
||||||
workflowDeployer.init();
|
workflowDeployer.init();
|
||||||
|
}
|
||||||
|
|
||||||
// bootstrap modules (if any)
|
// bootstrap modules (if any)
|
||||||
moduleService.startModules();
|
moduleService.startModules();
|
||||||
@@ -1050,7 +1084,7 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
{
|
{
|
||||||
if (deployer == null)
|
if (deployer == null)
|
||||||
{
|
{
|
||||||
throw new AlfrescoRuntimeException("Deployer must be provided");
|
throw new AlfrescoRuntimeException("TenantDeployer must be provided");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! tenantDeployers.contains(deployer))
|
if (! tenantDeployers.contains(deployer))
|
||||||
@@ -1063,7 +1097,7 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
{
|
{
|
||||||
if (deployer == null)
|
if (deployer == null)
|
||||||
{
|
{
|
||||||
throw new AlfrescoRuntimeException("Deployer must be provided");
|
throw new AlfrescoRuntimeException("TenantDeployer must be provided");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tenantDeployers != null)
|
if (tenantDeployers != null)
|
||||||
@@ -1072,6 +1106,19 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void register(WorkflowDeployer workflowDeployer)
|
||||||
|
{
|
||||||
|
if (workflowDeployer == null)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("WorkflowDeployer must be provided");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! workflowDeployers.contains(workflowDeployer))
|
||||||
|
{
|
||||||
|
workflowDeployers.add(workflowDeployer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void resetCache(String tenantDomain)
|
public void resetCache(String tenantDomain)
|
||||||
{
|
{
|
||||||
if (existsTenant(tenantDomain))
|
if (existsTenant(tenantDomain))
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -226,7 +226,7 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
StoreRef storeRef = ref;
|
StoreRef storeRef = ref;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (tenantService.isEnabled())
|
if (tenantService.isEnabled() && (! storeRef.getProtocol().equals(StoreRef.PROTOCOL_AVM)))
|
||||||
{
|
{
|
||||||
// MT: return tenant stores only (although for super System return all stores - as used by
|
// MT: return tenant stores only (although for super System return all stores - as used by
|
||||||
// ConfigurationChecker, IndexRecovery, IndexBackup etc)
|
// ConfigurationChecker, IndexRecovery, IndexBackup etc)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -174,6 +174,25 @@ public class MultiTServiceImpl implements TenantService
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.tenant.TenantService#getName(org.alfresco.service.namespace.QName)
|
||||||
|
*/
|
||||||
|
public QName getName(QName name)
|
||||||
|
{
|
||||||
|
// Check that all the passed values are not null
|
||||||
|
ParameterCheck.mandatory("Name", name);
|
||||||
|
|
||||||
|
String tenantDomain = getCurrentUserDomain();
|
||||||
|
|
||||||
|
if (! tenantDomain.equals(DEFAULT_DOMAIN))
|
||||||
|
{
|
||||||
|
checkTenantEnabled(tenantDomain);
|
||||||
|
name = getName(name, tenantDomain);
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.repo.tenant.TenantService#getName(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
* @see org.alfresco.repo.tenant.TenantService#getName(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -28,6 +28,7 @@ import java.io.File;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.repo.workflow.WorkflowDeployer;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,6 +94,13 @@ public class SingleTAdminServiceImpl implements TenantAdminService
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NO-OP
|
||||||
|
*/
|
||||||
|
public void register(WorkflowDeployer workflowDeployer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns an empty list always
|
* @return Returns an empty list always
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -69,6 +69,11 @@ public class SingleTServiceImpl implements TenantService
|
|||||||
return storeRef;
|
return storeRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public QName getName(QName name)
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public QName getName(NodeRef inNodeRef, QName name)
|
public QName getName(NodeRef inNodeRef, QName name)
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -27,6 +27,7 @@ package org.alfresco.repo.tenant;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.repo.workflow.WorkflowDeployer;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
|
|
||||||
@@ -44,7 +45,7 @@ public interface TenantAdminService extends TenantUserService
|
|||||||
public void stopTenants();
|
public void stopTenants();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Deployer methods
|
* Tenant Deployer methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void deployTenants(final TenantDeployer deployer, Log logger);
|
public void deployTenants(final TenantDeployer deployer, Log logger);
|
||||||
@@ -58,7 +59,13 @@ public interface TenantAdminService extends TenantUserService
|
|||||||
public List<Tenant> getAllTenants();
|
public List<Tenant> getAllTenants();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Deployer methods
|
* Workflow Deployer methods
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void register(WorkflowDeployer workflowDeployer);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Admin methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void createTenant(String tenantDomain, char[] adminRawPassword);
|
public void createTenant(String tenantDomain, char[] adminRawPassword);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -78,6 +78,11 @@ public interface TenantService extends TenantUserService
|
|||||||
*/
|
*/
|
||||||
public StoreRef getName(String username, StoreRef storeRef);
|
public StoreRef getName(String username, StoreRef storeRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the reference <b>with</b> the tenant-specific ID attached
|
||||||
|
*/
|
||||||
|
public QName getName(QName name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the reference <b>with</b> the tenant-specific ID attached
|
* @return the reference <b>with</b> the tenant-specific ID attached
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@@ -40,6 +40,7 @@ import org.alfresco.repo.dictionary.RepositoryLocation;
|
|||||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
|
import org.alfresco.repo.tenant.TenantAdminService;
|
||||||
import org.alfresco.repo.tenant.TenantService;
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
@@ -85,6 +86,7 @@ public class WorkflowDeployer extends AbstractLifecycleBean
|
|||||||
private List<Properties> workflowDefinitions;
|
private List<Properties> workflowDefinitions;
|
||||||
private List<String> models = new ArrayList<String>();
|
private List<String> models = new ArrayList<String>();
|
||||||
private List<String> resourceBundles = new ArrayList<String>();
|
private List<String> resourceBundles = new ArrayList<String>();
|
||||||
|
private TenantAdminService tenantAdminService;
|
||||||
private TenantService tenantService;
|
private TenantService tenantService;
|
||||||
|
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
@@ -145,6 +147,16 @@ public class WorkflowDeployer extends AbstractLifecycleBean
|
|||||||
this.dictionaryDAO = dictionaryDAO;
|
this.dictionaryDAO = dictionaryDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the tenant admin service
|
||||||
|
*
|
||||||
|
* @param tenantService the tenant admin service
|
||||||
|
*/
|
||||||
|
public void setTenantAdminService(TenantAdminService tenantAdminService)
|
||||||
|
{
|
||||||
|
this.tenantAdminService = tenantAdminService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the tenant service
|
* Sets the tenant service
|
||||||
*
|
*
|
||||||
@@ -432,6 +444,8 @@ public class WorkflowDeployer extends AbstractLifecycleBean
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}, AuthenticationUtil.getSystemUserName());
|
}, AuthenticationUtil.getSystemUserName());
|
||||||
|
|
||||||
|
tenantAdminService.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1261,6 +1261,12 @@ public class JBPMEngine extends BPMEngine
|
|||||||
public List<WorkflowTask> doInJbpm(JbpmContext context)
|
public List<WorkflowTask> doInJbpm(JbpmContext context)
|
||||||
{
|
{
|
||||||
Session session = context.getSession();
|
Session session = context.getSession();
|
||||||
|
|
||||||
|
if ((query.getProcessName() != null) && (tenantService.isEnabled()))
|
||||||
|
{
|
||||||
|
query.setProcessName(tenantService.getName(query.getProcessName()));
|
||||||
|
}
|
||||||
|
|
||||||
Criteria criteria = createTaskQueryCriteria(session, query);
|
Criteria criteria = createTaskQueryCriteria(session, query);
|
||||||
List<TaskInstance> tasks = criteria.list();
|
List<TaskInstance> tasks = criteria.list();
|
||||||
|
|
||||||
@@ -1505,7 +1511,19 @@ public class JBPMEngine extends BPMEngine
|
|||||||
{
|
{
|
||||||
process = (process == null) ? root.createCriteria("processInstance") : process;
|
process = (process == null) ? root.createCriteria("processInstance") : process;
|
||||||
Criteria processDef = process.createCriteria("processDefinition");
|
Criteria processDef = process.createCriteria("processDefinition");
|
||||||
processDef.add(Restrictions.eq("name", query.getProcessName().toPrefixString(namespaceService)));
|
|
||||||
|
String processName = null;
|
||||||
|
if (tenantService.isEnabled())
|
||||||
|
{
|
||||||
|
QName baseProcessName = tenantService.getBaseName(query.getProcessName(), true);
|
||||||
|
processName = tenantService.getName(baseProcessName.toPrefixString(namespaceService));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
processName = query.getProcessName().toPrefixString(namespaceService);
|
||||||
|
}
|
||||||
|
|
||||||
|
processDef.add(Restrictions.eq("name", processName));
|
||||||
}
|
}
|
||||||
|
|
||||||
return process;
|
return process;
|
||||||
|
@@ -7,26 +7,7 @@
|
|||||||
<!-- MT Admin Service Implementation -->
|
<!-- MT Admin Service Implementation -->
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
<bean id="tenantAdminService" class="org.alfresco.repo.tenant.MultiTAdminServiceImpl">
|
<bean id="tenantAdminService" parent="baseMultiTAdminService" />
|
||||||
|
|
||||||
<!--
|
|
||||||
<property name="nodeService" ref="NodeService"/>
|
|
||||||
-->
|
|
||||||
<property name="nodeService" ref="dbNodeServiceImpl"/> <!-- TODO - go direct, until we expose deleteStore via public NodeService API -->
|
|
||||||
<property name="dictionaryComponent" ref="dictionaryService"/>
|
|
||||||
<property name="authenticationComponent" ref="authenticationComponent"/>
|
|
||||||
<property name="repoAdminService" ref="RepoAdminService"/>
|
|
||||||
<property name="tenantService" ref="tenantService"/>
|
|
||||||
<property name="transactionService" ref="transactionComponent"/>
|
|
||||||
<property name="attributeService" ref="AttributeService"/>
|
|
||||||
<property name="passwordEncoder" ref="passwordEncoder"/>
|
|
||||||
<property name="tenantFileContentStore" ref="tenantFileContentStore"/>
|
|
||||||
<property name="workflowService" ref="WorkflowService"/>
|
|
||||||
<property name="repositoryExporterService" ref="repositoryExporterComponent"/>
|
|
||||||
<property name="workflowDeployer" ref="workflowBootstrap"/>
|
|
||||||
<property name="moduleService" ref="moduleService"/>
|
|
||||||
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="tenantInterpreter" class="org.alfresco.repo.tenant.TenantInterpreter">
|
<bean id="tenantInterpreter" class="org.alfresco.repo.tenant.TenantInterpreter">
|
||||||
<property name="transactionService" ref="transactionComponent"/>
|
<property name="transactionService" ref="transactionComponent"/>
|
||||||
|
Reference in New Issue
Block a user