diff --git a/provider/search-aws/src/main/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtils.java b/provider/search-aws/src/main/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtils.java index 4a73d566e4b8fad608fa8d90bb54337e99605b8d..b6924bf5804849c67a31c9431b4a35c563df9912 100644 --- a/provider/search-aws/src/main/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtils.java +++ b/provider/search-aws/src/main/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtils.java @@ -52,19 +52,21 @@ public class AwsCrossTenantUtils extends CrossTenantUtils { builder.append(alias); } else { - String index = this.elasticIndexNameResolver.getIndexNameFromKind(kind); - String[] indexArr = index.split("-"); - if (indexArr[0].equalsIgnoreCase("*")) { - indexArr[0] = dpsHeaders.getPartitionId(); + String[] kindArr = kind.split(":"); + if (kindArr[0].equalsIgnoreCase("*")) { + kindArr[0] = dpsHeaders.getPartitionId(); } - else if (indexArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) { + else if (kindArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) { throw new BadRequestException("Invalid kind in search request."); } - builder.append(String.join("-", indexArr)); + String newKind = String.join(":", kindArr); + String index = this.elasticIndexNameResolver.getIndexNameFromKind(newKind); + builder.append(index); } builder.append(","); } builder.append("-.*"); // Exclude Lucene/ElasticSearch internal indices return builder.toString(); } + } diff --git a/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java b/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java index 442cc2ed03a020fc7b4bec0f9a6d748ba3c181c9..c13c5ac15fbbb509de7a2b666ce54d761a6b7f0e 100644 --- a/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java +++ b/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java @@ -48,6 +48,19 @@ public class AwsCrossTenantUtilsTest { assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest)); } + @Test + public void should_return_IndexNameWithHyphen_when_partitionIdAndKindMatches() { + String DATA_PARTITION_ID = "tenant-1"; + String KIND = "tenant-1:*:*:*"; + String INDEX = KIND.replace(":", "-"); + String INDEX_NAME = String.format("%s,%s", INDEX, "-.*"); + when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID); + when(searchRequest.getKind()).thenReturn(KIND); + when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX); + + assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest)); + } + @Test public void should_return_alias_when_searchingHundredSameKindsAndKindMatches() { Integer KIND_COUNT = 300; @@ -88,7 +101,7 @@ public class AwsCrossTenantUtilsTest { String DATA_PARTITION_ID = "tenant1"; String KIND = "*:*:*:*"; String TENANT_KIND = "tenant1:*:*:*"; - String INDEX = KIND.replace(":", "-"); + String INDEX = TENANT_KIND.replace(":", "-"); List<String> KINDS = Collections.nCopies(KIND_COUNT, KIND); String ALIAS = String.format("a%d", TENANT_KIND.hashCode()); Map<String, String> ALIAS_MAP = new HashMap<>(); @@ -111,7 +124,7 @@ public class AwsCrossTenantUtilsTest { when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID); when(searchRequest.getKind()).thenReturn(HUNDREDS_KINDS); - when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX); + when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX); when(indexAliasService.getIndicesAliases(KINDS)).thenReturn(ALIAS_MAP); assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest)); @@ -121,11 +134,12 @@ public class AwsCrossTenantUtilsTest { public void should_return_PartitionIdIndexName_when_searchingAllKinds() { String DATA_PARTITION_ID = "tenant1"; String KIND = "*:*:*:*"; - String INDEX = KIND.replace(":", "-"); + String TENANT_KIND = "tenant1:*:*:*"; + String INDEX = TENANT_KIND.replace(":", "-"); String INDEX_NAME = String.format("%s%s,%s", DATA_PARTITION_ID, "-*-*-*", "-.*"); when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID); when(searchRequest.getKind()).thenReturn(KIND); - when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX); + when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX); assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest)); } @@ -138,7 +152,6 @@ public class AwsCrossTenantUtilsTest { String INDEX_NAME = String.format("%s,%s", INDEX, "-.*"); when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID); when(searchRequest.getKind()).thenReturn(KIND); - when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX); awsCrossTenantUtils.getIndexName(searchRequest); // Should throw an exception. }