diff --git a/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java b/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java index 2552a7ce4ce..06a0335a17c 100644 --- a/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java +++ b/intg/src/main/java/org/apache/atlas/model/discovery/QuickSearchParameters.java @@ -20,10 +20,13 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.apache.atlas.SortOrder; import org.apache.atlas.model.discovery.SearchParameters.FilterCriteria; import java.io.Serializable; +import java.util.Collection; +import java.util.LinkedHashSet; import java.util.Set; import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; @@ -45,6 +48,7 @@ public class QuickSearchParameters implements Serializable { private boolean excludeDeletedEntities; private int offset; private int limit; + @JsonDeserialize(as = LinkedHashSet.class) private Set attributes; private String sortBy; private SortOrder sortOrder; @@ -56,7 +60,7 @@ public class QuickSearchParameters implements Serializable { public QuickSearchParameters() { } - public QuickSearchParameters(String query, String typeName, FilterCriteria entityFilters, boolean includeSubTypes, boolean excludeDeletedEntities, int offset, int limit, Set attributes, String sortBy, SortOrder sortOrder) { + public QuickSearchParameters(String query, String typeName, FilterCriteria entityFilters, boolean includeSubTypes, boolean excludeDeletedEntities, int offset, int limit, Collection attributes, String sortBy, SortOrder sortOrder) { this.query = query; this.typeName = typeName; this.entityFilters = entityFilters; @@ -64,7 +68,7 @@ public QuickSearchParameters(String query, String typeName, FilterCriteria entit this.excludeDeletedEntities = excludeDeletedEntities; this.offset = offset; this.limit = limit; - this.attributes = attributes; + this.attributes = attributes == null ? null : new LinkedHashSet<>(attributes); this.sortBy = sortBy; this.sortOrder = sortOrder; } @@ -129,8 +133,8 @@ public Set getAttributes() { return attributes; } - public void setAttributes(Set attributes) { - this.attributes = attributes; + public void setAttributes(Collection attributes) { + this.attributes = attributes == null ? null : new LinkedHashSet<>(attributes); } public String getSortBy() { diff --git a/intg/src/main/java/org/apache/atlas/model/discovery/SearchParameters.java b/intg/src/main/java/org/apache/atlas/model/discovery/SearchParameters.java index 5954dd038c2..923eb1633e4 100644 --- a/intg/src/main/java/org/apache/atlas/model/discovery/SearchParameters.java +++ b/intg/src/main/java/org/apache/atlas/model/discovery/SearchParameters.java @@ -22,10 +22,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.apache.atlas.SortOrder; import java.io.Serializable; +import java.util.Collection; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -63,6 +66,7 @@ public class SearchParameters implements Serializable { private FilterCriteria entityFilters; private FilterCriteria tagFilters; private FilterCriteria relationshipFilters; + @JsonDeserialize(as = LinkedHashSet.class) private Set attributes; private SortOrder sortOrder; @@ -319,11 +323,12 @@ public Set getAttributes() { /** * Return these attributes in the result response + * Duplicate attribute names are ignored; the first occurrence determines position. * * @param attributes */ - public void setAttributes(Set attributes) { - this.attributes = attributes; + public void setAttributes(Collection attributes) { + this.attributes = attributes == null ? null : new LinkedHashSet<>(attributes); } /** diff --git a/intg/src/test/java/org/apache/atlas/model/discovery/TestQuickSearchParameters.java b/intg/src/test/java/org/apache/atlas/model/discovery/TestQuickSearchParameters.java index 74a715f6174..0f7c091af9e 100644 --- a/intg/src/test/java/org/apache/atlas/model/discovery/TestQuickSearchParameters.java +++ b/intg/src/test/java/org/apache/atlas/model/discovery/TestQuickSearchParameters.java @@ -22,8 +22,9 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -66,7 +67,7 @@ public void testParameterizedConstructor() { boolean excludeDeletedEntities = true; int offset = 10; int limit = 100; - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("attr1"); String sortBy = "name"; SortOrder sortOrder = SortOrder.ASCENDING; @@ -82,7 +83,7 @@ public void testParameterizedConstructor() { assertTrue(params.getExcludeDeletedEntities()); assertEquals(params.getOffset(), offset); assertEquals(params.getLimit(), limit); - assertSame(params.getAttributes(), attributes); + assertEquals(params.getAttributes(), new LinkedHashSet<>(attributes)); assertEquals(params.getSortBy(), sortBy); assertEquals(params.getSortOrder(), sortOrder); } @@ -183,13 +184,13 @@ public void testLimitGetterSetter() { public void testAttributesGetterSetter() { assertNull(searchParameters.getAttributes()); - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("name"); attributes.add("description"); attributes.add("owner"); searchParameters.setAttributes(attributes); - assertSame(searchParameters.getAttributes(), attributes); + assertEquals(searchParameters.getAttributes(), new LinkedHashSet<>(attributes)); searchParameters.setAttributes(null); assertNull(searchParameters.getAttributes()); @@ -244,7 +245,7 @@ public void testCompleteParameterConfiguration() { boolean excludeDeletedEntities = true; int offset = 25; int limit = 500; - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("name"); attributes.add("qualifiedName"); attributes.add("owner"); @@ -271,7 +272,7 @@ public void testCompleteParameterConfiguration() { assertTrue(searchParameters.getExcludeDeletedEntities()); assertEquals(searchParameters.getOffset(), offset); assertEquals(searchParameters.getLimit(), limit); - assertSame(searchParameters.getAttributes(), attributes); + assertEquals(searchParameters.getAttributes(), new LinkedHashSet<>(attributes)); assertEquals(searchParameters.getSortBy(), sortBy); assertEquals(searchParameters.getSortOrder(), sortOrder); assertTrue(searchParameters.getExcludeHeaderAttributes()); @@ -296,7 +297,7 @@ public void testParameterizedConstructorWithNullValues() { @Test public void testEmptyAttributesSet() { - Set emptyAttributes = new HashSet<>(); + List emptyAttributes = new ArrayList<>(); searchParameters.setAttributes(emptyAttributes); assertNotNull(searchParameters.getAttributes()); @@ -306,15 +307,15 @@ public void testEmptyAttributesSet() { @Test public void testAttributesSetModification() { - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("initialAttribute"); searchParameters.setAttributes(attributes); attributes.add("additionalAttribute"); - assertEquals(searchParameters.getAttributes().size(), 2); + assertEquals(searchParameters.getAttributes().size(), 1); assertTrue(searchParameters.getAttributes().contains("initialAttribute")); - assertTrue(searchParameters.getAttributes().contains("additionalAttribute")); + assertFalse(searchParameters.getAttributes().contains("additionalAttribute")); } @Test @@ -413,7 +414,7 @@ public void testComplexFilterCriteria() { @Test public void testAttributesWithVariousTypes() { - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("stringAttribute"); attributes.add("numericAttribute"); attributes.add("dateAttribute"); @@ -472,7 +473,7 @@ public void testSearchScenarioWithAllParameters() { searchParameters.setOffset(0); searchParameters.setLimit(50); - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("qualifiedName"); attributes.add("owner"); attributes.add("createTime"); diff --git a/intg/src/test/java/org/apache/atlas/model/discovery/TestSearchParameters.java b/intg/src/test/java/org/apache/atlas/model/discovery/TestSearchParameters.java index 53b90a1a0f0..376217f3ab9 100644 --- a/intg/src/test/java/org/apache/atlas/model/discovery/TestSearchParameters.java +++ b/intg/src/test/java/org/apache/atlas/model/discovery/TestSearchParameters.java @@ -20,13 +20,14 @@ import org.apache.atlas.SortOrder; import org.apache.atlas.model.discovery.SearchParameters.FilterCriteria; import org.apache.atlas.model.discovery.SearchParameters.Operator; +import org.apache.atlas.utils.AtlasJson; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.ArrayList; -import java.util.HashSet; +import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; -import java.util.Set; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -290,16 +291,24 @@ public void testRelationshipFiltersGetterSetter() { public void testAttributesGetterSetter() { assertNull(searchParameters.getAttributes()); - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("name"); attributes.add("description"); searchParameters.setAttributes(attributes); - assertSame(searchParameters.getAttributes(), attributes); + assertEquals(searchParameters.getAttributes(), new LinkedHashSet<>(attributes)); searchParameters.setAttributes(null); assertNull(searchParameters.getAttributes()); } + @Test + public void testAttributesDedupePreservesFirstOccurrenceOrder() { + searchParameters.setAttributes(Arrays.asList("qualifiedName", "createTime", "qualifiedName")); + + assertEquals(searchParameters.getAttributes(), new LinkedHashSet<>(Arrays.asList("qualifiedName", "createTime"))); + assertEquals(new ArrayList<>(searchParameters.getAttributes()), Arrays.asList("qualifiedName", "createTime")); + } + @Test public void testSortByGetterSetter() { assertNull(searchParameters.getSortBy()); @@ -708,7 +717,7 @@ public void testCompleteSearchParametersConfiguration() { searchParameters.setSortBy("createTime"); searchParameters.setSortOrder(SortOrder.DESCENDING); - Set attributes = new HashSet<>(); + List attributes = new ArrayList<>(); attributes.add("qualifiedName"); attributes.add("owner"); searchParameters.setAttributes(attributes); @@ -736,6 +745,26 @@ public void testCompleteSearchParametersConfiguration() { assertEquals(searchParameters.getSortBy(), "createTime"); assertEquals(searchParameters.getSortOrder(), SortOrder.DESCENDING); assertEquals(searchParameters.getAttributes().size(), 2); + assertEquals(new ArrayList<>(searchParameters.getAttributes()).get(0), "qualifiedName"); + assertEquals(new ArrayList<>(searchParameters.getAttributes()).get(1), "owner"); assertNotNull(searchParameters.getEntityFilters()); } + + @Test + public void testAttributesJsonDeserializationPreservesOrder() { + String json = "{\"typeName\":\"hive_table\",\"attributes\":[\"qualifiedName\",\"createTime\"]}"; + + SearchParameters params = AtlasJson.fromJson(json, SearchParameters.class); + + assertEquals(params.getAttributes(), new LinkedHashSet<>(Arrays.asList("qualifiedName", "createTime"))); + } + + @Test + public void testAttributesJsonDeserializationDedupes() { + String json = "{\"typeName\":\"hive_table\",\"attributes\":[\"qualifiedName\",\"createTime\",\"qualifiedName\"]}"; + + SearchParameters params = AtlasJson.fromJson(json, SearchParameters.class); + + assertEquals(params.getAttributes(), new LinkedHashSet<>(Arrays.asList("qualifiedName", "createTime"))); + } } diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java index 410a42f1c4c..f0413ad3925 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java +++ b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java @@ -101,6 +101,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -652,7 +653,10 @@ public AtlasSearchResult searchRelatedEntities(String guid, String relation, boo AtlasVertex vertex = entityRetriever.getEntityVertex(endVertexGuid); if (vertex != null) { - AtlasEntityHeader entity = entityRetriever.toAtlasEntityHeader(vertex, searchParameters.getAttributes()); + Set requestedAttributes = CollectionUtils.isEmpty(searchParameters.getAttributes()) + ? Collections.emptySet() + : searchParameters.getAttributes(); + AtlasEntityHeader entity = entityRetriever.toAtlasEntityHeader(vertex, requestedAttributes); if (searchParameters.getIncludeClassificationAttributes()) { entity.setClassifications(entityRetriever.getAllClassifications(vertex)); @@ -990,7 +994,7 @@ private AtlasSearchResult searchWithSearchContext(SearchContext searchContext) t Collection> values = new ArrayList<>(); AtlasSearchResult.AttributeSearchResult attributeSearchResult = new AtlasSearchResult.AttributeSearchResult(); - attributeSearchResult.setName(new ArrayList<>(attributes)); + attributeSearchResult.setName(attributes == null ? null : new ArrayList<>(attributes)); for (AtlasVertex vertex : resultList) { List row = new ArrayList<>(); @@ -1016,7 +1020,7 @@ private AtlasSearchResult searchWithSearchContext(SearchContext searchContext) t // By default any attribute that shows up in the search parameter should be sent back in the response // If additional values are requested then the entityAttributes will be a superset of the all search attributes // and the explicitly requested attribute(s) - Set resultAttributes = new HashSet<>(); + Set resultAttributes = new LinkedHashSet<>(); Set entityAttributes = new HashSet<>(); if (CollectionUtils.isNotEmpty(searchParameters.getAttributes())) { diff --git a/repository/src/main/java/org/apache/atlas/repository/impexp/TableReplicationRequestProcessor.java b/repository/src/main/java/org/apache/atlas/repository/impexp/TableReplicationRequestProcessor.java index 828eabb1622..7dd0ba3b379 100644 --- a/repository/src/main/java/org/apache/atlas/repository/impexp/TableReplicationRequestProcessor.java +++ b/repository/src/main/java/org/apache/atlas/repository/impexp/TableReplicationRequestProcessor.java @@ -170,7 +170,7 @@ private SearchParameters getSearchParameters(String dbName, String sourceCluster parameters.setExcludeDeletedEntities(false); parameters.setTypeName(TYPE_HIVE_TABLE); parameters.setExcludeDeletedEntities(true); - parameters.setAttributes(new HashSet<>(Collections.singleton(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM))); + parameters.setAttributes(Collections.singleton(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM)); parameters.setQuery(query); return parameters; diff --git a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java index 9a324fa2298..987440fdd13 100644 --- a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java +++ b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java @@ -45,10 +45,10 @@ import javax.inject.Inject; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -891,7 +891,7 @@ public void excludeHeaderAttributesStringAttr() throws AtlasBaseException { params.setExcludeHeaderAttributes(true); params.setEntityFilters(filterCriteria); params.setSortBy("name"); - params.setAttributes(new HashSet<>(Collections.singletonList("name"))); + params.setAttributes(Collections.singletonList("name")); params.setLimit(1); AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); @@ -903,6 +903,40 @@ public void excludeHeaderAttributesStringAttr() throws AtlasBaseException { assertSearchResult(searchResult, expected); } + @Test + public void excludeHeaderAttributesPreservesAttributeOrder() throws AtlasBaseException { + SearchParameters params = new SearchParameters(); + + params.setTypeName(HIVE_TABLE_TYPE); + params.setExcludeHeaderAttributes(true); + params.setAttributes(Arrays.asList("qualifiedName", "createTime")); + params.setLimit(25); + + AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); + + assertNotNull(searchResult.getAttributes()); + assertEquals(searchResult.getAttributes().getName(), Arrays.asList("qualifiedName", "createTime")); + assertEquals(new ArrayList<>(searchResult.getSearchParameters().getAttributes()), + Arrays.asList("qualifiedName", "createTime")); + } + + @Test + public void excludeHeaderAttributesDedupesAttributeNames() throws AtlasBaseException { + SearchParameters params = new SearchParameters(); + + params.setTypeName(HIVE_TABLE_TYPE); + params.setExcludeHeaderAttributes(true); + params.setAttributes(Arrays.asList("qualifiedName", "createTime", "qualifiedName")); + params.setLimit(25); + + AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); + + assertNotNull(searchResult.getAttributes()); + assertEquals(searchResult.getAttributes().getName(), Arrays.asList("qualifiedName", "createTime")); + assertEquals(new ArrayList<>(searchResult.getSearchParameters().getAttributes()), + Arrays.asList("qualifiedName", "createTime")); + } + @Test public void excludeHeaderAttributesRelationAttr() throws AtlasBaseException { SearchParameters.FilterCriteria filterCriteria = getSingleFilterCondition("name", Operator.EQ, "time_dim"); @@ -911,7 +945,7 @@ public void excludeHeaderAttributesRelationAttr() throws AtlasBaseException { params.setTypeName(HIVE_TABLE_TYPE); params.setExcludeHeaderAttributes(true); params.setEntityFilters(filterCriteria); - params.setAttributes(new HashSet<>(Arrays.asList("name", "db"))); + params.setAttributes(Arrays.asList("name", "db")); params.setLimit(1); AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); @@ -928,7 +962,7 @@ public void excludeHeaderAttributesSystemAttr() throws AtlasBaseException { params.setTypeName(HIVE_TABLE_TYPE); params.setExcludeHeaderAttributes(true); - params.setAttributes(new HashSet<>(Arrays.asList("name", "__state"))); + params.setAttributes(Arrays.asList("name", "__state")); params.setLimit(1); params.setEntityFilters(filterCriteria); params.setSortBy("name"); @@ -948,7 +982,7 @@ public void excludeHeaderAttributesAllEntityTypeSysAttr() throws AtlasBaseExcept params.setTypeName(HIVE_TABLE_TYPE + "," + ALL_ENTITY_TYPES); params.setExcludeHeaderAttributes(true); - params.setAttributes(new HashSet<>(Collections.singletonList("__state"))); + params.setAttributes(Collections.singletonList("__state")); params.setLimit(2); AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); @@ -966,7 +1000,7 @@ public void excludeHeaderAttributesAllEntityTypeSysAttrs() throws AtlasBaseExcep params.setTypeName(HIVE_TABLE_TYPE + "," + ALL_ENTITY_TYPES); params.setExcludeHeaderAttributes(true); - params.setAttributes(new HashSet<>(Arrays.asList("__state", "__guid"))); + params.setAttributes(Arrays.asList("__state", "__guid")); params.setLimit(2); AtlasSearchResult searchResult = discoveryService.searchWithParameters(params); @@ -979,7 +1013,7 @@ public void excludeHeaderAttributesAllEntityType() throws AtlasBaseException { params.setTypeName(HIVE_TABLE_TYPE + "," + ALL_ENTITY_TYPES); params.setExcludeHeaderAttributes(true); - params.setAttributes(new HashSet<>(Collections.singletonList("name"))); + params.setAttributes(Collections.singletonList("name")); params.setLimit(1); discoveryService.searchWithParameters(params); @@ -991,7 +1025,7 @@ public void excludeHeaderAttributesInvalidAttr() throws AtlasBaseException { params.setTypeName(HIVE_TABLE_TYPE); params.setExcludeHeaderAttributes(true); - params.setAttributes(new HashSet<>(Collections.singletonList("name1"))); + params.setAttributes(Collections.singletonList("name1")); params.setLimit(1); discoveryService.searchWithParameters(params); @@ -1382,10 +1416,10 @@ private void assertSearchResult(AtlasSearchResult searchResult, AtlasSearchResul assertNotNull(searchResult); AtlasSearchResult.AttributeSearchResult result = searchResult.getAttributes(); assertNotNull(result); - assertTrue(result.getName().containsAll(expected.getName())); + assertEquals(result.getName(), expected.getName()); int i = 0; for (List value : result.getValues()) { - assertTrue(value.containsAll(expected.getValues().get(i))); + assertEquals(value, expected.getValues().get(i)); i++; } } diff --git a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java index 874d43d6995..18acf54bcd8 100644 --- a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java +++ b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java @@ -74,7 +74,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import static org.apache.atlas.model.discovery.AtlasSearchResult.AtlasQueryType.BASIC; import static org.apache.atlas.model.discovery.AtlasSearchResult.AtlasQueryType.DSL; @@ -535,7 +534,7 @@ public AtlasSearchResult relationSearch(@QueryParam("relationshipName") String r @Timed public AtlasSearchResult searchRelatedEntities(@QueryParam("guid") String guid, @QueryParam("relation") String relation, - @QueryParam("attributes") Set attributes, + @QueryParam("attributes") List attributes, @QueryParam("sortBy") String sortByAttribute, @QueryParam("sortOrder") SortOrder sortOrder, @QueryParam("excludeDeletedEntities") boolean excludeDeletedEntities, diff --git a/webapp/src/test/java/org/apache/atlas/web/rest/DiscoveryRESTTest.java b/webapp/src/test/java/org/apache/atlas/web/rest/DiscoveryRESTTest.java index c688f31107d..5d4600e988e 100644 --- a/webapp/src/test/java/org/apache/atlas/web/rest/DiscoveryRESTTest.java +++ b/webapp/src/test/java/org/apache/atlas/web/rest/DiscoveryRESTTest.java @@ -42,10 +42,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import static org.apache.atlas.common.TestUtility.generateString; import static org.apache.atlas.model.discovery.AtlasSearchResult.AtlasQueryType.BASIC; @@ -492,7 +490,7 @@ public void testRelationSearch_DefaultDisabled_EmptyTypeName_ThrowsException() { public void testSearchRelatedEntities_Success() throws Exception { String guid = "1234-5678"; String relation = "relatedTo"; - Set attributes = new HashSet<>(Arrays.asList("name", "description")); + List attributes = Arrays.asList("name", "description"); String sortByAttribute = "name"; SortOrder sortOrder = SortOrder.ASCENDING; boolean excludeDeletedEntities = true; @@ -520,7 +518,7 @@ public void testSearchRelatedEntities_InvalidQueryLength_ThrowsException() { // Query Length exceeds the Configured Query Limit, Causes validation to Fail String guid = generateString(AtlasConfiguration.QUERY_PARAM_MAX_LENGTH.getInt() + 1, 'a'); // too long String relation = "relatedTo"; - Set attributes = new HashSet<>(Arrays.asList("name", "description")); + List attributes = Arrays.asList("name", "description"); String sortByAttribute = "name"; SortOrder sortOrder = SortOrder.ASCENDING; boolean excludeDeletedEntities = true;