diff --git a/source/java/org/alfresco/repo/search/results/SortedResultSet.java b/source/java/org/alfresco/repo/search/results/SortedResultSet.java index 67892829ff..741f29e066 100644 --- a/source/java/org/alfresco/repo/search/results/SortedResultSet.java +++ b/source/java/org/alfresco/repo/search/results/SortedResultSet.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Alfresco Software Limited. + * Copyright (C) 2005-2015 Alfresco Software Limited. * * This file is part of Alfresco * @@ -214,6 +214,11 @@ public class SortedResultSet implements ResultSet return resultSet.getResultSetMetaData(); } + public NodeService getNodeService() + { + return nodeService; + } + public ResultSetRow getRow(int i) { if (i < length()) diff --git a/source/java/org/alfresco/repo/search/results/SortedResultSetRow.java b/source/java/org/alfresco/repo/search/results/SortedResultSetRow.java index 4dc04b3c0a..df5ad132ab 100644 --- a/source/java/org/alfresco/repo/search/results/SortedResultSetRow.java +++ b/source/java/org/alfresco/repo/search/results/SortedResultSetRow.java @@ -18,11 +18,13 @@ */ package org.alfresco.repo.search.results; +import java.io.Serializable; import java.util.Map; import org.alfresco.repo.search.AbstractResultSetRow; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.search.ResultSetRow; +import org.alfresco.service.namespace.QName; /** * @author andyh @@ -60,8 +62,11 @@ public class SortedResultSetRow extends AbstractResultSetRow implements ResultSe throw new UnsupportedOperationException(); } - - + protected Map getDirectProperties() + { + SortedResultSet srs = (SortedResultSet) getResultSet(); + return srs.getNodeService().getProperties(srs.getNodeRef(getIndex())); + } diff --git a/source/test-java/org/alfresco/repo/search/SearchServiceTest.java b/source/test-java/org/alfresco/repo/search/SearchServiceTest.java index 0f186a5d1c..bce512a9d9 100644 --- a/source/test-java/org/alfresco/repo/search/SearchServiceTest.java +++ b/source/test-java/org/alfresco/repo/search/SearchServiceTest.java @@ -31,12 +31,7 @@ import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; -import org.alfresco.service.cmr.search.LimitBy; -import org.alfresco.service.cmr.search.PermissionEvaluationMode; -import org.alfresco.service.cmr.search.QueryConsistency; -import org.alfresco.service.cmr.search.ResultSet; -import org.alfresco.service.cmr.search.SearchParameters; -import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.service.cmr.search.*; import org.alfresco.service.cmr.security.MutableAuthenticationService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.namespace.QName; @@ -300,4 +295,53 @@ public class SearchServiceTest extends TestCase assertEquals(results.getResultSetMetaData().getPermissionEvaluationMode(), PermissionEvaluationMode.EAGER); results.close(); } + + // MNT-13713: row.getValue() returns null when indexing with lucene and sort is applied + public void testSearchWithSort() + { + authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + + // Output with sort + // do some search and display the values sorted + SearchParameters sp = new SearchParameters(); + sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); + sp.setLanguage(SearchService.LANGUAGE_LUCENE); + sp.addSort("@cm:name", true); + sp.setQuery("TYPE:\"cm:content\""); + + ResultSet rs = pubSearchService.query(sp); + + try + { + for (ResultSetRow row : rs) + { + assertFalse(null == row.getValue(ContentModel.PROP_NAME)); + } + } + finally + { + rs.close(); + } + + // Output without sort + // do some search and display the values sorted + sp = new SearchParameters(); + sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); + sp.setLanguage(SearchService.LANGUAGE_LUCENE); + sp.setQuery("TYPE:\"cm:content\""); + + rs = pubSearchService.query(sp); + + try + { + for (ResultSetRow row : rs) + { + assertFalse(null == row.getValue(ContentModel.PROP_NAME)); + } + } + finally + { + rs.close(); + } + } }