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 d0dd334ca3833344ead7fbd6a24a1ef8ec2c019c..2731083d94cdca28e1343deb787db5e47f386a91 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 5e945aa5253954ba42795856a242767738f1d4f0..f31c28b663b314295389df432156b5dc1af29548 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 bfcbec649033bbe035e478ca2f2605b6ed289447..e969f8e31970a105e8ca7becf06b8831baaa5b9d 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 af9ec6bd7b5a1e2a7622c1f4998122371047f09a..91d10c5553436ac67a3846eb420861e58c334288 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;