From 16c934e0ef54835fb7ec73b98ebe781525d46e30 Mon Sep 17 00:00:00 2001
From: "Dmitriy Rudko (EPAM)" <dmitriy_rudko@epam.com>
Date: Tue, 16 Mar 2021 14:57:51 +0000
Subject: [PATCH] Merge branch 'hotfix/#16-array-of-objects' into 'master'

#16 - Fix indexing ' array of object' for all CSPs

See merge request osdu/platform/system/indexer-service!123

(cherry picked from commit feb78aa0d2287cd99405390c62a40592bd94053e)

2a533b3f #16 - Fix indexing ' array of object' for all CSPs
e0e84f13 #16 - Fix unit tests for SchemaToStorageFormatImplTest
5824b1ae Merge branch 'master' into hotfix/#16-array-of-objects
ae7f09d5 resolve unwanted cloud tasks retry by fixing exception handler
---
 .../SchemaConverterPropertiesConfig.java      |  2 +-
 .../Generated/file/File.1.0.0.json.res        |  4 +++
 .../master-data/Agreement.1.0.0.json.res      |  8 ++++++
 .../WellLog.1.0.0.json.res                    |  4 +++
 .../work-product/WorkProduct.1.0.0.json.res   |  4 +++
 .../indexer/util/AppExceptionHandler.java     | 28 +++++++++++++++++--
 .../src/main/resources/application.properties |  2 --
 7 files changed, 47 insertions(+), 5 deletions(-)

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 f530c842b..163664f5f 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
@@ -24,7 +24,7 @@ public class SchemaConverterPropertiesConfig implements SchemaConverterConfig {
     }
 
     private Set<String> getDefaultSupportedArrayTypes() {
-        return new HashSet<>(Arrays.asList("boolean", "integer", "number", "string"));
+        return new HashSet<>(Arrays.asList("boolean", "integer", "number", "string", "object"));
     }
 
     private Map<String, String> getDefaultSpecialDefinitionsMap() {
diff --git a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/file/File.1.0.0.json.res b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/file/File.1.0.0.json.res
index b0f71fc6f..d0cc00a8d 100644
--- a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/file/File.1.0.0.json.res
+++ b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/file/File.1.0.0.json.res
@@ -40,6 +40,10 @@
     {
       "kind": "string",
       "path": "Checksum"
+    },
+    {
+      "kind": "[]object",
+      "path": "VectorHeaderMapping"
     }
   ]
 }
\ No newline at end of file
diff --git a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/master-data/Agreement.1.0.0.json.res b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/master-data/Agreement.1.0.0.json.res
index 136ed0b7e..8728c3bc5 100644
--- a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/master-data/Agreement.1.0.0.json.res
+++ b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/master-data/Agreement.1.0.0.json.res
@@ -32,6 +32,14 @@
     {
       "kind": "[]link",
       "path": "Counterparties"
+    },
+    {
+      "kind": "[]object",
+      "path": "Terms"
+    },
+    {
+      "kind": "[]object",
+      "path": "RestrictedResources"
     }
   ]
 }
\ No newline at end of file
diff --git a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product-component/WellLog.1.0.0.json.res b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product-component/WellLog.1.0.0.json.res
index 517ca0395..359986f47 100644
--- a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product-component/WellLog.1.0.0.json.res
+++ b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product-component/WellLog.1.0.0.json.res
@@ -76,6 +76,10 @@
     {
       "kind": "string",
       "path": "VerticalMeasurementID"
+    },
+    {
+      "kind": "[]object",
+      "path": "Curves"
     }
   ]
 }
\ No newline at end of file
diff --git a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product/WorkProduct.1.0.0.json.res b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product/WorkProduct.1.0.0.json.res
index 0b807093b..5852817c8 100644
--- a/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product/WorkProduct.1.0.0.json.res
+++ b/indexer-core/src/test/resources/converter/R3-json-schema/Generated/work-product/WorkProduct.1.0.0.json.res
@@ -44,6 +44,10 @@
     {
       "kind": "[]string",
       "path": "Annotations"
+    },
+    {
+       "kind": "[]object",
+       "path": "LineageAssertions"
     }
   ]
 }
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/AppExceptionHandler.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/AppExceptionHandler.java
index 0e8293b1a..ebfe87ef0 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/AppExceptionHandler.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/AppExceptionHandler.java
@@ -23,12 +23,36 @@ public class AppExceptionHandler {
 			? e.getOriginalException().getMessage()
 			: e.getError().getMessage();
 
-		if (e.getError().getCode() > 499) {
+		Integer errorCode = e.getError().getCode();
+
+		if (errorCode > 499) {
 			log.error(exceptionMsg, e.getOriginalException());
 		} else {
 			log.warn(exceptionMsg, e.getOriginalException());
 		}
 
-		return new ResponseEntity<>(e.getError(), HttpStatus.resolve(e.getError().getCode()));
+		HttpStatus status = Objects.nonNull(HttpStatus.resolve(errorCode))
+			? HttpStatus.resolve(errorCode)
+			: resolveNotSupportedStatus(errorCode);
+
+		return new ResponseEntity<>(e.getError(), status);
+	}
+
+	//Currently not all codes provided from core can be resolved by HttpStatus
+	//example org.opengroup.osdu.core.common.model.http.RequestStatus have not supported by HttpStatus codes
+	private HttpStatus resolveNotSupportedStatus(int statusCode) {
+		if (statusCode > 99 && statusCode < 200) {
+			return HttpStatus.CONTINUE;
+		}
+		if (statusCode > 199 && statusCode < 300) {
+			return HttpStatus.NO_CONTENT;
+		}
+		if (statusCode > 299 && statusCode < 400) {
+			return HttpStatus.MULTIPLE_CHOICES;
+		}
+		if (statusCode > 399 && statusCode < 500) {
+			return HttpStatus.BAD_REQUEST;
+		}
+		return HttpStatus.INTERNAL_SERVER_ERROR;
 	}
 }
diff --git a/provider/indexer-gcp/src/main/resources/application.properties b/provider/indexer-gcp/src/main/resources/application.properties
index 08ee586c3..2213e4dca 100644
--- a/provider/indexer-gcp/src/main/resources/application.properties
+++ b/provider/indexer-gcp/src/main/resources/application.properties
@@ -42,5 +42,3 @@ security.https.certificate.trust=false
 indexer.que.service.mail=default@iam.gserviceaccount.com
 SCHEMA_HOST=${HOST}/api/schema-service/v1/schema
 storage-query-kinds-host=https://${STORAGE_HOSTNAME}/api/storage/v2/query/kinds
-
-schema.converter.supported-array-types=boolean,integer,number,string,object
-- 
GitLab