From 9bd0ef156586ce6471c104401a718f0581b450b7 Mon Sep 17 00:00:00 2001
From: NThakur4 <nthakur4@slb.com>
Date: Tue, 12 Apr 2022 23:50:51 -0500
Subject: [PATCH] fix sync schema use-case

---
 .../osdu/indexer/service/IMappingService.java       |  2 +-
 .../indexer/service/IndexerMappingServiceImpl.java  | 13 +++++++++++--
 .../osdu/indexer/service/IndexerServiceImpl.java    |  2 +-
 .../indexer/service/IndexerMappingServiceTest.java  |  6 +++---
 .../osdu/indexer/service/IndexerServiceImpl.java    |  2 +-
 5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java
index 689e7a654..8c89e4e64 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java
@@ -33,5 +33,5 @@ public interface IMappingService {
 
     void updateIndexMappingForIndicesOfSameType(Set<String> indices, String fieldName) throws Exception;
 
-    void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index) throws Exception;
+    void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index, String kind) throws Exception;
 }
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
index 12d57603d..9717aa185 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
@@ -173,7 +173,7 @@ public class IndexerMappingServiceImpl extends MappingServiceImpl implements IMa
     }
 
     @Override
-    public void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index) throws Exception {
+    public void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index, String kind) throws Exception {
         final String cacheKey = String.format("metaAttributeMappingSynced-%s", index);
 
         try {
@@ -206,8 +206,17 @@ public class IndexerMappingServiceImpl extends MappingServiceImpl implements IMa
         }
 
         Map<String, Object> properties = new HashMap<>();
+        String[] parts = kind.split(":");
+        String authority = parts[0];
+        String source = parts[1];
         for (String attribute : missing) {
-            properties.put(attribute, TypeMapper.getMetaAttributeIndexerMapping(attribute));
+            if (attribute == RecordMetaAttribute.AUTHORITY.getValue()) {
+                properties.put(attribute, TypeMapper.getConstantIndexerType(RecordMetaAttribute.AUTHORITY, authority));
+            } else if (attribute == RecordMetaAttribute.SOURCE.getValue()) {
+                properties.put(attribute, TypeMapper.getConstantIndexerType(RecordMetaAttribute.SOURCE, source));
+            } else {
+                properties.put(attribute, TypeMapper.getMetaAttributeIndexerMapping(attribute));
+            }
         }
 
         Map<String, Object> documentMapping = new HashMap<>();
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
index 124dc0ebd..3f659080c 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
@@ -367,7 +367,7 @@ public class IndexerServiceImpl implements IndexerService {
 
             // check if index exist and sync meta attribute schema if required
             if (this.indicesService.isIndexReady(restClient, index)) {
-                this.mappingService.syncIndexMappingIfRequired(restClient, index);
+                this.mappingService.syncIndexMappingIfRequired(restClient, index, schema.getKind());
                 continue;
             }
 
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
index 61d04490a..0d959f1eb 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
@@ -178,7 +178,7 @@ public class IndexerMappingServiceTest {
         final String cacheKey = String.format("metaAttributeMappingSynced-%s", index);
         when(this.indexCache.get(cacheKey)).thenReturn(true);
 
-        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index);
+        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind);
 
         verifyNoMoreInteractions(this.mappingService);
     }
@@ -189,7 +189,7 @@ public class IndexerMappingServiceTest {
         final String mapping = "{\"dynamic\":\"false\",\"properties\":{\"acl\":{\"properties\":{\"owners\":{\"type\":\"keyword\"},\"viewers\":{\"type\":\"keyword\"}}},\"ancestry\":{\"properties\":{\"parents\":{\"type\":\"keyword\"}}},\"authority\":{\"type\":\"constant_keyword\",\"value\":\"opendes\"},\"createTime\":{\"type\":\"date\"},\"createUser\":{\"type\":\"keyword\"},\"data\":{\"properties\":{\"message\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"null_value\":\"null\",\"ignore_above\":256}}}}},\"id\":{\"type\":\"keyword\"},\"index\":{\"properties\":{\"lastUpdateTime\":{\"type\":\"date\"},\"statusCode\":{\"type\":\"integer\"},\"trace\":{\"type\":\"text\"}}},\"kind\":{\"type\":\"keyword\"},\"legal\":{\"properties\":{\"legaltags\":{\"type\":\"keyword\"},\"otherRelevantDataCountries\":{\"type\":\"keyword\"},\"status\":{\"type\":\"keyword\"}}},\"modifyTime\":{\"type\":\"date\"},\"modifyUser\":{\"type\":\"keyword\"},\"namespace\":{\"type\":\"keyword\"},\"source\":{\"type\":\"constant_keyword\",\"value\":\"test\"},\"tags\":{\"type\":\"flattened\"},\"type\":{\"type\":\"keyword\"},\"version\":{\"type\":\"long\"},\"x-acl\":{\"type\":\"keyword\"}}}";
         when(this.mappingService.getIndexMapping(restHighLevelClient, index)).thenReturn(mapping);
 
-        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index);
+        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind);
 
         verify(this.indexCache, times(1)).get(cacheKey);
         verify(this.indexCache, times(1)).put(cacheKey, true);
@@ -205,7 +205,7 @@ public class IndexerMappingServiceTest {
         doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
         doReturn(mappingResponse).when(this.indicesClient).putMapping(any(PutMappingRequest.class), any(RequestOptions.class));
 
-        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index);
+        this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind);
 
         verify(this.indexCache, times(1)).get(cacheKey);
         verify(this.indexCache, times(1)).put(cacheKey, true);
diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
index 81da502c6..d6d79ac87 100644
--- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
+++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
@@ -425,7 +425,7 @@ public class IndexerServiceImpl implements IndexerService {
 
       // check if index exist and sync meta attribute schema if required
       if (this.indicesService.isIndexExist(restClient, index)) {
-        this.mappingService.syncIndexMappingIfRequired(restClient, index);
+        this.mappingService.syncIndexMappingIfRequired(restClient, index, schema.getKind());
         continue;
       }
 
-- 
GitLab