mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged DEV to HEAD
52232: Introduce filter to select only enabled tenants (ALF-19172) 52233: Missed file for rev 52232 (ALF-19172) 52246: MT: Make lowercasing of tenant domain a little more explicit 52247: MT: Clean up imports, redundant non-Javadoc and add @Override git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@52288 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -180,6 +180,7 @@ Inbound settings from iBatis
|
|||||||
<!-- Tenants -->
|
<!-- Tenants -->
|
||||||
|
|
||||||
<typeAlias alias="Tenant" type="org.alfresco.repo.domain.tenant.TenantEntity"/>
|
<typeAlias alias="Tenant" type="org.alfresco.repo.domain.tenant.TenantEntity"/>
|
||||||
|
<typeAlias alias="TenantQuery" type="org.alfresco.repo.domain.tenant.TenantQueryEntity"/>
|
||||||
|
|
||||||
</typeAliases>
|
</typeAliases>
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@
|
|||||||
tenant_domain = #{tenantDomain}
|
tenant_domain = #{tenantDomain}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="select_Tenants" resultMap="result_Tenant">
|
<select id="select_Tenants" parameterType="TenantQuery" resultMap="result_Tenant">
|
||||||
select
|
select
|
||||||
tenant_domain as tenantDomain,
|
tenant_domain as tenantDomain,
|
||||||
version as version,
|
version as version,
|
||||||
@@ -71,6 +71,9 @@
|
|||||||
db_url as dbUrl
|
db_url as dbUrl
|
||||||
from
|
from
|
||||||
alf_tenant
|
alf_tenant
|
||||||
|
<where>
|
||||||
|
<if test="enabled != null">enabled = #{enabled}</if>
|
||||||
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- Optimistic update of the tenant -->
|
<!-- Optimistic update of the tenant -->
|
||||||
|
@@ -105,11 +105,12 @@ public abstract class AbstractTenantAdminDAOImpl implements TenantAdminDAO
|
|||||||
|
|
||||||
private TenantEntity getTenantImpl(String tenantDomain)
|
private TenantEntity getTenantImpl(String tenantDomain)
|
||||||
{
|
{
|
||||||
|
tenantDomain = tenantDomain.toLowerCase();
|
||||||
Pair<String, TenantEntity> entityPair = tenantEntityCache.getByKey(tenantDomain);
|
Pair<String, TenantEntity> entityPair = tenantEntityCache.getByKey(tenantDomain);
|
||||||
if (entityPair == null)
|
if (entityPair == null)
|
||||||
{
|
{
|
||||||
// try lower-case to make sure
|
// try lower-case to make sure
|
||||||
entityPair = tenantEntityCache.getByKey(tenantDomain.toLowerCase());
|
entityPair = tenantEntityCache.getByKey(tenantDomain);
|
||||||
if (entityPair == null)
|
if (entityPair == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
@@ -119,9 +120,16 @@ public abstract class AbstractTenantAdminDAOImpl implements TenantAdminDAO
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TenantEntity> listTenants()
|
public List<TenantEntity> listTenants(boolean enabledOnly)
|
||||||
{
|
{
|
||||||
return getTenantEntities();
|
if (enabledOnly)
|
||||||
|
{
|
||||||
|
return getTenantEntities(Boolean.TRUE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getTenantEntities(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -241,7 +249,10 @@ public abstract class AbstractTenantAdminDAOImpl implements TenantAdminDAO
|
|||||||
|
|
||||||
protected abstract TenantEntity createTenantEntity(TenantEntity tenantEntity);
|
protected abstract TenantEntity createTenantEntity(TenantEntity tenantEntity);
|
||||||
protected abstract TenantEntity getTenantEntity(String tenantDomain);
|
protected abstract TenantEntity getTenantEntity(String tenantDomain);
|
||||||
protected abstract List<TenantEntity> getTenantEntities();
|
/**
|
||||||
|
* @param enabled Enabled or disabled tenants or <tt>null</tt> for no filter
|
||||||
|
*/
|
||||||
|
protected abstract List<TenantEntity> getTenantEntities(Boolean enabled);
|
||||||
protected abstract int updateTenantEntity(TenantEntity tenantEntity);
|
protected abstract int updateTenantEntity(TenantEntity tenantEntity);
|
||||||
protected abstract int deleteTenantEntity(String tenantDomain);
|
protected abstract int deleteTenantEntity(String tenantDomain);
|
||||||
}
|
}
|
||||||
|
@@ -42,7 +42,7 @@ public interface TenantAdminDAO
|
|||||||
/**
|
/**
|
||||||
* List tenants
|
* List tenants
|
||||||
*/
|
*/
|
||||||
List<TenantEntity> listTenants();
|
List<TenantEntity> listTenants(boolean enabledOnly);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get tenant for update
|
* Get tenant for update
|
||||||
|
@@ -119,13 +119,13 @@ public class TenantAdminDAOTest extends TestCase
|
|||||||
return txnHelper.doInTransaction(callback, true);
|
return txnHelper.doInTransaction(callback, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<TenantEntity> listTenants() throws Exception
|
private List<TenantEntity> listTenants(final boolean enabledOnly) throws Exception
|
||||||
{
|
{
|
||||||
RetryingTransactionCallback<List<TenantEntity>> callback = new RetryingTransactionCallback<List<TenantEntity>>()
|
RetryingTransactionCallback<List<TenantEntity>> callback = new RetryingTransactionCallback<List<TenantEntity>>()
|
||||||
{
|
{
|
||||||
public List<TenantEntity> execute() throws Throwable
|
public List<TenantEntity> execute() throws Throwable
|
||||||
{
|
{
|
||||||
return tenantAdminDAO.listTenants();
|
return tenantAdminDAO.listTenants(enabledOnly);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return txnHelper.doInTransaction(callback, true);
|
return txnHelper.doInTransaction(callback, true);
|
||||||
@@ -229,7 +229,8 @@ public class TenantAdminDAOTest extends TestCase
|
|||||||
final String tenantDomainPrefix = getName() + "-" + System.currentTimeMillis();
|
final String tenantDomainPrefix = getName() + "-" + System.currentTimeMillis();
|
||||||
final int cnt = 5;
|
final int cnt = 5;
|
||||||
|
|
||||||
int beforeCnt = listTenants().size();
|
int beforeCnt = listTenants(false).size();
|
||||||
|
int enabledCnt = listTenants(true).size();
|
||||||
|
|
||||||
for (int i = 1; i <= cnt; i++)
|
for (int i = 1; i <= cnt; i++)
|
||||||
{
|
{
|
||||||
@@ -240,7 +241,8 @@ public class TenantAdminDAOTest extends TestCase
|
|||||||
tenantEntity = createTenant(tenantDomain, false);
|
tenantEntity = createTenant(tenantDomain, false);
|
||||||
assertNotNull(tenantEntity);
|
assertNotNull(tenantEntity);
|
||||||
|
|
||||||
assertEquals(i+beforeCnt, listTenants().size());
|
assertEquals(i+beforeCnt, listTenants(false).size());
|
||||||
|
assertEquals("Tenant enabled/disabled count incorrect.", enabledCnt, listTenants(true).size());
|
||||||
|
|
||||||
tenantEntity = getTenant(tenantDomain);
|
tenantEntity = getTenant(tenantDomain);
|
||||||
assertNotNull(tenantEntity);
|
assertNotNull(tenantEntity);
|
||||||
@@ -254,7 +256,7 @@ public class TenantAdminDAOTest extends TestCase
|
|||||||
|
|
||||||
deleteTenant(tenantDomain);
|
deleteTenant(tenantDomain);
|
||||||
|
|
||||||
assertEquals(i-1+beforeCnt, listTenants().size());
|
assertEquals(i-1+beforeCnt, listTenants(false).size());
|
||||||
|
|
||||||
tenantEntity = getTenant(tenantDomain);
|
tenantEntity = getTenant(tenantDomain);
|
||||||
assertNull(tenantEntity);
|
assertNull(tenantEntity);
|
||||||
|
@@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.domain.tenant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entity for <b>alf_tenant</b> queries.
|
||||||
|
*
|
||||||
|
* @author Derek Hulley
|
||||||
|
* @since 4.2
|
||||||
|
*/
|
||||||
|
public class TenantQueryEntity
|
||||||
|
{
|
||||||
|
private String tenantDomain;
|
||||||
|
private String tenantName;
|
||||||
|
private Boolean enabled;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder(512);
|
||||||
|
sb.append("TenantQueryEntity")
|
||||||
|
.append("[ tenantDomain=").append(tenantDomain)
|
||||||
|
.append(", tenantName=").append(tenantName)
|
||||||
|
.append(", enabled=").append(enabled)
|
||||||
|
.append("]");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Framework usage only */
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private String getTenantDomain()
|
||||||
|
{
|
||||||
|
return tenantDomain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTenantDomain(String tenantDomain)
|
||||||
|
{
|
||||||
|
this.tenantDomain = tenantDomain;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Framework usage only */
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private String getTenantName()
|
||||||
|
{
|
||||||
|
return tenantName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTenantName(String tenantName)
|
||||||
|
{
|
||||||
|
this.tenantName = tenantName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Framework usage only */
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private Boolean getEnabled()
|
||||||
|
{
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(Boolean enabled)
|
||||||
|
{
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
}
|
@@ -24,6 +24,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.alfresco.repo.domain.tenant.AbstractTenantAdminDAOImpl;
|
import org.alfresco.repo.domain.tenant.AbstractTenantAdminDAOImpl;
|
||||||
import org.alfresco.repo.domain.tenant.TenantEntity;
|
import org.alfresco.repo.domain.tenant.TenantEntity;
|
||||||
|
import org.alfresco.repo.domain.tenant.TenantQueryEntity;
|
||||||
import org.mybatis.spring.SqlSessionTemplate;
|
import org.mybatis.spring.SqlSessionTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,9 +68,11 @@ public class TenantAdminDAOImpl extends AbstractTenantAdminDAOImpl
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
protected List<TenantEntity> getTenantEntities()
|
protected List<TenantEntity> getTenantEntities(Boolean enabled)
|
||||||
{
|
{
|
||||||
return (List<TenantEntity>)template.selectList(SELECT_TENANTS);
|
TenantQueryEntity entity = new TenantQueryEntity();
|
||||||
|
entity.setEnabled(enabled);
|
||||||
|
return (List<TenantEntity>)template.selectList(SELECT_TENANTS, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -234,7 +234,7 @@ public class ModuleComponentHelper
|
|||||||
{
|
{
|
||||||
if (tenantDomainCtx.equals(TenantService.DEFAULT_DOMAIN) && applyToTenants)
|
if (tenantDomainCtx.equals(TenantService.DEFAULT_DOMAIN) && applyToTenants)
|
||||||
{
|
{
|
||||||
tenantsNonFinal = tenantAdminService.getAllTenants();
|
tenantsNonFinal = tenantAdminService.getTenants(false);
|
||||||
for (Tenant tenant : tenantsNonFinal)
|
for (Tenant tenant : tenantsNonFinal)
|
||||||
{
|
{
|
||||||
mapExecutedComponents.put(tenant.getTenantDomain(), new HashSet<ModuleComponent>(10));
|
mapExecutedComponents.put(tenant.getTenantDomain(), new HashSet<ModuleComponent>(10));
|
||||||
|
@@ -145,7 +145,7 @@ public class ModuleComponentHelperTest extends BaseAlfrescoTestCase
|
|||||||
int tenantCount = 0;
|
int tenantCount = 0;
|
||||||
if (tenantDeployerService.isEnabled())
|
if (tenantDeployerService.isEnabled())
|
||||||
{
|
{
|
||||||
tenantCount = tenantDeployerService.getAllTenants().size();
|
tenantCount = tenantDeployerService.getTenants(true).size();
|
||||||
}
|
}
|
||||||
// Check
|
// Check
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
@@ -27,10 +27,8 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.repo.admin.registry.RegistryKey;
|
|
||||||
import org.alfresco.repo.admin.registry.RegistryService;
|
import org.alfresco.repo.admin.registry.RegistryService;
|
||||||
import org.alfresco.repo.tenant.TenantAdminService;
|
import org.alfresco.repo.tenant.TenantAdminService;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
@@ -46,7 +44,6 @@ import org.springframework.context.ApplicationContextAware;
|
|||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||||
import org.springframework.extensions.surf.util.I18NUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component controls the execution of
|
* This component controls the execution of
|
||||||
@@ -118,10 +115,7 @@ public class ModuleServiceImpl implements ApplicationContextAware, ModuleService
|
|||||||
this.moduleComponentHelper.setApplyToTenants(applyToTenants);
|
this.moduleComponentHelper.setApplyToTenants(applyToTenants);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
|
|
||||||
*/
|
|
||||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
|
||||||
{
|
{
|
||||||
this.resolver = applicationContext;
|
this.resolver = applicationContext;
|
||||||
|
@@ -113,7 +113,7 @@ public abstract class AbstractTenantRoutingContentStore extends AbstractRoutingC
|
|||||||
if ((currentUser == null) || (tenantService.getBaseNameUser(currentUser).equals(AuthenticationUtil.getSystemUserName())))
|
if ((currentUser == null) || (tenantService.getBaseNameUser(currentUser).equals(AuthenticationUtil.getSystemUserName())))
|
||||||
{
|
{
|
||||||
// return enabled stores across all tenants, if running as system/null user, for example, ContentStoreCleaner scheduled job
|
// return enabled stores across all tenants, if running as system/null user, for example, ContentStoreCleaner scheduled job
|
||||||
List<TenantEntity> tenants = tenantAdminDAO.listTenants();
|
List<TenantEntity> tenants = tenantAdminDAO.listTenants(false);
|
||||||
for (TenantEntity tenant : tenants)
|
for (TenantEntity tenant : tenants)
|
||||||
{
|
{
|
||||||
if (tenant.getEnabled())
|
if (tenant.getEnabled())
|
||||||
|
@@ -850,7 +850,7 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public List<Tenant> getTenants(boolean enabledOnly)
|
public List<Tenant> getTenants(boolean enabledOnly)
|
||||||
{
|
{
|
||||||
List<TenantEntity> tenantEntities = tenantAdminDAO.listTenants();
|
List<TenantEntity> tenantEntities = tenantAdminDAO.listTenants(enabledOnly);
|
||||||
List<Tenant> tenants = new ArrayList<Tenant>(tenantEntities.size());
|
List<Tenant> tenants = new ArrayList<Tenant>(tenantEntities.size());
|
||||||
for (TenantEntity tenantEntity : tenantEntities)
|
for (TenantEntity tenantEntity : tenantEntities)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user