From 335802427f7eebbe6ac5c4b0414617c34e48bb5f Mon Sep 17 00:00:00 2001
From: Rustam_Lotsmanenko <Rustam_Lotsmanenko@epam.com>
Date: Thu, 22 Apr 2021 17:16:08 +0400
Subject: [PATCH] Change hint structure

---
 .../schema/converter/PropertiesProcessor.java    | 10 +++++-----
 .../converter/config/SchemaConverterConfig.java  |  2 +-
 .../config/SchemaConverterPropertiesConfig.java  | 16 ++++++----------
 .../schema/converter/tags/TypeProperty.java      |  2 +-
 4 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/PropertiesProcessor.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/PropertiesProcessor.java
index d0dd334ca..2731083d9 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/PropertiesProcessor.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/PropertiesProcessor.java
@@ -40,6 +40,7 @@ public class PropertiesProcessor {
     private JaxRsDpsLog log;
     private SchemaConverterConfig schemaConverterConfig;
 
+    private static final String TYPE_KEY = "type";
     private static final String DEF_PREFIX = "#/definitions/";
     private static final String LINK_PREFIX = "^srn";
     private static final String LINK_TYPE = "link";
@@ -174,7 +175,10 @@ public class PropertiesProcessor {
             Items items = entry.getValue().getItems();
 
             if(Objects.nonNull(items.getProperties()) && !items.getProperties().isEmpty()){
-                String indexingType = getFromIndexingType(entry.getValue().getIndexingType());
+                Map<String, String> type = entry.getValue().getIndexingType();
+                String indexingType = Objects.isNull(type) ?
+                    schemaConverterConfig.getDefaultObjectArraysType() :
+                    type.getOrDefault(TYPE_KEY,schemaConverterConfig.getDefaultObjectArraysType());
                 /*Schema item inner properties will be processed if they are present & indexingType in schema configured for processing
                 result ex:
                     {
@@ -331,8 +335,4 @@ public class PropertiesProcessor {
         };
     }
 
-    private String getFromIndexingType(String indexingType) {
-        return schemaConverterConfig.getArraysTypesMap().getOrDefault(indexingType, "[]object");
-    }
-
 }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterConfig.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterConfig.java
index 5e945aa52..f31c28b66 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterConfig.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterConfig.java
@@ -11,6 +11,6 @@ public interface SchemaConverterConfig {
     Set<String> getSupportedArrayTypes();
     Map<String, String> getSpecialDefinitionsMap();
     Map<String, String> getPrimitiveTypesMap();
-    Map<String, String> getArraysTypesMap();
     Set<String> getProcessedArraysTypes();
+    String getDefaultObjectArraysType();
 }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterPropertiesConfig.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterPropertiesConfig.java
index bfcbec649..e969f8e31 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterPropertiesConfig.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/config/SchemaConverterPropertiesConfig.java
@@ -20,14 +20,13 @@ public class SchemaConverterPropertiesConfig implements SchemaConverterConfig {
     private Set<String> supportedArrayTypes = getDefaultSupportedArrayTypes();
     private Map<String, String> specialDefinitionsMap = getDefaultSpecialDefinitionsMap();
     private Map<String, String> primitiveTypesMap = getDefaultPrimitiveTypesMap();
-    private Map<String, String> arraysTypesMap = getDefaultArraysTypesMap();
     private Set<String> processedArraysTypes = getDefaultArraysTypesForProcessing();
-
+    private String defaultObjectArraysType = getObjectArraysDefaultType();
 
 
     private Set<String> getDefaultSkippedDefinitions() {
         return new HashSet<>(Arrays.asList("AbstractAnyCrsFeatureCollection",
-                "anyCrsGeoJsonFeatureCollection"));
+            "anyCrsGeoJsonFeatureCollection"));
     }
 
     private Set<String> getDefaultSupportedArrayTypes() {
@@ -59,14 +58,11 @@ public class SchemaConverterPropertiesConfig implements SchemaConverterConfig {
         return defaultPrimitiveTypesMap;
     }
 
-    private Map<String, String> getDefaultArraysTypesMap() {
-        Map<String, String> defaultArrayTypesMap = new HashMap<>();
-        defaultArrayTypesMap.put("x-type-flattened","flattened");
-        defaultArrayTypesMap.put("x-type-nested","nested");
-        return defaultArrayTypesMap;
+    private Set<String> getDefaultArraysTypesForProcessing() {
+        return new HashSet<>(Arrays.asList("nested"));
     }
 
-    private Set<String> getDefaultArraysTypesForProcessing(){
-        return new HashSet<>(Arrays.asList("nested"));
+    private String getObjectArraysDefaultType() {
+        return "[]object";
     }
 }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/tags/TypeProperty.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/tags/TypeProperty.java
index af9ec6bd7..91d10c555 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/tags/TypeProperty.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/schema/converter/tags/TypeProperty.java
@@ -22,7 +22,7 @@ import lombok.Data;
 @Data
 public class TypeProperty {
     @JsonProperty("x-osdu-indexing")
-    private String indexingType;
+    private Map<String, String> indexingType;
     private String type;
     private String pattern;
     private String format;
-- 
GitLab