From eaf4f69cdd84c8f0b95e2c65c0ec5f482df68766 Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Wed, 23 Jul 2014 16:14:52 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud) 77169: Merged PLATFORM1 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 74318: ACE-1996: Cluster: Web client extensions not distributed: - Remove initial title/description resolving in CMIS dictionaries Merged DEV to PLATFORM1(4.3.0) with corrections 72232: MNT-9882: Cluster: Web client extensions not distributed - Use asynchronously refreshed cache in diactionaryDAO 73275: MNT-9882: Cluster: Web client extensions not distributed - Add javadocs, remove excess classes. 73509: MNT-9882: Cluster: Web client extensions not distributed - Remove stale configs for "compiledModelsSharedCache", remove unreachable code from DictionaryDAOImpl, return value from NoOpCompiledModelsCache.get() method. 73591: ACE-1996: Cluster: Web client extensions not distributed - Remove NoOpCompiledModelsCache. - Modify unit tests that uses CompiledModelCache git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@78027 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/cache-context.xml | 4 +-- config/alfresco/caches.properties | 9 ------ .../alfresco/repo/dictionary/TestModel.java | 21 +++++++++---- .../repo/dictionary/DictionaryDAOTest.java | 24 +++++++++++---- .../dictionary/DictionaryLoadDAOTest.java | 24 +++++++-------- .../dictionary/RepoDictionaryDAOTest.java | 30 ++++++++++++------- .../repo/policy/MTPolicyComponentTest.java | 21 +++++++++---- .../repo/policy/PolicyComponentTest.java | 21 +++++++++---- 8 files changed, 100 insertions(+), 54 deletions(-) diff --git a/config/alfresco/cache-context.xml b/config/alfresco/cache-context.xml index bda3775e73..fadfc0856a 100644 --- a/config/alfresco/cache-context.xml +++ b/config/alfresco/cache-context.xml @@ -378,8 +378,8 @@ - - + + diff --git a/config/alfresco/caches.properties b/config/alfresco/caches.properties index 995e376d1a..01b4c5afcf 100644 --- a/config/alfresco/caches.properties +++ b/config/alfresco/caches.properties @@ -373,15 +373,6 @@ cache.messagesSharedCache.eviction-policy=LRU cache.messagesSharedCache.eviction-percentage=25 cache.messagesSharedCache.merge-policy=hz.ADD_NEW_ENTRY -cache.compiledModelsSharedCache.maxItems=1000 -cache.compiledModelsSharedCache.timeToLiveSeconds=0 -cache.compiledModelsSharedCache.maxIdleSeconds=0 -cache.compiledModelsSharedCache.cluster.type=invalidating -cache.compiledModelsSharedCache.backup-count=1 -cache.compiledModelsSharedCache.eviction-policy=LRU -cache.compiledModelsSharedCache.eviction-percentage=25 -cache.compiledModelsSharedCache.merge-policy=hz.ADD_NEW_ENTRY - cache.webScriptsRegistrySharedCache.maxItems=1000 cache.webScriptsRegistrySharedCache.timeToLiveSeconds=0 cache.webScriptsRegistrySharedCache.maxIdleSeconds=0 diff --git a/source/java/org/alfresco/repo/dictionary/TestModel.java b/source/java/org/alfresco/repo/dictionary/TestModel.java index e775a8aa6b..946e27017f 100644 --- a/source/java/org/alfresco/repo/dictionary/TestModel.java +++ b/source/java/org/alfresco/repo/dictionary/TestModel.java @@ -20,11 +20,14 @@ package org.alfresco.repo.dictionary; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; import org.alfresco.repo.cache.DefaultSimpleCache; import org.alfresco.repo.cache.SimpleCache; import org.alfresco.repo.tenant.SingleTServiceImpl; import org.alfresco.repo.tenant.TenantService; +import org.alfresco.util.ThreadPoolExecutorFactoryBean; +import org.alfresco.util.cache.DefaultAsynchronouslyRefreshedCacheRegistry; /** @@ -42,8 +45,9 @@ public class TestModel * TestModel [-h] [model filename]* *

* Returns 0 for success. + * @throws Exception */ - public static void main(String[] args) + public static void main(String[] args) throws Exception { if (args != null && args.length > 0 && args[0].equals("-h")) { @@ -82,7 +86,7 @@ public class TestModel DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); // bootstrap dao try @@ -109,9 +113,16 @@ public class TestModel } } - private static void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO) + private static void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - SimpleCache dictionaryCache = new DefaultSimpleCache(); - dictionaryDAO.setDictionaryRegistryCache(dictionaryCache); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + ThreadPoolExecutorFactoryBean threadPoolfactory = new ThreadPoolExecutorFactoryBean(); + threadPoolfactory.afterPropertiesSet(); + compiledModelsCache.setThreadPoolExecutor((ThreadPoolExecutor) threadPoolfactory.getObject()); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + dictionaryDAO.init(); } } \ No newline at end of file diff --git a/source/test-java/org/alfresco/repo/dictionary/DictionaryDAOTest.java b/source/test-java/org/alfresco/repo/dictionary/DictionaryDAOTest.java index 9413d83d8a..8d4b2af831 100644 --- a/source/test-java/org/alfresco/repo/dictionary/DictionaryDAOTest.java +++ b/source/test-java/org/alfresco/repo/dictionary/DictionaryDAOTest.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertNull; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; import org.alfresco.model.ContentModel; import org.alfresco.repo.cache.MemoryCache; @@ -33,6 +34,10 @@ import org.alfresco.repo.tenant.SingleTServiceImpl; import org.alfresco.repo.tenant.TenantService; import org.alfresco.repo.tenant.TenantUtil; import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork; +import org.alfresco.util.DynamicallySizedThreadPoolExecutor; +import org.alfresco.util.TraceableThreadFactory; +import org.alfresco.util.ThreadPoolExecutorFactoryBean; +import org.alfresco.util.cache.DefaultAsynchronouslyRefreshedCacheRegistry; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.TypeDefinition; import org.alfresco.service.namespace.QName; @@ -40,6 +45,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.extensions.surf.util.I18NUtil; + /** * * @author sglover @@ -64,7 +70,7 @@ public class DictionaryDAOTest this.dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); new AuthenticationUtil().afterPropertiesSet(); @@ -87,19 +93,27 @@ public class DictionaryDAOTest service = component; } - private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO) + private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - dictionaryDAO.setDictionaryRegistryCache(new MemoryCache()); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + ThreadPoolExecutorFactoryBean threadPoolfactory = new ThreadPoolExecutorFactoryBean(); + threadPoolfactory.afterPropertiesSet(); + compiledModelsCache.setThreadPoolExecutor((ThreadPoolExecutor) threadPoolfactory.getObject()); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + dictionaryDAO.init(); } @Test - public void testBootstrap() + public void testBootstrap() throws Exception { TenantService tenantService = new SingleTServiceImpl(); DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); DictionaryBootstrap bootstrap = new DictionaryBootstrap(); List bootstrapModels = new ArrayList(); diff --git a/source/test-java/org/alfresco/repo/dictionary/DictionaryLoadDAOTest.java b/source/test-java/org/alfresco/repo/dictionary/DictionaryLoadDAOTest.java index f27e6c47b5..29b84abf56 100644 --- a/source/test-java/org/alfresco/repo/dictionary/DictionaryLoadDAOTest.java +++ b/source/test-java/org/alfresco/repo/dictionary/DictionaryLoadDAOTest.java @@ -113,20 +113,18 @@ public class DictionaryLoadDAOTest private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - dictionaryDAO.setDictionaryRegistryCache(new MemoryCache()); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + TraceableThreadFactory threadFactory = new TraceableThreadFactory(); + threadFactory.setThreadDaemon(true); + threadFactory.setThreadPriority(Thread.NORM_PRIORITY); -// CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); -// compiledModelsCache.setDictionaryDAO(dictionaryDAO); -// compiledModelsCache.setTenantService(tenantService); -// compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); -// TraceableThreadFactory threadFactory = new TraceableThreadFactory(); -// threadFactory.setThreadDaemon(true); -// threadFactory.setThreadPriority(Thread.NORM_PRIORITY); -// -// ThreadPoolExecutor threadPoolExecutor = new DynamicallySizedThreadPoolExecutor(20, 20, 90, TimeUnit.SECONDS, new LinkedBlockingQueue(), threadFactory, -// new ThreadPoolExecutor.CallerRunsPolicy()); -// compiledModelsCache.setThreadPoolExecutor(threadPoolExecutor); -// dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + ThreadPoolExecutor threadPoolExecutor = new DynamicallySizedThreadPoolExecutor(20, 20, 90, TimeUnit.SECONDS, new LinkedBlockingQueue(), threadFactory, + new ThreadPoolExecutor.CallerRunsPolicy()); + compiledModelsCache.setThreadPoolExecutor(threadPoolExecutor); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); dictionaryDAO.init(); } diff --git a/source/test-java/org/alfresco/repo/dictionary/RepoDictionaryDAOTest.java b/source/test-java/org/alfresco/repo/dictionary/RepoDictionaryDAOTest.java index 7cf56efe41..6f9a05c203 100644 --- a/source/test-java/org/alfresco/repo/dictionary/RepoDictionaryDAOTest.java +++ b/source/test-java/org/alfresco/repo/dictionary/RepoDictionaryDAOTest.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.concurrent.ThreadPoolExecutor; import junit.framework.TestCase; @@ -54,6 +55,8 @@ import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.dictionary.TypeDefinition; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.ThreadPoolExecutorFactoryBean; +import org.alfresco.util.cache.DefaultAsynchronouslyRefreshedCacheRegistry; import org.springframework.extensions.surf.util.I18NUtil; @@ -68,7 +71,7 @@ public class RepoDictionaryDAOTest extends TestCase @Override - public void setUp() + public void setUp() throws Exception { // Registered the required constraints ConstraintRegistry constraintRegistry = ConstraintRegistry.getInstance(); @@ -89,7 +92,7 @@ public class RepoDictionaryDAOTest extends TestCase DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); // Populate with appropriate models DictionaryBootstrap bootstrap = new DictionaryBootstrap(); @@ -110,19 +113,26 @@ public class RepoDictionaryDAOTest extends TestCase service = component; } - private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO) + private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - SimpleCache dictionaryCache = new DefaultSimpleCache(11, getClass().getName() + ".dictionary"); - dictionaryDAO.setDictionaryRegistryCache(dictionaryCache); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + ThreadPoolExecutorFactoryBean threadPoolfactory = new ThreadPoolExecutorFactoryBean(); + threadPoolfactory.afterPropertiesSet(); + compiledModelsCache.setThreadPoolExecutor((ThreadPoolExecutor) threadPoolfactory.getObject()); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + dictionaryDAO.init(); } - public void testBootstrap() + public void testBootstrap() throws Exception { TenantService tenantService = new SingleTServiceImpl(); DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); DictionaryBootstrap bootstrap = new DictionaryBootstrap(); List bootstrapModels = new ArrayList(); @@ -399,18 +409,18 @@ public class RepoDictionaryDAOTest extends TestCase assertTrue("Expected 'true' for timestamp propagation", childAssocDef.getPropagateTimestamps()); } - public void testADB159() throws UnsupportedEncodingException + public void testADB159() throws Exception { // source dictionary TenantService tenantService = new SingleTServiceImpl(); DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); // destination dictionary DictionaryDAOImpl dictionaryDAO2 = new DictionaryDAOImpl(); dictionaryDAO2.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO2); + initDictionaryCaches(dictionaryDAO2, tenantService); List models = new ArrayList(); models.add("alfresco/model/dictionaryModel.xml"); diff --git a/source/test-java/org/alfresco/repo/policy/MTPolicyComponentTest.java b/source/test-java/org/alfresco/repo/policy/MTPolicyComponentTest.java index 53a38dd351..dbe94d2548 100644 --- a/source/test-java/org/alfresco/repo/policy/MTPolicyComponentTest.java +++ b/source/test-java/org/alfresco/repo/policy/MTPolicyComponentTest.java @@ -26,10 +26,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; import junit.framework.TestCase; import org.alfresco.repo.cache.MemoryCache; +import org.alfresco.repo.dictionary.CompiledModelsCache; import org.alfresco.repo.dictionary.DictionaryBootstrap; import org.alfresco.repo.dictionary.DictionaryComponent; import org.alfresco.repo.dictionary.DictionaryDAOImpl; @@ -38,6 +40,8 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.namespace.QName; +import org.alfresco.util.ThreadPoolExecutorFactoryBean; +import org.alfresco.util.cache.DefaultAsynchronouslyRefreshedCacheRegistry; /** * Policy Component Tests @@ -81,7 +85,7 @@ public class MTPolicyComponentTest extends TestCase DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(mockTenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, mockTenantService); DictionaryBootstrap bootstrap = new DictionaryBootstrap(); List bootstrapModels = new ArrayList(); @@ -102,11 +106,18 @@ public class MTPolicyComponentTest extends TestCase policyComponent = x; } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO) + @SuppressWarnings("unchecked") + private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - // note: unit tested here with null cache - dictionaryDAO.setDictionaryRegistryCache(new MemoryCache()); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + ThreadPoolExecutorFactoryBean threadPoolfactory = new ThreadPoolExecutorFactoryBean(); + threadPoolfactory.afterPropertiesSet(); + compiledModelsCache.setThreadPoolExecutor((ThreadPoolExecutor) threadPoolfactory.getObject()); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + dictionaryDAO.init(); } public void testJavaBehaviour() diff --git a/source/test-java/org/alfresco/repo/policy/PolicyComponentTest.java b/source/test-java/org/alfresco/repo/policy/PolicyComponentTest.java index 45371e5b54..8c18d41557 100644 --- a/source/test-java/org/alfresco/repo/policy/PolicyComponentTest.java +++ b/source/test-java/org/alfresco/repo/policy/PolicyComponentTest.java @@ -21,16 +21,20 @@ package org.alfresco.repo.policy; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; import junit.framework.TestCase; import org.alfresco.repo.cache.MemoryCache; +import org.alfresco.repo.dictionary.CompiledModelsCache; import org.alfresco.repo.dictionary.DictionaryBootstrap; import org.alfresco.repo.dictionary.DictionaryComponent; import org.alfresco.repo.dictionary.DictionaryDAOImpl; import org.alfresco.repo.tenant.SingleTServiceImpl; import org.alfresco.repo.tenant.TenantService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.ThreadPoolExecutorFactoryBean; +import org.alfresco.util.cache.DefaultAsynchronouslyRefreshedCacheRegistry; public class PolicyComponentTest extends TestCase @@ -58,7 +62,7 @@ public class PolicyComponentTest extends TestCase TenantService tenantService = new SingleTServiceImpl(); DictionaryDAOImpl dictionaryDAO = new DictionaryDAOImpl(); dictionaryDAO.setTenantService(tenantService); - initDictionaryCaches(dictionaryDAO); + initDictionaryCaches(dictionaryDAO, tenantService); DictionaryBootstrap bootstrap = new DictionaryBootstrap(); List bootstrapModels = new ArrayList(); @@ -77,11 +81,18 @@ public class PolicyComponentTest extends TestCase policyComponent = new PolicyComponentImpl(dictionary); } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO) + @SuppressWarnings("unchecked") + private void initDictionaryCaches(DictionaryDAOImpl dictionaryDAO, TenantService tenantService) throws Exception { - // note: unit tested here with null cache - dictionaryDAO.setDictionaryRegistryCache(new MemoryCache()); + CompiledModelsCache compiledModelsCache = new CompiledModelsCache(); + compiledModelsCache.setDictionaryDAO(dictionaryDAO); + compiledModelsCache.setTenantService(tenantService); + compiledModelsCache.setRegistry(new DefaultAsynchronouslyRefreshedCacheRegistry()); + ThreadPoolExecutorFactoryBean threadPoolfactory = new ThreadPoolExecutorFactoryBean(); + threadPoolfactory.afterPropertiesSet(); + compiledModelsCache.setThreadPoolExecutor((ThreadPoolExecutor) threadPoolfactory.getObject()); + dictionaryDAO.setDictionaryRegistryCache(compiledModelsCache); + dictionaryDAO.init(); } public void testJavaBehaviour()