From 423850002ec2b6e2beef9d1d593537ad62c2123e Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Fri, 26 Jun 2015 15:28:22 +0000 Subject: [PATCH] RM-2130 (Post method invocation processor for QueryEngineResults) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/DEV/ENFORCE@107252 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../PostMethodInvocationProcessor.java | 24 --------------- ...eResultsPostMethodInvocationProcessor.java | 30 ++++++++++++------- ...PostMethodInvocationProcessorUnitTest.java | 6 ++-- 3 files changed, 23 insertions(+), 37 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/PostMethodInvocationProcessor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/PostMethodInvocationProcessor.java index 523db04e28..775d03a169 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/PostMethodInvocationProcessor.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/PostMethodInvocationProcessor.java @@ -98,30 +98,6 @@ public class PostMethodInvocationProcessor return result; } - /** - * Gets the processor from the available processors. - * - * @param clazz The class of the post invocation object. - * @return The suitable processor for the given class. - */ - protected BasePostMethodInvocationProcessor getProcessorForClass(Class clazz) - { - mandatory("clazz", clazz); - BasePostMethodInvocationProcessor result = null; - - Set, BasePostMethodInvocationProcessor>> processorsEntrySet = getProcessors().entrySet(); - for (Map.Entry, BasePostMethodInvocationProcessor> processorEntry : processorsEntrySet) - { - if (processorEntry.getKey().isAssignableFrom(clazz)) - { - result = processorEntry.getValue(); - break; - } - } - - return result; - } - /** * Processes the given object * diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessor.java index 3705335115..760b95afe6 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessor.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessor.java @@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.classification.interceptor.pr import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import org.alfresco.repo.search.impl.querymodel.QueryEngineResults; @@ -33,35 +34,42 @@ import org.alfresco.service.cmr.search.ResultSet; */ public class QueryEngineResultsPostMethodInvocationProcessor extends BasePostMethodInvocationProcessor { - /** The post method invocation processor for {@link ResultSet ResultSets}. */ - private BasePostMethodInvocationProcessor resultSetProcessor; - + /** + * @see org.alfresco.module.org_alfresco_module_rm.classification.interceptor.processor.BasePostMethodInvocationProcessor#getClassName() + */ @Override protected Class getClassName() { return QueryEngineResults.class; } + /** + * @see org.alfresco.module.org_alfresco_module_rm.classification.interceptor.processor.BasePostMethodInvocationProcessor#process(java.lang.Object) + */ @SuppressWarnings("unchecked") @Override public T process(T object) { - if (resultSetProcessor == null) - { - resultSetProcessor = getPostMethodInvocationProcessor().getProcessorForClass(ResultSet.class); - } - QueryEngineResults queryEngineResults = getClassName().cast(object); Map, ResultSet> resultsMap = queryEngineResults.getResults(); Map, ResultSet> returnMap = new HashMap<>(); - for (Set key : resultsMap.keySet()) + BasePostMethodInvocationProcessor processor = null; + + for (Entry, ResultSet> entry : resultsMap.entrySet()) { - ResultSet newResultSet = resultSetProcessor.process(resultsMap.get(key)); + ResultSet value = entry.getValue(); + if (processor == null) + { + processor = getPostMethodInvocationProcessor().getProcessor(value); + } + + ResultSet newResultSet = processor.process(value); if (newResultSet != null) { - returnMap.put(key, newResultSet); + returnMap.put(entry.getKey(), newResultSet); } } + return (T) new QueryEngineResults(returnMap); } } diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessorUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessorUnitTest.java index ed9ad9ef16..7718b2e492 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessorUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/interceptor/processor/QueryEngineResultsPostMethodInvocationProcessorUnitTest.java @@ -27,13 +27,15 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -import com.google.common.collect.Sets; import org.alfresco.repo.search.impl.querymodel.QueryEngineResults; import org.alfresco.service.cmr.search.ResultSet; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; + +import com.google.common.collect.Sets; /** * Unit tests for {@link QueryEngineResultPostMethodInvocationProcessor}. @@ -62,7 +64,7 @@ public class QueryEngineResultsPostMethodInvocationProcessorUnitTest { initMocks(this); - when(mockPostMethodInvocationProcessor.getProcessorForClass(ResultSet.class)).thenReturn(mockResultSetPMIP); + when(mockPostMethodInvocationProcessor.getProcessor(Mockito.any())).thenReturn(mockResultSetPMIP); when(mockResultSetPMIP.process(UNCLASSIFIED_RESULT_SET)).thenReturn(UNCLASSIFIED_RESULT_SET); when(mockResultSetPMIP.process(CLASSIFIED_RESULT_SET)).thenReturn(null);