From d62083bc96cd3f7c015c09d492b17385a81df9d1 Mon Sep 17 00:00:00 2001
From: Jagan Gottimukkula <jgottimukkula@slb.com>
Date: Sat, 14 Sep 2019 07:16:27 -0700
Subject: [PATCH] * Fixed the package name in azure * Fixed the schema file
 dependency from core * Updated the spring boot applications for gcp and azure

---
 indexer-service-azure/pom.xml                 |  2 +-
 .../azure}/IndexerAzureApplication.java       |  4 ++
 .../di/EntitlementsClientFactory.java         |  2 +-
 .../di/EntitlementsFactoryAzure.java          |  2 +-
 .../di/EntitlementsServiceAzure.java          |  2 +-
 .../{util => }/di/TenantFactoryImpl.java      |  2 +-
 .../azure/{util => }/kms/KmsClientImpl.java   |  2 +-
 .../azure/model/ISchemaRepository.java        | 30 ++++++++++++
 .../opendes/indexer/azure/model/Schema.java   | 46 +++++++++++++++++++
 .../indexer/azure/model/SchemaItem.java       | 41 +++++++++++++++++
 .../ElasticRepositoryCosmosDB.java            |  2 +-
 .../persistence/SchemaRepositoryImpl.java     |  8 ++--
 .../util/{util => }/RequestInfoImpl.java      |  2 +-
 .../ServiceAccountJwtClientImpl.java          |  2 +-
 indexer-service-gcp/pom.xml                   |  2 +-
 .../indexer/gcp}/IndexerGcpApplication.java   |  4 +-
 .../java/org/opendes/indexer/SwaggerDoc.java  |  4 ++
 17 files changed, 142 insertions(+), 15 deletions(-)
 rename indexer-service-azure/src/main/java/{ => org/opendes/indexer/azure}/IndexerAzureApplication.java (88%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/di/EntitlementsClientFactory.java (93%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/di/EntitlementsFactoryAzure.java (89%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/di/EntitlementsServiceAzure.java (98%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/di/TenantFactoryImpl.java (96%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/kms/KmsClientImpl.java (89%)
 create mode 100644 indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java
 create mode 100644 indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java
 create mode 100644 indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/persistence/ElasticRepositoryCosmosDB.java (86%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/{util => }/persistence/SchemaRepositoryImpl.java (89%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/{util => }/RequestInfoImpl.java (98%)
 rename indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/{util => }/ServiceAccountJwtClientImpl.java (86%)
 rename indexer-service-gcp/src/main/java/{ => org/opendes/indexer/gcp}/IndexerGcpApplication.java (89%)

diff --git a/indexer-service-azure/pom.xml b/indexer-service-azure/pom.xml
index 53660ea24..438bda1b1 100644
--- a/indexer-service-azure/pom.xml
+++ b/indexer-service-azure/pom.xml
@@ -63,7 +63,7 @@
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>
-                                org.opendes.indexer.IndexerAzureApplication
+                                org.opendes.indexer.azure.IndexerAzureApplication
                             </mainClass>
                         </configuration>
                     </execution>
diff --git a/indexer-service-azure/src/main/java/IndexerAzureApplication.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
similarity index 88%
rename from indexer-service-azure/src/main/java/IndexerAzureApplication.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
index 4e2e80363..0662e463f 100644
--- a/indexer-service-azure/src/main/java/IndexerAzureApplication.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
@@ -1,9 +1,13 @@
+package org.opendes.indexer.azure;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
 public class IndexerAzureApplication {
+
     public static void main(String[] args) {
         SpringApplication.run(IndexerAzureApplication.class, args);
     }
+
 }
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
similarity index 93%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
index 9a3557626..fea892cb0 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.api.entitlements.IEntitlementsFactory;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
index ee5fd8280..b4dc544df 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.api.DpsHeaders;
 import org.opendes.client.api.entitlements.IEntitlementsFactory;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
similarity index 98%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
index eb20161ad..d805136b9 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import com.microsoft.azure.spring.autoconfigure.aad.UserPrincipal;
 import org.apache.http.HttpStatus;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
similarity index 96%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
index 6ecf8c008..ef4233b70 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.cache.ICache;
 import org.opendes.client.multitenancy.ITenantFactory;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
index 1743a82c7..8e1b169e6 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.kms;
+package org.opendes.indexer.azure.kms;
 
 import org.opendes.core.kms.IKmsClient;
 
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java
new file mode 100644
index 000000000..5f2d7dd97
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java
@@ -0,0 +1,30 @@
+
+
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opendes.indexer.azure.model;
+
+public interface ISchemaRepository {
+    String SCHEMA_KIND = "IndexerSchema";
+
+    String SCHEMA = "schema";
+    String USER = "user";
+    String EXTENSION = "extension";
+
+    void add(Schema schema, String user);
+
+    Schema get(String kind);
+}
+
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java
new file mode 100644
index 000000000..14b1cf950
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java
@@ -0,0 +1,46 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opendes.indexer.azure.model;
+
+        import java.util.Map;
+
+        import javax.validation.Valid;
+        import javax.validation.constraints.NotNull;
+
+        import lombok.AllArgsConstructor;
+        import lombok.Data;
+        import lombok.NoArgsConstructor;
+
+        import io.swagger.annotations.ApiModelProperty;
+        import org.opendes.indexer.SwaggerDoc;
+        import org.opendes.core.validation.ValidKind;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Schema {
+
+    @ValidKind
+    @NotNull
+    @ApiModelProperty(value = SwaggerDoc.SCHEMA_REQUEST_KIND,
+            required = true,
+            example = SwaggerDoc.RECORD_KIND_EXAMPLE)
+    private String kind;
+
+    @Valid
+    private SchemaItem[] schema;
+
+    private Map<String, Object> ext;
+}
\ No newline at end of file
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java
new file mode 100644
index 000000000..d4fe01a15
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java
@@ -0,0 +1,41 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opendes.indexer.azure.model;
+
+import java.util.Map;
+
+import javax.validation.constraints.NotEmpty;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SchemaItem {
+
+    @NotEmpty
+    private String path;
+
+    @NotEmpty
+    private String kind;
+
+    @JsonInclude(value = Include.NON_NULL)
+    private Map<String, Object> ext;
+}
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
similarity index 86%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
index e1b79ca8b..b5796c629 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.persistence;
+package org.opendes.indexer.azure.persistence;
 
 import org.opendes.client.multitenancy.TenantInfo;
 import org.opendes.core.model.ClusterSettings;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
index 7a3e79537..a0a6445e6 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.persistence;
+package org.opendes.indexer.azure.persistence;
 
 import com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document;
 import com.microsoft.azure.spring.data.cosmosdb.core.mapping.PartitionKey;
@@ -6,9 +6,9 @@ import com.microsoft.azure.spring.data.cosmosdb.repository.DocumentDbRepository;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.opendes.core.model.Schema;
-import org.opendes.core.model.SchemaItem;
-import org.opendes.core.service.ISchemaRepository;
+import org.opendes.indexer.azure.model.Schema;
+import org.opendes.indexer.azure.model.SchemaItem;
+import org.opendes.indexer.azure.model.ISchemaRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.annotation.Id;
 import org.springframework.stereotype.Repository;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
similarity index 98%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
index c70f59b52..a1210a823 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.util;
+package org.opendes.indexer.azure.util;
 
 import com.google.common.base.Strings;
 import org.apache.http.HttpStatus;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
similarity index 86%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
index 440b05b58..609a57255 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.util;
+package org.opendes.indexer.azure.util;
 
 import org.opendes.core.util.IServiceAccountJwtClient;
 import org.springframework.stereotype.Component;
diff --git a/indexer-service-gcp/pom.xml b/indexer-service-gcp/pom.xml
index 1ac5b18cf..87f79f80e 100644
--- a/indexer-service-gcp/pom.xml
+++ b/indexer-service-gcp/pom.xml
@@ -121,7 +121,7 @@
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>
-                                org.opendes.indexer.IndexerGcpApplication
+                                org.opendes.indexer.gcp.IndexerGcpApplication
                             </mainClass>
                         </configuration>
                     </execution>
diff --git a/indexer-service-gcp/src/main/java/IndexerGcpApplication.java b/indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
similarity index 89%
rename from indexer-service-gcp/src/main/java/IndexerGcpApplication.java
rename to indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
index 5ad552ea7..402e5c8a2 100644
--- a/indexer-service-gcp/src/main/java/IndexerGcpApplication.java
+++ b/indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
@@ -1,3 +1,5 @@
+package org.opendes.indexer.gcp;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@@ -8,4 +10,4 @@ public class IndexerGcpApplication {
         SpringApplication.run(IndexerGcpApplication.class, args);
     }
 
-}
\ No newline at end of file
+}
diff --git a/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java b/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
index d0c9a387a..4894e1df5 100644
--- a/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
+++ b/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
@@ -145,4 +145,8 @@ public final class SwaggerDoc {
 
     // REQUEST VALIDATION
     public static final String REQUEST_VALIDATION_NOT_NULL_BODY = "Request body can not be null";
+
+    // Azure Schema Request
+    public static final String SCHEMA_REQUEST_KIND = "Record kind for which the schema information is applied to.";
+    public static final String RECORD_KIND_EXAMPLE = "common:welldb:wellbore:1.0.0";
 }
-- 
GitLab