diff --git a/config/alfresco/extension/disabled-avm-indexing-context.xml.sample b/config/alfresco/extension/disabled-avm-indexing-context.xml.sample new file mode 100644 index 0000000000..0b6927a543 --- /dev/null +++ b/config/alfresco/extension/disabled-avm-indexing-context.xml.sample @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + false + + + + \ No newline at end of file diff --git a/config/alfresco/public-services-context.xml b/config/alfresco/public-services-context.xml index c2739d4786..b446ad07ad 100644 --- a/config/alfresco/public-services-context.xml +++ b/config/alfresco/public-services-context.xml @@ -862,6 +862,9 @@ + + true + diff --git a/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java b/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java index b6b30f51aa..f31da87319 100644 --- a/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java +++ b/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java @@ -35,94 +35,102 @@ import org.aopalliance.intercept.MethodInvocation; * Method interceptor for atomic indexing of AVM entries * * @author andyh - * */ public class AVMSnapShotTriggeredIndexingMethodInterceptor implements MethodInterceptor { private AVMService avmService; - + private IndexerAndSearcher indexerAndSearcher; - + + private boolean enableIndexing = true; + public Object invoke(MethodInvocation mi) throws Throwable { - if(mi.getMethod().getName().equals("createSnapshot")) + if (enableIndexing) { - String store = (String)mi.getArguments()[0]; - int before = avmService.getLatestSnapshotID(store); - Object returnValue = mi.proceed(); - int after = avmService.getLatestSnapshotID(store); - StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); - Indexer indexer = indexerAndSearcher.getIndexer(storeRef); - if(indexer instanceof AVMLuceneIndexer) + if (mi.getMethod().getName().equals("createSnapshot")) { - AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer)indexer; - avmIndexer.index(store, before, after); + String store = (String) mi.getArguments()[0]; + int before = avmService.getLatestSnapshotID(store); + Object returnValue = mi.proceed(); + int after = avmService.getLatestSnapshotID(store); + StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); + Indexer indexer = indexerAndSearcher.getIndexer(storeRef); + if (indexer instanceof AVMLuceneIndexer) + { + AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer; + avmIndexer.index(store, before, after); + } + return returnValue; } - return returnValue; - } - // TODO: Purge store - else if(mi.getMethod().getName().equals("purgeStore")) - { - String store = (String)mi.getArguments()[0]; - Object returnValue = mi.proceed(); - StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); - Indexer indexer = indexerAndSearcher.getIndexer(storeRef); - if(indexer instanceof AVMLuceneIndexer) + // TODO: Purge store + else if (mi.getMethod().getName().equals("purgeStore")) { - AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer)indexer; - avmIndexer.deleteIndex(store); + String store = (String) mi.getArguments()[0]; + Object returnValue = mi.proceed(); + StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); + Indexer indexer = indexerAndSearcher.getIndexer(storeRef); + if (indexer instanceof AVMLuceneIndexer) + { + AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer; + avmIndexer.deleteIndex(store); + } + return returnValue; } - return returnValue; - } - else if(mi.getMethod().getName().equals("createStore")) - { - String store = (String)mi.getArguments()[0]; - Object returnValue = mi.proceed(); - StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); - Indexer indexer = indexerAndSearcher.getIndexer(storeRef); - if(indexer instanceof AVMLuceneIndexer) + else if (mi.getMethod().getName().equals("createStore")) { - AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer)indexer; - avmIndexer.createIndex(store); + String store = (String) mi.getArguments()[0]; + Object returnValue = mi.proceed(); + StoreRef storeRef = AVMNodeConverter.ToStoreRef(store); + Indexer indexer = indexerAndSearcher.getIndexer(storeRef); + if (indexer instanceof AVMLuceneIndexer) + { + AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer; + avmIndexer.createIndex(store); + } + return returnValue; } - return returnValue; - } - else if(mi.getMethod().getName().equals("renameStore")) - { - String from = (String)mi.getArguments()[0]; - String to = (String)mi.getArguments()[1]; - Object returnValue = mi.proceed(); - int after = avmService.getLatestSnapshotID(to); - - StoreRef fromRef = AVMNodeConverter.ToStoreRef(from); - StoreRef toRef = AVMNodeConverter.ToStoreRef(to); - - Indexer indexer = indexerAndSearcher.getIndexer(fromRef); - if(indexer instanceof AVMLuceneIndexer) + else if (mi.getMethod().getName().equals("renameStore")) { - AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer)indexer; - avmIndexer.deleteIndex(from); + String from = (String) mi.getArguments()[0]; + String to = (String) mi.getArguments()[1]; + Object returnValue = mi.proceed(); + int after = avmService.getLatestSnapshotID(to); + + StoreRef fromRef = AVMNodeConverter.ToStoreRef(from); + StoreRef toRef = AVMNodeConverter.ToStoreRef(to); + + Indexer indexer = indexerAndSearcher.getIndexer(fromRef); + if (indexer instanceof AVMLuceneIndexer) + { + AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer; + avmIndexer.deleteIndex(from); + } + + indexer = indexerAndSearcher.getIndexer(toRef); + if (indexer instanceof AVMLuceneIndexer) + { + AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer; + avmIndexer.createIndex(to); + avmIndexer.index(to, 0, after); + } + + return returnValue; } - - indexer = indexerAndSearcher.getIndexer(toRef); - if(indexer instanceof AVMLuceneIndexer) + else { - AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer)indexer; - avmIndexer.createIndex(to); - avmIndexer.index(to, 0, after); + return mi.proceed(); } - - return returnValue; } else { return mi.proceed(); } - } /** * Set the AVM service + * * @param avmService */ public void setAvmService(AVMService avmService) @@ -132,6 +140,7 @@ public class AVMSnapShotTriggeredIndexingMethodInterceptor implements MethodInte /** * Set the AVM indexer and searcher + * * @param indexerAndSearcher */ public void setIndexerAndSearcher(IndexerAndSearcher indexerAndSearcher) @@ -139,4 +148,16 @@ public class AVMSnapShotTriggeredIndexingMethodInterceptor implements MethodInte this.indexerAndSearcher = indexerAndSearcher; } + /** + * Enable or disable indexing + * + * @param enableIndexing + */ + public void setEnableIndexing(boolean enableIndexing) + { + this.enableIndexing = enableIndexing; + } + + + }