You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by is...@apache.org on 2021/06/01 17:58:51 UTC
[airavata-data-lake] 08/46: gRCP saving path
This is an automated email from the ASF dual-hosted git repository.
isjarana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-data-lake.git
commit 0bac93c24100bee2b24c2ba4d4a75c28b32e23ed
Author: Isuru Ranawaka <ir...@gmail.com>
AuthorDate: Wed Mar 17 14:47:29 2021 -0400
gRCP saving path
---
airavata-data-lake.ipr | 4 +-
metadata-service/db-service/client/client.iml | 109 +++
.../client/db-service-client.iml} | 4 +-
metadata-service/db-service/client/pom.xml | 28 +
.../metadata/clients/MetadataServiceClient.java | 35 +
.../clients/MetadataServiceClientBuilder.java | 12 +
.../airavata/datalake/metadata/clients/Test.java | 78 ++
metadata-service/db-service/db-service.iml | 10 +-
metadata-service/db-service/pom.xml | 37 +-
.../db-service-server.iml} | 66 +-
metadata-service/db-service/server/pom.xml | 69 ++
metadata-service/db-service/server/server.iml | 109 +++
.../airavata/datalake/metadata/AppConfig.java | 149 ++++
.../metadata}/Neo4JServiceInitializer.java | 2 +-
.../datalake/metadata}/XmlConfiguration.java | 2 +-
.../datalake/metadata/backend/Connector.java | 10 +
.../datalake/metadata}/backend/Person.java | 6 +-
.../metadata}/backend/neo4j/Neo4JConnector.java | 8 +-
.../neo4j/curd/operators/GenericService.java | 90 +++
.../backend/neo4j/curd/operators/GroupService.java | 4 +
.../neo4j/curd/operators/GroupServiceImpl.java | 16 +
.../neo4j/curd/operators/ResourceService.java | 4 +
.../neo4j/curd/operators/ResourceServiceImpl.java | 16 +
.../neo4j/curd/operators/SearchOperator.java | 2 +-
.../backend/neo4j/curd/operators/Service.java | 7 +-
.../neo4j/curd/operators/TenantService.java | 4 +
.../neo4j/curd/operators/TenantServiceImpl.java | 15 +
.../backend/neo4j/curd/operators/UserService.java | 4 +
.../neo4j/curd/operators/UserServiceImpl.java | 16 +
.../backend/neo4j/model/nodes/Entity.java | 4 +-
.../metadata}/backend/neo4j/model/nodes/Group.java | 16 +-
.../backend/neo4j/model/nodes/Resource.java | 14 +-
.../metadata}/backend/neo4j/model/nodes/Role.java | 4 +-
.../backend/neo4j/model/nodes/ServiceAccount.java | 4 +-
.../backend/neo4j/model/nodes/Tenant.java | 8 +-
.../metadata}/backend/neo4j/model/nodes/User.java | 22 +-
.../backend/neo4j/model/relationships/Belongs.java | 2 +-
.../neo4j/model/relationships/ConfiguredWith.java | 2 +-
.../backend/neo4j/model/relationships/Has.java | 2 +-
.../neo4j/model/relationships/HasAccess.java | 2 +-
.../neo4j/model/relationships/HasChildGroup.java | 2 +-
.../model/relationships/HasChildResource.java | 2 +-
.../neo4j/model/relationships/HasChildUser.java | 2 +-
.../neo4j/model/relationships/HasParentGroup.java | 2 +-
.../model/relationships/HasParentResource.java | 2 +-
.../backend/neo4j/model/relationships/HasRole.java | 2 +-
.../neo4j/model/relationships/MemberOf.java | 2 +-
.../neo4j/model/relationships/Relationship.java | 4 +-
.../neo4j/model/relationships/SharedWith.java | 2 +-
.../metadata}/exceptions/DBConnectorException.java | 2 +-
.../metadata/handlers/GroupServiceHandler.java | 38 +
.../metadata/handlers/ResourceServiceHandler.java | 38 +
.../metadata/handlers/TenantServiceHandler.java | 83 +++
.../metadata/handlers/UserServiceHandler.java | 29 +
.../datalake/metadata/parsers/GroupParser.java | 68 ++
.../datalake/metadata/parsers/ResourceParser.java | 77 ++
.../datalake/metadata/parsers/TenantParser.java | 79 +++
.../datalake/metadata/parsers/UserParser.java | 22 +
.../src/main/resources/application.properties | 6 +-
.../src/main/resources/applicationContext.xml | 2 +-
.../datalake/metadata/db/service/AppConfig.java | 108 ---
.../metadata/db/service/backend/Connector.java | 10 -
.../neo4j/curd/operators/GenericService.java | 79 ---
.../backend/neo4j/curd/operators/GroupService.java | 4 -
.../neo4j/curd/operators/ResourceService.java | 4 -
.../backend/neo4j/curd/operators/UserService.java | 4 -
.../db-service/stub/db-service-stub.iml | 84 +++
metadata-service/db-service/stub/pom.xml | 57 ++
.../stub/src/main/proto/common/Common.proto | 12 +
.../stub/src/main/proto/group/Group.proto | 88 +++
.../stub/src/main/proto/resource/Resource.proto | 97 +++
.../stub/src/main/proto/tenant/Tenant.proto | 67 ++
.../db-service/stub/src/main/proto/user/User.proto | 66 ++
metadata-service/db-service/stub/stub.iml | 111 +++
metadata-service/metadata-service.iml | 790 +++++++++++++++++++++
metadata-service/pom.xml | 157 ++--
pom.xml | 3 +
77 files changed, 2767 insertions(+), 434 deletions(-)
diff --git a/airavata-data-lake.ipr b/airavata-data-lake.ipr
index 3bec1ac..d5244b1 100644
--- a/airavata-data-lake.ipr
+++ b/airavata-data-lake.ipr
@@ -102,8 +102,10 @@ under the License.
<module filepath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/data-orchestrator-api.iml"/>
<module filepath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-core/data-orchestrator-core.iml"/>
<module filepath="$PROJECT_DIR$/data-orchestrator/data-orchestrator.iml"/>
- <module filepath="$PROJECT_DIR$/metadata-service/neo4j-service/neo4j-service.iml"/>
<module filepath="$PROJECT_DIR$/metadata-service/metadata-service.iml"/>
+ <module filepath="$PROJECT_DIR$/metadata-service/db-service/server/server.iml"/>
+ <module filepath="$PROJECT_DIR$/metadata-service/db-service/stub/stub.iml"/>
+ <module filepath="$PROJECT_DIR$/metadata-service/db-service/client/client.iml"/>
</modules>
</component>
<UsedPathMacros>
diff --git a/metadata-service/db-service/client/client.iml b/metadata-service/db-service/client/client.iml
new file mode 100644
index 0000000..64181aa
--- /dev/null
+++ b/metadata-service/db-service/client/client.iml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <webroots />
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/java" />
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module" module-name="stub" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-core:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-api:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
+ <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.86" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-bolt-driver:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j.driver:neo4j-java-driver:4.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/metadata-service/metadata-service.iml b/metadata-service/db-service/client/db-service-client.iml
similarity index 71%
copy from metadata-service/metadata-service.iml
copy to metadata-service/db-service/client/db-service-client.iml
index 5fa3710..3d5413d 100644
--- a/metadata-service/metadata-service.iml
+++ b/metadata-service/db-service/client/db-service-client.iml
@@ -4,7 +4,9 @@
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
diff --git a/metadata-service/db-service/client/pom.xml b/metadata-service/db-service/client/pom.xml
new file mode 100644
index 0000000..f2d89d3
--- /dev/null
+++ b/metadata-service/db-service/client/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>metadata-service</artifactId>
+ <groupId>org.apache.airavata.data.lake</groupId>
+ <version>0.01-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>client</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.airavata.data.lake</groupId>
+ <artifactId>stub</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClient.java b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClient.java
new file mode 100644
index 0000000..423befb
--- /dev/null
+++ b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClient.java
@@ -0,0 +1,35 @@
+package org.apache.airavata.datalake.metadata.clients;
+
+import io.grpc.ManagedChannel;
+import org.apache.airavata.datalake.metadata.service.GroupMetadataServiceGrpc;
+import org.apache.airavata.datalake.metadata.service.ResourceMetadataServiceGrpc;
+import org.apache.airavata.datalake.metadata.service.TenantMetadataServiceGrpc;
+import org.apache.airavata.datalake.metadata.service.UserMetadataServiceGrpc;
+
+public class MetadataServiceClient {
+
+ private ManagedChannel channel;
+
+ MetadataServiceClient(ManagedChannel channel) {
+ this.channel = channel;
+ }
+
+
+ public TenantMetadataServiceGrpc.TenantMetadataServiceBlockingStub tenant() {
+ return TenantMetadataServiceGrpc.newBlockingStub(channel);
+ }
+
+ public GroupMetadataServiceGrpc.GroupMetadataServiceBlockingStub group() {
+ return GroupMetadataServiceGrpc.newBlockingStub(channel);
+ }
+
+ public UserMetadataServiceGrpc.UserMetadataServiceBlockingStub user() {
+ return UserMetadataServiceGrpc.newBlockingStub(channel);
+ }
+
+ public ResourceMetadataServiceGrpc.ResourceMetadataServiceBlockingStub resource() {
+ return ResourceMetadataServiceGrpc.newBlockingStub(channel);
+ }
+
+
+}
diff --git a/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClientBuilder.java b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClientBuilder.java
new file mode 100644
index 0000000..8dd01bc
--- /dev/null
+++ b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/MetadataServiceClientBuilder.java
@@ -0,0 +1,12 @@
+package org.apache.airavata.datalake.metadata.clients;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+
+public class MetadataServiceClientBuilder {
+
+ public static MetadataServiceClient buildClient(String hostName, int port) {
+ ManagedChannel channel = ManagedChannelBuilder.forAddress(hostName, port).usePlaintext().build();
+ return new MetadataServiceClient(channel);
+ }
+}
diff --git a/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/Test.java b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/Test.java
new file mode 100644
index 0000000..dd8b392
--- /dev/null
+++ b/metadata-service/db-service/client/src/main/java/org/apache/airavata/datalake/metadata/clients/Test.java
@@ -0,0 +1,78 @@
+package org.apache.airavata.datalake.metadata.clients;
+
+import org.apache.airavata.datalake.metadata.service.*;
+
+public class Test {
+ public static void main(String[] args) {
+
+ MetadataServiceClient serviceClient = MetadataServiceClientBuilder.buildClient("localhost", 9090);
+
+ TenantMetadataServiceGrpc.TenantMetadataServiceBlockingStub stub = serviceClient.tenant();
+
+ Tenant tenant = Tenant.newBuilder()
+ .setTenantId("asdcfvf")
+ .setName("TenantA")
+ .build();
+ Group group = Group.newBuilder()
+ .setName("g1")
+ .build();
+ Group group2 = Group.newBuilder()
+ .setName("g3")
+ .build();
+ Group group1 = Group.newBuilder()
+ .setName("g2")
+ .addChildGroups(group2)
+ .build();
+
+ User user = User.newBuilder()
+ .setUsername("TestingUserA")
+ .setFirstName("Isuru")
+ .setLastName("Ranawaka")
+ .build();
+
+ GroupMembership groupMemberships = GroupMembership
+ .newBuilder()
+ .setUser(user)
+ .setMembershipType("ADMIN")
+ .build();
+
+ group1 = group1.toBuilder()
+ .addGroupMembership(groupMemberships)
+ .build();
+ group = group.toBuilder()
+ .addChildGroups(group1)
+ .build();
+
+ Resource resource = Resource.newBuilder()
+ .setName("R1")
+ .build();
+ Resource resource1 = Resource.newBuilder()
+ .setName("R2")
+ .build();
+ Resource resource2 = Resource.newBuilder()
+ .setName("R3")
+ .build();
+
+ resource1 = resource1.toBuilder()
+ .addChildResources(resource2)
+ .build();
+ resource = resource.toBuilder()
+ .addChildResources(resource1)
+ .build();
+
+ tenant = tenant.toBuilder()
+ .addGroups(group)
+ .build();
+ tenant = tenant.toBuilder()
+ .addResources(resource)
+ .build();
+
+ TenantMetadataAPIRequest request = TenantMetadataAPIRequest
+ .newBuilder()
+ .setTenant(tenant)
+ .build();
+
+ stub.createTenant(request);
+
+ }
+}
diff --git a/metadata-service/db-service/db-service.iml b/metadata-service/db-service/db-service.iml
index a137c71..3851d1d 100644
--- a/metadata-service/db-service/db-service.iml
+++ b/metadata-service/db-service/db-service.iml
@@ -5,8 +5,8 @@
<configuration>
<webroots />
<sourceRoots>
- <root url="file://$MODULE_DIR$/src/main/java" />
- <root url="file://$MODULE_DIR$/src/main/resources" />
+ <root url="file://$MODULE_DIR$/server/src/main/java" />
+ <root url="file://$MODULE_DIR$/server/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
@@ -18,9 +18,9 @@
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/server/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/server/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/server/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
diff --git a/metadata-service/db-service/pom.xml b/metadata-service/db-service/pom.xml
index 594f50f..c0f14fb 100644
--- a/metadata-service/db-service/pom.xml
+++ b/metadata-service/db-service/pom.xml
@@ -6,44 +6,23 @@
<artifactId>metadata-service</artifactId>
<groupId>org.apache.airavata.data.lake</groupId>
<version>0.01-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>db-service</artifactId>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>db-service-server</module>
+ <module>db-service-client</module>
+ <module>db-service-stub</module>
+ </modules>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.data</groupId>-->
-<!-- <artifactId>spring-data-neo4j</artifactId>-->
-<!-- </dependency>-->
- <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-neo4j -->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.boot</groupId>-->
-<!-- <artifactId>spring-boot-starter-data-neo4j</artifactId>-->
-<!-- </dependency>-->
-
- <dependency>
- <groupId>org.neo4j</groupId>
- <artifactId>neo4j-ogm-core</artifactId>
- </dependency>
-
- <!-- Only add if you're using the Bolt driver -->
- <dependency>
- <groupId>org.neo4j</groupId>
- <artifactId>neo4j-ogm-bolt-driver</artifactId>
- </dependency>
-
- </dependencies>
-
</project>
\ No newline at end of file
diff --git a/metadata-service/db-service/db-service.iml b/metadata-service/db-service/server/db-service-server.iml
similarity index 76%
copy from metadata-service/db-service/db-service.iml
copy to metadata-service/db-service/server/db-service-server.iml
index a137c71..fe7fa68 100644
--- a/metadata-service/db-service/db-service.iml
+++ b/metadata-service/db-service/server/db-service-server.iml
@@ -7,6 +7,7 @@
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
+ <root url="file://$MODULE_DIR$/target/maven-shared-archive-resources" />
</sourceRoots>
</configuration>
</facet>
@@ -21,7 +22,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
@@ -378,19 +379,19 @@
</library>
</orderEntry>
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.2" level="project" />
- <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.2" level="project" />
- <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.2" level="project" />
- <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.2" level="project" />
- <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
- <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
- <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
- <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.29" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
- <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.3" level="project" />
- <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.3" level="project" />
- <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.4" level="project" />
@@ -408,9 +409,50 @@
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.3" level="project" />
+ <orderEntry type="module" module-name="db-service-stub" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
<orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-core:3.2.20" level="project" />
<orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-api:3.2.20" level="project" />
- <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
<orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.86" level="project" />
<orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-bolt-driver:3.2.20" level="project" />
diff --git a/metadata-service/db-service/server/pom.xml b/metadata-service/db-service/server/pom.xml
new file mode 100644
index 0000000..29ccc22
--- /dev/null
+++ b/metadata-service/db-service/server/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>db-service</artifactId>
+ <groupId>org.apache.airavata.data.lake</groupId>
+ <version>0.01-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>server</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.neo4j</groupId>
+ <artifactId>neo4j-ogm-core</artifactId>
+ <version>3.2.20</version>
+ </dependency>
+ <dependency>
+ <groupId>org.neo4j</groupId>
+ <artifactId>neo4j-ogm-bolt-driver</artifactId>
+ <version>3.2.20</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.airavata.data.lake</groupId>
+ <artifactId>stub</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ <version>${protobuf.java}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.github.lognet</groupId>
+ <artifactId>grpc-spring-boot-starter</artifactId>
+ <version>${grpc.spring.boot}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>2.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.dozer</groupId>
+ <artifactId>dozer</artifactId>
+ <version>${dozer}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-services</artifactId>
+ <version>1.25.0</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/metadata-service/db-service/server/server.iml b/metadata-service/db-service/server/server.iml
new file mode 100644
index 0000000..a06d26e
--- /dev/null
+++ b/metadata-service/db-service/server/server.iml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <webroots />
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/java" />
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-core:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-api:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
+ <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.86" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-bolt-driver:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j.driver:neo4j-java-driver:4.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+ <orderEntry type="module" module-name="stub" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/AppConfig.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/AppConfig.java
new file mode 100644
index 0000000..2c0f692
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/AppConfig.java
@@ -0,0 +1,149 @@
+package org.apache.airavata.datalake.metadata;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User;
+import org.dozer.DozerBeanMapper;
+import org.dozer.loader.api.BeanMappingBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+@Configuration
+public class AppConfig {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AppConfig.class);
+
+ @Autowired
+ private Connector connector;
+
+
+ @Bean
+ public DozerBeanMapper dozerBeanMapper() {
+ DozerBeanMapper mapper = new DozerBeanMapper();
+ BeanMappingBuilder tenantMapping = new BeanMappingBuilder() {
+ @Override
+ protected void configure() {
+ mapping(org.apache.airavata.datalake.metadata.service.Tenant.class, Tenant.class);
+ }
+ };
+
+ BeanMappingBuilder groupMapping = new BeanMappingBuilder() {
+ @Override
+ protected void configure() {
+ mapping(org.apache.airavata.datalake.metadata.service.Group.class, Group.class);
+ }
+ };
+ BeanMappingBuilder resourceMapping = new BeanMappingBuilder() {
+ @Override
+ protected void configure() {
+ mapping(org.apache.airavata.datalake.metadata.service.Resource.class, Resource.class);
+ }
+ };
+
+ BeanMappingBuilder userMapping = new BeanMappingBuilder() {
+ @Override
+ protected void configure() {
+ mapping(org.apache.airavata.datalake.metadata.service.User.class, User.class);
+ }
+ };
+ mapper.addMapping(tenantMapping);
+ mapper.addMapping(groupMapping);
+ mapper.addMapping(resourceMapping);
+ mapper.addMapping(userMapping);
+ return mapper;
+ }
+
+
+ @Bean
+ Tenant getTenant() {
+ LOGGER.info("Calling get tenant############");
+ Tenant tenant = new Tenant();
+ tenant.setTenantId("123456789");
+ tenant.setName("Tenant");
+
+ User user = new User();
+ user.setFirstName("UserA");
+ user.setUsername("user_a");
+
+ User user1 = new User();
+ user1.setFirstName("UserB");
+ user1.setUsername("user_b");
+
+ User user2 = new User();
+ user2.setFirstName("UserC");
+ user2.setUsername("user_c");
+
+ Group group = new Group();
+ group.setName("g1");
+
+ Group group2 = new Group();
+ group2.setName("g2");
+
+ Group group3 = new Group();
+ group3.setName("g3");
+
+ group.addChildGroup(group2, 0, 0, null);
+ group2.addChildGroup(group3, 0, 0, null);
+
+
+ Resource resource = new Resource();
+ resource.setName("R1");
+
+ Resource resource1 = new Resource();
+ resource1.setName("R2");
+
+ Resource resource2 = new Resource();
+ resource2.setName("R3");
+
+ Resource resource3 = new Resource();
+ resource3.setName("R4");
+
+
+ group.addChildUser(user, "ADMIN", 0, 0, null);
+ resource.addChildResource(resource1, 0, 0, null);
+ resource.shareWithAUser(user, "READ", 0, 0, null);
+
+
+ group2.addChildUser(user1, "ADMIN", 0, 0, null);
+ group3.addChildUser(user2, "ADMIN", 0, 0, null);
+
+ resource1.shareWithAGroup(group2, "WRITE", 0, 0, null);
+ resource2.shareWithAGroup(group3, "WRITE", 0, 0, null);
+
+ tenant.add(user, 0, 0, null);
+ tenant.add(group, 0, 0, null);
+ tenant.add(resource, 0, 0, null);
+
+
+// TenantServiceImpl tenantService = new TenantServiceImpl(connector);
+// tenantService.createOrUpdate(tenant);
+//
+// Filter filter = new Filter("name", ComparisonOperator.EQUALS, "R3");
+//
+//
+// ResourceServiceImpl resourceService = new ResourceServiceImpl(connector);
+// SearchOperator searchOperator = new SearchOperator();
+// searchOperator.setKey("name");
+// searchOperator.setValue("R2");
+// searchOperator.setComparisonOperator(ComparisonOperator.EQUALS);
+// List searchList = new ArrayList<>();
+// searchList.add(searchOperator);
+// List<Resource> collections = (List<Resource>) resourceService.search(searchList);
+// LOGGER.info("Size", collections.size());
+// for (Resource collection : collections) {
+// LOGGER.info("#############" + collection.getName() + "Created At" + collection.getCreatedAt());
+// }
+
+
+ return tenant;
+
+ }
+
+
+}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/Neo4JServiceInitializer.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/Neo4JServiceInitializer.java
similarity index 87%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/Neo4JServiceInitializer.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/Neo4JServiceInitializer.java
index 9a3d9c8..0850cc7 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/Neo4JServiceInitializer.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/Neo4JServiceInitializer.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service;
+package org.apache.airavata.datalake.metadata;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/XmlConfiguration.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/XmlConfiguration.java
similarity index 79%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/XmlConfiguration.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/XmlConfiguration.java
index bd8e468..d506b69 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/XmlConfiguration.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/XmlConfiguration.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service;
+package org.apache.airavata.datalake.metadata;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Connector.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Connector.java
new file mode 100644
index 0000000..1853d4f
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Connector.java
@@ -0,0 +1,10 @@
+package org.apache.airavata.datalake.metadata.backend;
+
+import java.io.Closeable;
+
+public interface Connector extends Closeable {
+
+ boolean init();
+
+
+}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Person.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Person.java
similarity index 91%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Person.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Person.java
index 83988ac..27758c1 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Person.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/Person.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend;
+package org.apache.airavata.datalake.metadata.backend;
import org.neo4j.ogm.annotation.Properties;
@@ -22,14 +22,12 @@ public class Person {
private String name;
@Properties(allowCast = true)
- private Map<String, Object> valueProperties = new HashMap<>();
+ private final Map<String, Object> valueProperties = new HashMap<>();
private Person() {
// Empty constructor required as of Neo4j API 2.0.5
}
- ;
-
public Person(String name) {
this.name = name;
}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/Neo4JConnector.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/Neo4JConnector.java
similarity index 82%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/Neo4JConnector.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/Neo4JConnector.java
index befa1cd..f94f305 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/Neo4JConnector.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/Neo4JConnector.java
@@ -1,7 +1,7 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j;
+package org.apache.airavata.datalake.metadata.backend.neo4j;
-import org.apache.airavata.datalake.metadata.db.service.backend.Connector;
-import org.apache.airavata.datalake.metadata.db.service.exceptions.DBConnectorException;
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.exceptions.DBConnectorException;
import org.neo4j.ogm.config.Configuration;
import org.neo4j.ogm.session.Session;
import org.neo4j.ogm.session.SessionFactory;
@@ -29,7 +29,7 @@ public class Neo4JConnector implements Connector {
.uri(neo4JURI)
.build();
factory =
- new SessionFactory(configuration, "org.apache.airavata.datalake.metadata.db.service");
+ new SessionFactory(configuration, "org.apache.airavata.datalake.metadata.backend");
return true;
} catch (Exception ex) {
String msg = "Neo4J Connection Failure, " + ex.getMessage();
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GenericService.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GenericService.java
new file mode 100644
index 0000000..a199dfe
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GenericService.java
@@ -0,0 +1,90 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.Neo4JConnector;
+import org.neo4j.ogm.cypher.Filter;
+import org.neo4j.ogm.cypher.query.Pagination;
+import org.neo4j.ogm.cypher.query.SortOrder;
+import org.neo4j.ogm.session.Session;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+
+public abstract class GenericService<T> implements Service<T> {
+
+ private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+
+ private static final int DEPTH_LIST = 0;
+ private static final int DEPTH_ENTITY = 1;
+
+ private final Connector connector;
+
+ private final Session session;
+
+ public GenericService(Connector connector) {
+ this.connector = connector;
+ this.session = ((Neo4JConnector) this.connector).openConnection();
+ }
+
+
+ @Override
+ public Iterable<T> findAll() {
+ return session.loadAll(getEntityType(), DEPTH_LIST);
+ }
+
+ @Override
+ public T find(Long id) {
+ return session.load(getEntityType(), id, DEPTH_ENTITY);
+ }
+
+ @Override
+ public void delete(Long id) {
+ session.delete(session.load(getEntityType(), id));
+ }
+
+ @Override
+ public Collection<T> search(List<SearchOperator> searchOperatorList) {
+ AtomicReference<Filter> filter = new AtomicReference<>();
+ searchOperatorList.forEach(operator -> {
+ if (filter.get() == null) {
+ LOGGER.info("Setting filter###");
+ filter.set(new Filter(operator.getKey(), operator.getComparisonOperator(), operator.getValue()));
+ } else {
+ filter.get().and(new Filter(operator.getKey(), operator.getComparisonOperator(), operator.getValue()));
+ }
+
+ });
+ LOGGER.info("Loading ###" + getEntityType());
+ return session.loadAll(getEntityType(), filter.get(), DEPTH_ENTITY);
+ }
+
+ @Override
+ public Iterable<T> sort(SortOrder.Direction sortOrder, String property) {
+ return session.loadAll(getEntityType(), new SortOrder().add(sortOrder, property));
+ }
+
+ @Override
+ public Iterable<T> sortAndPaging(SortOrder.Direction sortOrder, int pageNumber,
+ int itemsPerPage, String property) {
+ return session.loadAll(getEntityType(),
+ new SortOrder().add(sortOrder, property), new Pagination(pageNumber, itemsPerPage));
+ }
+
+ @Override
+ public Iterable<Map<String, Object>> execute(String query) {
+ return session.query(query, Collections.EMPTY_MAP);
+ }
+
+ @Override
+ public void createOrUpdate(T entity) {
+ session.save(entity);
+ }
+
+ abstract Class<T> getEntityType();
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupService.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupService.java
new file mode 100644
index 0000000..8e870fa
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupService.java
@@ -0,0 +1,4 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+public interface GroupService {
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupServiceImpl.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupServiceImpl.java
new file mode 100644
index 0000000..1b7c9ad
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/GroupServiceImpl.java
@@ -0,0 +1,16 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group;
+
+public class GroupServiceImpl extends GenericService<Group> implements GroupService {
+
+ public GroupServiceImpl(Connector connector) {
+ super(connector);
+ }
+
+ @Override
+ Class<Group> getEntityType() {
+ return Group.class;
+ }
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceService.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceService.java
new file mode 100644
index 0000000..be6d06c
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceService.java
@@ -0,0 +1,4 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+public interface ResourceService {
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceServiceImpl.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceServiceImpl.java
new file mode 100644
index 0000000..e1b8a35
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/ResourceServiceImpl.java
@@ -0,0 +1,16 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource;
+
+public class ResourceServiceImpl extends GenericService<Resource> implements UserService {
+
+ public ResourceServiceImpl(Connector connector) {
+ super(connector);
+ }
+
+ @Override
+ Class<Resource> getEntityType() {
+ return Resource.class;
+ }
+}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/SearchOperator.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/SearchOperator.java
similarity index 88%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/SearchOperator.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/SearchOperator.java
index 1717d1a..6822af9 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/SearchOperator.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/SearchOperator.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
import org.neo4j.ogm.cypher.ComparisonOperator;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/Service.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/Service.java
similarity index 70%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/Service.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/Service.java
index ee73d18..1694973 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/Service.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/Service.java
@@ -1,9 +1,10 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
import org.neo4j.ogm.cypher.query.SortOrder;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
public interface Service<T> {
@@ -19,6 +20,8 @@ public interface Service<T> {
Iterable<T> sortAndPaging(SortOrder.Direction direction, int pageNumber, int itemsPerPage, String property);
- T createOrUpdate(T Object);
+ Iterable<Map<String,Object>> execute(String query);
+
+ void createOrUpdate(T Object);
}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantService.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantService.java
new file mode 100644
index 0000000..1034d1a
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantService.java
@@ -0,0 +1,4 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+public interface TenantService {
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantServiceImpl.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantServiceImpl.java
new file mode 100644
index 0000000..fb6c776
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/TenantServiceImpl.java
@@ -0,0 +1,15 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant;
+
+public class TenantServiceImpl extends GenericService<Tenant> implements TenantService {
+ public TenantServiceImpl(Connector connector) {
+ super(connector);
+ }
+
+ @Override
+ Class<Tenant> getEntityType() {
+ return Tenant.class;
+ }
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserService.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserService.java
new file mode 100644
index 0000000..737b93a
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserService.java
@@ -0,0 +1,4 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+public interface UserService {
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserServiceImpl.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserServiceImpl.java
new file mode 100644
index 0000000..542cce3
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/curd/operators/UserServiceImpl.java
@@ -0,0 +1,16 @@
+package org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators;
+
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User;
+
+public class UserServiceImpl extends GenericService<User> implements UserService {
+
+ public UserServiceImpl(Connector connector) {
+ super(connector);
+ }
+
+ @Override
+ Class<User> getEntityType() {
+ return User.class;
+ }
+}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Entity.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Entity.java
similarity index 93%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Entity.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Entity.java
index 158f94a..69fbdca 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Entity.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Entity.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.Has;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.Has;
import org.neo4j.ogm.annotation.*;
import java.util.HashMap;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Group.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Group.java
similarity index 91%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Group.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Group.java
index 3d26d98..c3362c5 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Group.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Group.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.*;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.*;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.Relationship;
@@ -23,13 +23,13 @@ public class Group extends Entity {
private Set<HasChildGroup> childGroups = new HashSet<>();
@Relationship(type = "HAS_CHILD_GROUP", direction = Relationship.INCOMING)
- private HasChildGroup ChildGroupInPointers;
+ private HasChildGroup childGroupInPointers;
@Relationship(type = "HAS_CHILD_USER")
private Set<HasChildUser> childUsers = new HashSet<>();
@Relationship(type = "HAS_PARENT_GROUP", direction = Relationship.INCOMING)
- private Set<HasParentGroup> parentGroupInPointers = new HashSet<>();
+ private final Set<HasParentGroup> parentGroupInPointers = new HashSet<>();
@Relationship(type = "HAS_PARENT_GROUP")
private HasParentGroup parent;
@@ -38,10 +38,10 @@ public class Group extends Entity {
private Set<MemberOf> memberUsersInPointers = new HashSet<>();
@Relationship(type = "SHARED_WITH", direction = Relationship.INCOMING)
- private Set<SharedWith> sharedResourcesInPointers = new HashSet<>();
+ private final Set<SharedWith> sharedResourcesInPointers = new HashSet<>();
@Relationship(type = "HAS_ACCESS")
- private Set<HasAccess> accessibleResources = new HashSet<>();
+ private final Set<HasAccess> accessibleResources = new HashSet<>();
public Group() {
@@ -111,11 +111,11 @@ public class Group extends Entity {
}
public HasChildGroup getChildGroupInPointers() {
- return ChildGroupInPointers;
+ return childGroupInPointers;
}
public void setChildGroupInPointers(HasChildGroup childGroupInPointers) {
- this.ChildGroupInPointers = childGroupInPointers;
+ this.childGroupInPointers = childGroupInPointers;
}
public void setChildUsers(Set<HasChildUser> childUsers) {
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Resource.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Resource.java
similarity index 93%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Resource.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Resource.java
index 5df5e77..b9808bf 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Resource.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Resource.java
@@ -1,8 +1,8 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.*;
-import org.neo4j.ogm.annotation.*;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.*;
import org.neo4j.ogm.annotation.Relationship;
+import org.neo4j.ogm.annotation.*;
import java.util.HashSet;
import java.util.Map;
@@ -22,22 +22,22 @@ public class Resource extends Entity {
private Has tenantPointer;
@Relationship(type = "HAS_CHILD_RESOURCE")
- private Set<HasChildResource> childResourceSet = new HashSet<>();
+ private final Set<HasChildResource> childResourceSet = new HashSet<>();
@Relationship(type = "HAS_CHILD_RESOURCE", direction = Relationship.INCOMING)
private HasChildResource parentInPointer;
@Relationship(type = "HAS_PARENT_RESOURCE", direction = Relationship.INCOMING)
- private Set<HasParentResource> childInPointers = new HashSet<>();
+ private final Set<HasParentResource> childInPointers = new HashSet<>();
@Relationship(type = "HAS_PARENT_RESOURCE")
private HasParentResource parent;
@Relationship(type = "SHARED_WITH")
- private Set<SharedWith> shares = new HashSet<>();
+ private final Set<SharedWith> shares = new HashSet<>();
@Relationship(type = "HAS_ACCESS", direction = Relationship.INCOMING)
- private Set<HasAccess> accesses = new HashSet<>();
+ private final Set<HasAccess> accesses = new HashSet<>();
public Resource() {
}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Role.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Role.java
similarity index 78%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Role.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Role.java
index e70579a..c56e073 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Role.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Role.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.HasRole;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.HasRole;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.Relationship;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/ServiceAccount.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/ServiceAccount.java
similarity index 74%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/ServiceAccount.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/ServiceAccount.java
index 2802c5c..db5f99d 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/ServiceAccount.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/ServiceAccount.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.Has;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.Has;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.Relationship;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Tenant.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Tenant.java
similarity index 89%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Tenant.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Tenant.java
index c8f619b..7967386 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/Tenant.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/Tenant.java
@@ -1,7 +1,7 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.Has;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.HasRole;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.Has;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.HasRole;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.Relationship;
@@ -30,7 +30,7 @@ public class Tenant extends Entity {
private Set<HasRole> roles = new HashSet<>();
@Relationship(type = "HAS")
- private Set<Has> entities = new HashSet<>();
+ private final Set<Has> entities = new HashSet<>();
public Tenant() {
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/User.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/User.java
similarity index 81%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/User.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/User.java
index 07b1979..d20f560 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/nodes/User.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/nodes/User.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships.*;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships.*;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.Relationship;
@@ -11,7 +11,7 @@ import java.util.Set;
@NodeEntity
public class User extends Entity {
@Property(name = "name")
- private String userName;
+ private String username;
@Property(name = "first_name")
private String firstName;
@Property(name = "last_name")
@@ -28,26 +28,26 @@ public class User extends Entity {
private Has hasRole;
@Relationship(type = "MEMBER_OF")
- private Set<MemberOf> memberGroups = new HashSet<>();
+ private final Set<MemberOf> memberGroups = new HashSet<>();
@Relationship(type = "HAS_CHILD_USER", direction = Relationship.INCOMING)
- private Set<HasChildUser> groups = new HashSet<>();
+ private final Set<HasChildUser> groups = new HashSet<>();
@Relationship(type = "SHARED_WITH", direction = Relationship.INCOMING)
- private Set<SharedWith> sharedResources = new HashSet<>();
+ private final Set<SharedWith> sharedResources = new HashSet<>();
@Relationship(type = "HAS_ACCESS")
- private Set<HasAccess> accessibleResources = new HashSet<>();
+ private final Set<HasAccess> accessibleResources = new HashSet<>();
public User() {
}
- public String getUserName() {
- return userName;
+ public String getUsername() {
+ return username;
}
- public void setUserName(String userName) {
- this.userName = userName;
+ public void setUsername(String username) {
+ this.username = username;
}
public String getFirstName() {
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Belongs.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Belongs.java
similarity index 60%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Belongs.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Belongs.java
index 0f0e8ce..c897f64 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Belongs.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Belongs.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/ConfiguredWith.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/ConfiguredWith.java
similarity index 62%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/ConfiguredWith.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/ConfiguredWith.java
index 22cbfcf..708e7ef 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/ConfiguredWith.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/ConfiguredWith.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Has.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Has.java
similarity index 58%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Has.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Has.java
index c315762..3810532 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Has.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Has.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasAccess.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasAccess.java
similarity index 84%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasAccess.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasAccess.java
index b76369b..1f51c29 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasAccess.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasAccess.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildGroup.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildGroup.java
similarity index 62%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildGroup.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildGroup.java
index a97bfb8..5405279 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildGroup.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildGroup.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildResource.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildResource.java
similarity index 63%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildResource.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildResource.java
index 2a29c8d..277dc6a 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildResource.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildResource.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildUser.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildUser.java
similarity index 81%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildUser.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildUser.java
index bc04572..126ab61 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasChildUser.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasChildUser.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentGroup.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentGroup.java
similarity index 83%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentGroup.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentGroup.java
index fe07ddb..3703607 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentGroup.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentGroup.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentResource.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentResource.java
similarity index 63%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentResource.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentResource.java
index d8a0340..44ae8f5 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasParentResource.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasParentResource.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasRole.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasRole.java
similarity index 60%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasRole.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasRole.java
index 5b02f4e..cb378e8 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/HasRole.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/HasRole.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/MemberOf.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/MemberOf.java
similarity index 82%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/MemberOf.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/MemberOf.java
index f381f33..1282ef0 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/MemberOf.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/MemberOf.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Relationship.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Relationship.java
similarity index 89%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Relationship.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Relationship.java
index f7ccdff..d8f502b 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/Relationship.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/Relationship.java
@@ -1,6 +1,6 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.Entity;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Entity;
import org.neo4j.ogm.annotation.*;
import java.util.HashMap;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/SharedWith.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/SharedWith.java
similarity index 84%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/SharedWith.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/SharedWith.java
index b3434cb..83a370e 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/model/relationships/SharedWith.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/backend/neo4j/model/relationships/SharedWith.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.relationships;
+package org.apache.airavata.datalake.metadata.backend.neo4j.model.relationships;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/exceptions/DBConnectorException.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/exceptions/DBConnectorException.java
similarity index 76%
rename from metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/exceptions/DBConnectorException.java
rename to metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/exceptions/DBConnectorException.java
index c4860d8..431f517 100644
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/exceptions/DBConnectorException.java
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/exceptions/DBConnectorException.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.datalake.metadata.db.service.exceptions;
+package org.apache.airavata.datalake.metadata.exceptions;
public class DBConnectorException extends RuntimeException{
String msg;
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/GroupServiceHandler.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/GroupServiceHandler.java
new file mode 100644
index 0000000..fb46b49
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/GroupServiceHandler.java
@@ -0,0 +1,38 @@
+package org.apache.airavata.datalake.metadata.handlers;
+
+import io.grpc.stub.StreamObserver;
+import org.apache.airavata.datalake.metadata.service.*;
+import org.lognet.springboot.grpc.GRpcService;
+
+@GRpcService
+public class GroupServiceHandler extends GroupMetadataServiceGrpc.GroupMetadataServiceImplBase {
+ @Override
+ public void createGroup(GroupMetadataAPIRequest request, StreamObserver<GroupMetadataAPIResponse> responseObserver) {
+ super.createGroup(request, responseObserver);
+ }
+
+ @Override
+ public void getGroup(GroupMetadataAPIRequest request, StreamObserver<Group> responseObserver) {
+ super.getGroup(request, responseObserver);
+ }
+
+ @Override
+ public void updateGroup(GroupMetadataAPIRequest request, StreamObserver<GroupMetadataAPIResponse> responseObserver) {
+ super.updateGroup(request, responseObserver);
+ }
+
+ @Override
+ public void deleteGroup(GroupMetadataAPIRequest request, StreamObserver<GroupMetadataAPIResponse> responseObserver) {
+ super.deleteGroup(request, responseObserver);
+ }
+
+ @Override
+ public void createGroupMemberships(GroupMembershipAPIRequest request, StreamObserver<GroupMetadataAPIResponse> responseObserver) {
+ super.createGroupMemberships(request, responseObserver);
+ }
+
+ @Override
+ public void deleteGroupMemberships(GroupMembershipAPIRequest request, StreamObserver<GroupMetadataAPIResponse> responseObserver) {
+ super.deleteGroupMemberships(request, responseObserver);
+ }
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/ResourceServiceHandler.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/ResourceServiceHandler.java
new file mode 100644
index 0000000..1de7898
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/ResourceServiceHandler.java
@@ -0,0 +1,38 @@
+package org.apache.airavata.datalake.metadata.handlers;
+
+import io.grpc.stub.StreamObserver;
+import org.apache.airavata.datalake.metadata.service.*;
+import org.lognet.springboot.grpc.GRpcService;
+
+@GRpcService
+public class ResourceServiceHandler extends ResourceMetadataServiceGrpc.ResourceMetadataServiceImplBase {
+ @Override
+ public void createResource(ResourceMetadataAPIRequest request, StreamObserver<ResourceMetadataAPIResponse> responseObserver) {
+ super.createResource(request, responseObserver);
+ }
+
+ @Override
+ public void getResource(ResourceMetadataAPIRequest request, StreamObserver<Resource> responseObserver) {
+ super.getResource(request, responseObserver);
+ }
+
+ @Override
+ public void updateResource(ResourceMetadataAPIRequest request, StreamObserver<ResourceMetadataAPIResponse> responseObserver) {
+ super.updateResource(request, responseObserver);
+ }
+
+ @Override
+ public void deleteResource(ResourceMetadataAPIRequest request, StreamObserver<ResourceMetadataAPIResponse> responseObserver) {
+ super.deleteResource(request, responseObserver);
+ }
+
+ @Override
+ public void shareResource(ResourceMetadataSharingRequest request, StreamObserver<ResourceMetadataAPIResponse> responseObserver) {
+ super.shareResource(request, responseObserver);
+ }
+
+ @Override
+ public void deleteSharing(ResourceMetadataSharingRequest request, StreamObserver<ResourceMetadataAPIResponse> responseObserver) {
+ super.deleteSharing(request, responseObserver);
+ }
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/TenantServiceHandler.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/TenantServiceHandler.java
new file mode 100644
index 0000000..d4fce42
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/TenantServiceHandler.java
@@ -0,0 +1,83 @@
+package org.apache.airavata.datalake.metadata.handlers;
+
+import io.grpc.stub.StreamObserver;
+import org.apache.airavata.datalake.metadata.backend.Connector;
+import org.apache.airavata.datalake.metadata.backend.neo4j.curd.operators.TenantServiceImpl;
+import org.apache.airavata.datalake.metadata.parsers.TenantParser;
+import org.apache.airavata.datalake.metadata.service.Tenant;
+import org.apache.airavata.datalake.metadata.service.TenantMetadataAPIRequest;
+import org.apache.airavata.datalake.metadata.service.TenantMetadataAPIResponse;
+import org.apache.airavata.datalake.metadata.service.TenantMetadataServiceGrpc;
+import org.dozer.DozerBeanMapper;
+import org.lognet.springboot.grpc.GRpcService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@GRpcService
+public class TenantServiceHandler extends TenantMetadataServiceGrpc.TenantMetadataServiceImplBase {
+ private static final Logger LOGGER = LoggerFactory.getLogger(TenantServiceHandler.class);
+
+ @Autowired
+ private DozerBeanMapper dozerBeanMapper;
+
+ @Autowired
+ private TenantParser tenantParser;
+
+ @Autowired
+ private Connector connector;
+
+ @Override
+ public void createTenant(TenantMetadataAPIRequest request,
+ StreamObserver<TenantMetadataAPIResponse> responseObserver) {
+ try {
+ Tenant tenant = request.getTenant();
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant parsedTenant =
+ tenantParser.parseTenant(tenant);
+
+ TenantServiceImpl tenantService = new TenantServiceImpl(connector);
+ tenantService.createOrUpdate(parsedTenant);
+ TenantMetadataAPIResponse response = TenantMetadataAPIResponse.newBuilder().setStatus(true).build();
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
+
+ } catch (Exception ex) {
+ String msg = "Exception occurred while creating tenant " + ex;
+ LOGGER.error(msg);
+ responseObserver.onError(new Exception(msg));
+ }
+ }
+
+ @Override
+ public void getTenant(TenantMetadataAPIRequest request,
+ StreamObserver<Tenant> responseObserver) {
+ try {
+
+
+ } catch (Exception ex) {
+
+ }
+ }
+
+ @Override
+ public void updateTenant(TenantMetadataAPIRequest request,
+ StreamObserver<TenantMetadataAPIResponse> responseObserver) {
+ try {
+
+
+ } catch (Exception ex) {
+
+ }
+ }
+
+ @Override
+ public void deleteTenant(TenantMetadataAPIRequest request,
+ StreamObserver<TenantMetadataAPIResponse> responseObserver) {
+ try {
+
+
+ } catch (Exception ex) {
+
+ }
+ }
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/UserServiceHandler.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/UserServiceHandler.java
new file mode 100644
index 0000000..af2ceec
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/handlers/UserServiceHandler.java
@@ -0,0 +1,29 @@
+package org.apache.airavata.datalake.metadata.handlers;
+
+import io.grpc.stub.StreamObserver;
+import org.apache.airavata.datalake.metadata.service.*;
+import org.lognet.springboot.grpc.GRpcService;
+
+@GRpcService
+public class UserServiceHandler extends UserMetadataServiceGrpc.UserMetadataServiceImplBase {
+ @Override
+ public void createUser(UserMetadataAPIRequest request, StreamObserver<UserMetadataAPIResponse> responseObserver) {
+ super.createUser(request, responseObserver);
+ }
+
+ @Override
+ public void getUser(UserMetadataAPIRequest request, StreamObserver<User> responseObserver) {
+ super.getUser(request, responseObserver);
+ }
+
+ @Override
+ public void updateUser(UserMetadataAPIRequest request, StreamObserver<UserMetadataAPIResponse> responseObserver) {
+ super.updateUser(request, responseObserver);
+ }
+
+ @Override
+ public void deleteUser(UserMetadataAPIRequest request, StreamObserver<UserMetadataAPIResponse> responseObserver) {
+ super.deleteUser(request, responseObserver);
+ }
+
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/GroupParser.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/GroupParser.java
new file mode 100644
index 0000000..eb31649
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/GroupParser.java
@@ -0,0 +1,68 @@
+package org.apache.airavata.datalake.metadata.parsers;
+
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group;
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User;
+import org.apache.airavata.datalake.metadata.service.GroupMembership;
+import org.dozer.DozerBeanMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class GroupParser {
+ private static final Logger LOGGER = LoggerFactory.getLogger(GroupParser.class);
+
+ @Autowired
+ private DozerBeanMapper dozerBeanMapper;
+
+
+ public Group parseGroup(org.apache.airavata.datalake.metadata.service.Group group, Optional<Group> parentGroup) {
+ Group newParentGroup;
+ if (parentGroup.isEmpty()) {
+ newParentGroup = dozerBeanMapper.map(group,
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group.class);
+ } else {
+ newParentGroup = parentGroup.get();
+ Group childGroup = dozerBeanMapper.map(group,
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group.class);
+ newParentGroup.addChildGroup(childGroup,
+ childGroup.getCreatedAt() != 0 ? childGroup.getCreatedAt() : System.currentTimeMillis(),
+ childGroup.getLastModifiedAt() != 0 ? childGroup.getLastModifiedAt() : System.currentTimeMillis(),
+ null); // Improve this with relatioship propertie
+
+ newParentGroup = childGroup;
+ }
+
+ List<GroupMembership> groupMemberships = group.getGroupMembershipList();
+
+ if (!groupMemberships.isEmpty()) {
+ Group finalNewParentGroup1 = newParentGroup;
+ groupMemberships.forEach(mebership -> {
+ User usr = dozerBeanMapper.map(mebership.getUser(), org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User.class);
+ finalNewParentGroup1.addChildUser(usr, mebership.getMembershipType(),
+ mebership.getCreatedAt() != 0 ? mebership.getCreatedAt() : System.currentTimeMillis(),
+ mebership.getLastModifiedAt() != 0 ? mebership.getLastModifiedAt() : System.currentTimeMillis(),
+ null);
+ });
+
+ }
+
+ List<org.apache.airavata.datalake.metadata.service.Group> groups = group.getChildGroupsList();
+
+ if (!groups.isEmpty()) {
+
+ Group finalNewParentGroup = newParentGroup;
+ groups.forEach(gr -> {
+ this.parseGroup(gr, Optional.of(finalNewParentGroup));
+ });
+ }
+ return newParentGroup;
+
+ }
+
+
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/ResourceParser.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/ResourceParser.java
new file mode 100644
index 0000000..6a14446
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/ResourceParser.java
@@ -0,0 +1,77 @@
+package org.apache.airavata.datalake.metadata.parsers;
+
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource;
+import org.apache.airavata.datalake.metadata.service.ResourceSharings;
+import org.dozer.DozerBeanMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class ResourceParser {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ResourceParser.class);
+
+ @Autowired
+ private DozerBeanMapper dozerBeanMapper;
+
+
+ public Resource parseResource(org.apache.airavata.datalake.metadata.service.Resource resource,
+ Optional<Resource> parentResource) {
+ Resource newParentResource;
+ if (parentResource.isEmpty()) {
+ newParentResource = dozerBeanMapper.map(resource,
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource.class);
+ } else {
+ newParentResource = parentResource.get();
+ Resource childResource = dozerBeanMapper.map(resource,
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource.class);
+ newParentResource.addChildResource(childResource,
+ childResource.getCreatedAt() != 0 ? childResource.getCreatedAt() : System.currentTimeMillis(),
+ childResource.getLastModifiedAt() != 0 ? childResource.getLastModifiedAt() : System.currentTimeMillis(),
+ null); // Improve this with relatioship properties
+ newParentResource = childResource;
+ }
+
+
+ List<ResourceSharings> resourceSharings = resource.getSharingsList();
+
+ if (! resourceSharings.isEmpty()) {
+ resourceSharings.forEach(reshr-> {
+ if (!reshr.getUsersList().isEmpty()) {
+ reshr.getUsersList().forEach(shr-> {
+ // newParentResource.shareWithAUser(shr,reshr.get);
+
+ });
+
+ } else if (!reshr.getGroupsList().isEmpty()) {
+
+ }
+
+
+ });
+
+
+ }
+
+
+
+
+
+ List<org.apache.airavata.datalake.metadata.service.Resource> resources = resource.getChildResourcesList();
+
+ if (!resources.isEmpty()) {
+ Resource finalNewParentResource = newParentResource;
+ resources.forEach(gr -> {
+ this.parseResource(gr, Optional.of(finalNewParentResource));
+ });
+ }
+ return newParentResource;
+
+ }
+
+
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/TenantParser.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/TenantParser.java
new file mode 100644
index 0000000..c31379d
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/TenantParser.java
@@ -0,0 +1,79 @@
+package org.apache.airavata.datalake.metadata.parsers;
+
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant;
+import org.apache.airavata.datalake.metadata.service.Group;
+import org.apache.airavata.datalake.metadata.service.Resource;
+import org.apache.airavata.datalake.metadata.service.User;
+import org.dozer.DozerBeanMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class TenantParser {
+ private static Logger LOGGER = LoggerFactory.getLogger(TenantParser.class);
+
+ @Autowired
+ private DozerBeanMapper dozerBeanMapper;
+
+ @Autowired
+ private GroupParser groupParser;
+
+ @Autowired
+ private UserParser userParser;
+
+ @Autowired
+ private ResourceParser resourceParser;
+
+
+ public Tenant parseTenant(org.apache.airavata.datalake.metadata.service.Tenant tenant) {
+ List<Group> groups = tenant.getGroupsList();
+ List<User> users = tenant.getUsersList();
+ List<Resource> resources = tenant.getResourcesList();
+
+
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant neo4JTenant =
+ dozerBeanMapper.map(tenant, org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Tenant.class);
+
+ if (!groups.isEmpty()) {
+ groups.stream().forEach(group -> {
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Group neo4JGr =
+ groupParser.parseGroup(group, Optional.empty());
+ neo4JTenant.add(neo4JGr, tenant.getCreatedAt() != 0 ? tenant.getCreatedAt() : System.currentTimeMillis(),
+ tenant.getLastModifiedAt() != 0 ? tenant.getLastModifiedAt() : System.currentTimeMillis(),
+ null);
+
+ });
+ }
+
+ if (!users.isEmpty()) {
+ users.stream().forEach(user -> {
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User usr =
+ userParser.parseUser(user);
+ neo4JTenant.add(usr, tenant.getCreatedAt() != 0 ? tenant.getCreatedAt() : System.currentTimeMillis(),
+ tenant.getLastModifiedAt() != 0 ? tenant.getLastModifiedAt() : System.currentTimeMillis(),
+ null);
+
+ });
+ }
+
+ if (!resources.isEmpty()) {
+ resources.stream().forEach(resource -> {
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.Resource neo4JResource =
+ resourceParser.parseResource(resource, Optional.empty());
+ neo4JTenant.add(neo4JResource, tenant.getCreatedAt() != 0 ? tenant.getCreatedAt() : System.currentTimeMillis(),
+ tenant.getLastModifiedAt() != 0 ? tenant.getLastModifiedAt() : System.currentTimeMillis(),
+ null);
+
+ });
+ }
+ return neo4JTenant;
+
+ }
+
+
+}
diff --git a/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/UserParser.java b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/UserParser.java
new file mode 100644
index 0000000..2903381
--- /dev/null
+++ b/metadata-service/db-service/server/src/main/java/org/apache/airavata/datalake/metadata/parsers/UserParser.java
@@ -0,0 +1,22 @@
+package org.apache.airavata.datalake.metadata.parsers;
+
+import org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User;
+import org.dozer.DozerBeanMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class UserParser {
+
+ @Autowired
+ private DozerBeanMapper dozerBeanMapper;
+
+
+ public User parseUser(org.apache.airavata.datalake.metadata.service.User user) {
+
+ return dozerBeanMapper.map(user,
+ org.apache.airavata.datalake.metadata.backend.neo4j.model.nodes.User.class);
+ }
+
+
+}
diff --git a/metadata-service/db-service/src/main/resources/application.properties b/metadata-service/db-service/server/src/main/resources/application.properties
similarity index 88%
rename from metadata-service/db-service/src/main/resources/application.properties
rename to metadata-service/db-service/server/src/main/resources/application.properties
index f0d53ae..0b24325 100644
--- a/metadata-service/db-service/src/main/resources/application.properties
+++ b/metadata-service/db-service/server/src/main/resources/application.properties
@@ -17,7 +17,7 @@
# under the License.
#
-server.port=9090
+grpc.port=9090
spring.neo4j.uri=bolt://neo4j:blastcovid19@149.165.156.173
-spring.neo4j.authentication.username=username
-spring.neo4j.authentication.password=password
+spring.neo4j.authentication.username=neo4j
+spring.neo4j.authentication.password=blastcovid19
diff --git a/metadata-service/db-service/src/main/resources/applicationContext.xml b/metadata-service/db-service/server/src/main/resources/applicationContext.xml
similarity index 91%
rename from metadata-service/db-service/src/main/resources/applicationContext.xml
rename to metadata-service/db-service/server/src/main/resources/applicationContext.xml
index adeadaf..842fccf 100644
--- a/metadata-service/db-service/src/main/resources/applicationContext.xml
+++ b/metadata-service/db-service/server/src/main/resources/applicationContext.xml
@@ -6,7 +6,7 @@
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
- <bean id="dbConnector" class="org.apache.airavata.datalake.metadata.db.service.backend.neo4j.Neo4JConnector"
+ <bean id="dbConnector" class="org.apache.airavata.datalake.metadata.backend.neo4j.Neo4JConnector"
init-method="init" destroy-method="close"></bean>
</beans>
\ No newline at end of file
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/AppConfig.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/AppConfig.java
deleted file mode 100644
index d941b92..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/AppConfig.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service;
-
-import org.apache.airavata.datalake.metadata.db.service.backend.Connector;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.Neo4JConnector;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.Group;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.Resource;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.Tenant;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.User;
-import org.neo4j.ogm.cypher.ComparisonOperator;
-import org.neo4j.ogm.cypher.Filter;
-import org.neo4j.ogm.session.Session;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-
-@Configuration
-public class AppConfig {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(AppConfig.class);
-
- @Autowired
- private Connector connector;
-
-
- @Bean
- Tenant getTenant() {
- LOGGER.info("Calling get tenant############");
- Tenant tenant = new Tenant();
- tenant.setTenantId("123456789");
- tenant.setName("Tenant");
-
- User user = new User();
- user.setFirstName("UserA");
- user.setUserName("user_a");
-
- User user1 = new User();
- user1.setFirstName("UserB");
- user1.setUserName("user_b");
-
- User user2 = new User();
- user2.setFirstName("UserC");
- user2.setUserName("user_c");
-
- Group group = new Group();
- group.setName("g1");
-
- Group group2 = new Group();
- group2.setName("g2");
-
- Group group3 = new Group();
- group3.setName("g3");
-
- group.addChildGroup(group2, 0, 0, null);
- group2.addChildGroup(group3, 0, 0, null);
-
-
- Resource resource = new Resource();
- resource.setName("R1");
-
- Resource resource1 = new Resource();
- resource1.setName("R2");
-
- Resource resource2 = new Resource();
- resource2.setName("R3");
-
- Resource resource3 = new Resource();
- resource3.setName("R4");
-
-
- group.addChildUser(user, "ADMIN", 0, 0, null);
- resource.addChildResource(resource1, 0, 0, null);
- resource.shareWithAUser(user, "READ", 0, 0, null);
-
-
- group2.addChildUser(user1, "ADMIN", 0, 0, null);
- group3.addChildUser(user2, "ADMIN", 0, 0, null);
-
- resource1.shareWithAGroup(group2, "WRITE", 0, 0, null);
- resource2.shareWithAGroup(group3, "WRITE", 0, 0, null);
-
- tenant.add(user, 0, 0, null);
- tenant.add(group, 0, 0, null);
- tenant.add(resource, 0, 0, null);
-
- Session session = ((Neo4JConnector) connector).openConnection();
- session.save(tenant);
-
- Filter filter = new Filter("name", ComparisonOperator.EQUALS, "R3");
-
-// Collection<Resource> resources = session.loadAll(Resource.class, filter, 1);
-// resources.stream().forEach(t -> {
-// LOGGER.info("Resources " + t.getName());
-// t.addChildResource(resource3, 0, 0, null);
-// Resource resource4 = (Resource) session.load(Resource.class, new Long(13));
-// session.delete(resource4);
-// session.save(t);
-// });
-
-
- return tenant;
-
- }
-
-
-}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Connector.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Connector.java
deleted file mode 100644
index c96905f..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/Connector.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service.backend;
-
-import java.io.Closeable;
-
-public interface Connector extends Closeable {
-
- public boolean init();
-
-
-}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GenericService.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GenericService.java
deleted file mode 100644
index 1a24815..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GenericService.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
-
-import org.apache.airavata.datalake.metadata.db.service.backend.Connector;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.Neo4JConnector;
-import org.apache.airavata.datalake.metadata.db.service.backend.neo4j.model.nodes.Entity;
-import org.neo4j.ogm.cypher.Filter;
-import org.neo4j.ogm.cypher.query.Pagination;
-import org.neo4j.ogm.cypher.query.SortOrder;
-import org.neo4j.ogm.session.Session;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-public abstract class GenericService<T> implements Service<T> {
-
- private static final int DEPTH_LIST = 0;
- private static final int DEPTH_ENTITY = 1;
-
- private Connector connector;
-
- private Session session;
-
- public GenericService(@Autowired Connector connector) {
- this.connector = connector;
- this.session = ((Neo4JConnector) this.connector).openConnection();
- }
-
-
- @Override
- public Iterable<T> findAll() {
- return session.loadAll(getEntityType(), DEPTH_LIST);
- }
-
- @Override
- public T find(Long id) {
- return session.load(getEntityType(), id, DEPTH_ENTITY);
- }
-
- @Override
- public void delete(Long id) {
- session.delete(session.load(getEntityType(), id));
- }
-
- @Override
- public Collection<T> search(List<SearchOperator> searchOperatorList) {
- AtomicReference<Filter> filter = null;
- searchOperatorList.forEach(value -> {
- if (filter.get() == null) {
- filter.set(new Filter(value.getValue(), value.getComparisonOperator(), value.getValue()));
- } else {
- filter.get().and(new Filter(value.getValue(), value.getComparisonOperator(), value.getValue()));
- }
-
- });
- return session.loadAll(getEntityType(), filter.get());
- }
-
- @Override
- public Iterable<T> sort(SortOrder.Direction sortOrder, String property) {
- return session.loadAll(getEntityType(),new SortOrder().add(sortOrder,property));
- }
-
- @Override
- public Iterable<T> sortAndPaging(SortOrder.Direction sortOrder, int pageNumber,
- int itemsPerPage, String property) {
- return session.loadAll(getEntityType(),
- new SortOrder().add(sortOrder,property), new Pagination(pageNumber,itemsPerPage));
- }
-
- @Override
- public T createOrUpdate(T entity) {
- session.save(entity, DEPTH_ENTITY);
- return find(((Entity) entity).getId());
- }
-
- abstract Class<T> getEntityType();
-}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GroupService.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GroupService.java
deleted file mode 100644
index dc83a02..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/GroupService.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
-
-public interface GroupService {
-}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/ResourceService.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/ResourceService.java
deleted file mode 100644
index 5cf5a03..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/ResourceService.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
-
-public interface ResourceService {
-}
diff --git a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/UserService.java b/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/UserService.java
deleted file mode 100644
index 7669a05..0000000
--- a/metadata-service/db-service/src/main/java/org/apache/airavata/datalake/metadata/db/service/backend/neo4j/curd/operators/UserService.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.airavata.datalake.metadata.db.service.backend.neo4j.curd.operators;
-
-public interface UserService {
-}
diff --git a/metadata-service/db-service/stub/db-service-stub.iml b/metadata-service/db-service/stub/db-service-stub.iml
new file mode 100644
index 0000000..d2ffd43
--- /dev/null
+++ b/metadata-service/db-service/stub/db-service-stub.iml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/proto" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/protobuf/grpc-java" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/protobuf/java" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Bundled Protobuf Distribution" level="application" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.29" level="project" />
+ <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.1.RELEASE" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/pom.xml b/metadata-service/db-service/stub/pom.xml
new file mode 100644
index 0000000..e032813
--- /dev/null
+++ b/metadata-service/db-service/stub/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>metadata-service</artifactId>
+ <groupId>org.apache.airavata.data.lake</groupId>
+ <version>0.01-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>stub</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ <version>${protobuf.java}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <extensions>
+ <extension>
+ <groupId>kr.motd.maven</groupId>
+ <artifactId>os-maven-plugin</artifactId>
+ <version>${os.maven.plugin}</version>
+ </extension>
+ </extensions>
+ <plugins>
+ <plugin>
+ <groupId>org.xolstice.maven.plugins</groupId>
+ <artifactId>protobuf-maven-plugin</artifactId>
+ <version>${protobuf.maven.plugin}</version>
+ <configuration>
+ <protocArtifact>com.google.protobuf:protoc:3.0.2:exe:${os.detected.classifier}</protocArtifact>
+ <pluginId>grpc-java</pluginId>
+ <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.1:exe:${os.detected.classifier}</pluginArtifact>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>compile-custom</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/src/main/proto/common/Common.proto b/metadata-service/db-service/stub/src/main/proto/common/Common.proto
new file mode 100644
index 0000000..b631661
--- /dev/null
+++ b/metadata-service/db-service/stub/src/main/proto/common/Common.proto
@@ -0,0 +1,12 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.airavata.datalake.metadata.service;
+
+import "google/api/annotations.proto";
+
+
+
+message MetadataServiceAuthToken {
+ string access_token = 1;
+}
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/src/main/proto/group/Group.proto b/metadata-service/db-service/stub/src/main/proto/group/Group.proto
new file mode 100644
index 0000000..2275c72
--- /dev/null
+++ b/metadata-service/db-service/stub/src/main/proto/group/Group.proto
@@ -0,0 +1,88 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.airavata.datalake.metadata.service;
+
+import "google/api/annotations.proto";
+import "common/Common.proto";
+import "user/User.proto";
+
+message GroupMetadataAPIRequest {
+ Group group = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+message GroupMembershipAPIRequest {
+ repeated GroupMembership memberships = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+message GroupMetadataAPIResponse {
+ bool status = 1;
+}
+
+
+message Group {
+ string tenant_id = 1;
+ string name = 2;
+ string description = 3;
+ map<string, string> properties = 4;
+ repeated Group child_groups = 5;
+ string parent_group_id = 6;
+ int64 created_at = 9;
+ int64 last_modified_at = 10;
+ repeated GroupMembership group_membership = 11;
+}
+
+message GroupMembership {
+ string user_id = 1;
+ User user = 2;
+ string group_id = 3;
+ string membership_type = 4;
+ map<string, string> properties = 5;
+ int64 created_at = 6;
+ int64 last_modified_at = 7;
+}
+
+
+service GroupMetadataService {
+
+ rpc createGroup (GroupMetadataAPIRequest) returns (GroupMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/group"
+ };
+ }
+
+ rpc getGroup (GroupMetadataAPIRequest) returns (Group) {
+ option (google.api.http) = {
+ get: "/v1.0/api/metadata/group"
+ };
+ }
+
+ rpc updateGroup (GroupMetadataAPIRequest) returns (GroupMetadataAPIResponse) {
+ option (google.api.http) = {
+ put: "/v1.0/api/metadata/group"
+ };
+ }
+
+ rpc deleteGroup (GroupMetadataAPIRequest) returns (GroupMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/group"
+ };
+ }
+
+ rpc createGroupMemberships (GroupMembershipAPIRequest) returns (GroupMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/user/group/memberships"
+ };
+ }
+
+ rpc deleteGroupMemberships (GroupMembershipAPIRequest) returns (GroupMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/user/group/memberships"
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/src/main/proto/resource/Resource.proto b/metadata-service/db-service/stub/src/main/proto/resource/Resource.proto
new file mode 100644
index 0000000..81f2e3a
--- /dev/null
+++ b/metadata-service/db-service/stub/src/main/proto/resource/Resource.proto
@@ -0,0 +1,97 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.airavata.datalake.metadata.service;
+
+import "google/api/annotations.proto";
+import "common/Common.proto";
+import "user/User.proto";
+import "group/Group.proto";
+
+
+message ResourceMetadataAPIRequest {
+ Resource resource = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+
+message ResourceMetadataSharingRequest {
+ repeated ResourceSharings sharings = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+message ResourceMetadataAPIResponse {
+ bool status = 1;
+}
+
+
+message Resource {
+ string tenant_id = 1;
+ string name = 2;
+ string description = 3;
+ map<string, string> properties = 4;
+ int64 created_at = 5;
+ int64 last_modified_at = 6;
+ string type = 7;
+ string full_text = 8;
+ string source = 9;
+ repeated Resource child_resources = 10;
+ string parent_resource_id = 11;
+ repeated ResourceSharings sharings = 12;
+}
+
+
+message ResourceSharings {
+ string shared_entity_id = 1;
+ string shared_entity_type = 2;
+ string sharing_type = 3;
+ map<string, string> properties = 4;
+ int64 created_at = 5;
+ int64 last_modified_at = 6;
+ string resource_id = 7;
+ repeated User users = 8;
+ repeated Group groups = 9;
+}
+
+
+service ResourceMetadataService {
+
+ rpc createResource (ResourceMetadataAPIRequest) returns (ResourceMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/resource"
+ };
+ }
+
+ rpc getResource (ResourceMetadataAPIRequest) returns (Resource) {
+ option (google.api.http) = {
+ get: "/v1.0/api/metadata/resource"
+ };
+ }
+
+ rpc updateResource (ResourceMetadataAPIRequest) returns (ResourceMetadataAPIResponse) {
+ option (google.api.http) = {
+ put: "/v1.0/api/metadata/resource"
+ };
+ }
+
+ rpc deleteResource (ResourceMetadataAPIRequest) returns (ResourceMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/resource"
+ };
+ }
+
+ rpc shareResource (ResourceMetadataSharingRequest) returns (ResourceMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/resource/sharings"
+ };
+ }
+
+ rpc deleteSharing (ResourceMetadataSharingRequest) returns (ResourceMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/resource/sharings"
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/src/main/proto/tenant/Tenant.proto b/metadata-service/db-service/stub/src/main/proto/tenant/Tenant.proto
new file mode 100644
index 0000000..d0063ea
--- /dev/null
+++ b/metadata-service/db-service/stub/src/main/proto/tenant/Tenant.proto
@@ -0,0 +1,67 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.airavata.datalake.metadata.service;
+
+import "google/api/annotations.proto";
+import "common/Common.proto";
+import "group/Group.proto";
+import "resource/Resource.proto";
+import "user/User.proto";
+
+
+message TenantMetadataAPIRequest {
+ Tenant tenant = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+message TenantMetadataAPIResponse {
+ bool status = 1;
+}
+
+
+message Tenant {
+ string tenant_id = 1;
+ string domain = 2;
+ string name = 3;
+ string requester_email = 4;
+ string scope = 5;
+ repeated string redirect_uris = 6;
+ map<string, string> properties = 7;
+ repeated Group groups = 8;
+ int64 created_at = 9;
+ int64 last_modified_at = 10;
+ repeated User users = 11;
+ repeated Resource resources = 12;
+
+}
+
+
+service TenantMetadataService {
+
+ rpc createTenant (TenantMetadataAPIRequest) returns (TenantMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/tenant"
+ };
+ }
+
+ rpc getTenant (TenantMetadataAPIRequest) returns (Tenant) {
+ option (google.api.http) = {
+ get: "/v1.0/api/metadata/tenant"
+ };
+ }
+
+ rpc updateTenant (TenantMetadataAPIRequest) returns (TenantMetadataAPIResponse) {
+ option (google.api.http) = {
+ put: "/v1.0/api/metadata/tenant"
+ };
+ }
+
+ rpc deleteTenant (TenantMetadataAPIRequest) returns (TenantMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/tenant"
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/src/main/proto/user/User.proto b/metadata-service/db-service/stub/src/main/proto/user/User.proto
new file mode 100644
index 0000000..d079770
--- /dev/null
+++ b/metadata-service/db-service/stub/src/main/proto/user/User.proto
@@ -0,0 +1,66 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.airavata.datalake.metadata.service;
+
+import "google/api/annotations.proto";
+import "common/Common.proto";
+
+message UserMetadataAPIRequest {
+ User user = 1;
+ MetadataServiceAuthToken auth_token = 2;
+ string source = 3;
+}
+
+
+
+
+
+message UserMetadataAPIResponse {
+ bool status = 1;
+}
+
+message User {
+ string tenant_id = 1;
+ string username = 2;
+ string first_name = 3;
+ string last_name = 4;
+ string email_address = 5;
+ string status = 6;
+ map<string, string> properties = 7;
+ int64 created_at = 8;
+ int64 last_modified_at = 9;
+
+}
+
+
+
+service UserMetadataService {
+
+ rpc createUser (UserMetadataAPIRequest) returns (UserMetadataAPIResponse) {
+ option (google.api.http) = {
+ post: "/v1.0/api/metadata/user"
+ };
+ }
+
+ rpc getUser (UserMetadataAPIRequest) returns (User) {
+ option (google.api.http) = {
+ get: "/v1.0/api/metadata/user"
+ };
+ }
+
+ rpc updateUser (UserMetadataAPIRequest) returns (UserMetadataAPIResponse) {
+ option (google.api.http) = {
+ put: "/v1.0/api/metadata/user"
+ };
+ }
+
+ rpc deleteUser (UserMetadataAPIRequest) returns (UserMetadataAPIResponse) {
+ option (google.api.http) = {
+ delete: "/v1.0/api/metadata/user"
+ };
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/metadata-service/db-service/stub/stub.iml b/metadata-service/db-service/stub/stub.iml
new file mode 100644
index 0000000..c833fd5
--- /dev/null
+++ b/metadata-service/db-service/stub/stub.iml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <webroots />
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ <root url="file://$MODULE_DIR$/target/generated-sources/protobuf/grpc-java" />
+ <root url="file://$MODULE_DIR$/target/generated-sources/protobuf/java" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/protobuf/grpc-java" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/protobuf/java" isTestSource="false" generated="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Bundled Protobuf Distribution" level="application" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-core:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-api:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
+ <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.86" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-bolt-driver:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j.driver:neo4j-java-driver:4.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/metadata-service/metadata-service.iml b/metadata-service/metadata-service.iml
index 5fa3710..00d19bb 100644
--- a/metadata-service/metadata-service.iml
+++ b/metadata-service/metadata-service.iml
@@ -10,5 +10,795 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/github/lognet/grpc-spring-boot-starter/3.5.1/grpc-spring-boot-starter-3.5.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-netty/1.25.0/grpc-netty-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-core/1.25.0/grpc-core-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-api/1.25.0/grpc-api-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-context/1.25.0/grpc-context-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/errorprone/error_prone_annotations/2.3.3/error_prone_annotations-2.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/guava/guava/28.1-android/guava-28.1-android.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/opencensus/opencensus-api/0.21.0/opencensus-api-0.21.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/opencensus/opencensus-contrib-grpc-metrics/0.21.0/opencensus-contrib-grpc-metrics-0.21.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-codec-http2/4.1.42.Final/netty-codec-http2-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-common/4.1.42.Final/netty-common-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-buffer/4.1.42.Final/netty-buffer-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-transport/4.1.42.Final/netty-transport-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-resolver/4.1.42.Final/netty-resolver-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-codec/4.1.42.Final/netty-codec-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-handler/4.1.42.Final/netty-handler-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-codec-http/4.1.42.Final/netty-codec-http-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-handler-proxy/4.1.42.Final/netty-handler-proxy-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-codec-socks/4.1.42.Final/netty-codec-socks-4.1.42.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-services/1.25.0/grpc-services-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-protobuf/1.25.0/grpc-protobuf-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/protobuf/protobuf-java/3.10.0/protobuf-java-3.10.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/api/grpc/proto-google-common-protos/1.12.0/proto-google-common-protos-1.12.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-protobuf-lite/1.25.0/grpc-protobuf-lite-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/grpc/grpc-stub/1.25.0/grpc-stub-1.25.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/google/protobuf/protobuf-java-util/3.10.0/protobuf-java-util-3.10.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/netty/netty-tcnative-boringssl-static/2.0.25.Final/netty-tcnative-boringssl-static-2.0.25.Final.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/neo4j/neo4j-ogm-bolt-driver/3.2.20/neo4j-ogm-bolt-driver-3.2.20.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/neo4j/neo4j-ogm-api/3.2.20/neo4j-ogm-api-3.2.20.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/core/jackson-databind/2.9.9/jackson-databind-2.9.9.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9/jackson-datatype-jdk8-2.9.9.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9/jackson-datatype-jsr310-2.9.9.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/neo4j/driver/neo4j-java-driver/4.0.2/neo4j-java-driver-4.0.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/neo4j/neo4j-ogm-core/3.2.20/neo4j-ogm-core-3.2.20.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/apache/commons/commons-lang3/3.8/commons-lang3-3.8.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/io/github/classgraph/classgraph/4.8.86/classgraph-4.8.86.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/net/sf/dozer/dozer/5.5.1/dozer-5.5.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/commons-beanutils/commons-beanutils/1.9.1/commons-beanutils-1.9.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-starter-web/2.4.2/spring-boot-starter-web-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-starter/2.4.2/spring-boot-starter-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot/2.4.2/spring-boot-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-core/5.3.3/spring-core-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-jcl/5.3.3/spring-jcl-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-context/5.3.3/spring-context-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-aop/5.3.3/spring-aop-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-beans/5.3.3/spring-beans-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-expression/5.3.3/spring-expression-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-autoconfigure/2.4.2/spring-boot-autoconfigure-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-starter-logging/2.4.2/spring-boot-starter-logging-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/yaml/snakeyaml/1.27/snakeyaml-1.27.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-starter-json/2.4.2/spring-boot-starter-json-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-web/5.3.3/spring-web-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.4/jackson-module-parameter-names-2.11.4.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/boot/spring-boot-starter-tomcat/2.4.2/spring-boot-starter-tomcat-2.4.2.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.41/tomcat-embed-websocket-9.0.41.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$USER_HOME$/.m12/org/springframework/spring-webmvc/5.3.3/spring-webmvc-5.3.3.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-core:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-api:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
+ <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.86" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j:neo4j-ogm-bolt-driver:3.2.20" level="project" />
+ <orderEntry type="library" name="Maven: org.neo4j.driver:neo4j-java-driver:4.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-netty:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-core:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-api:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-context:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.android:annotations:4.1.1.4" level="project" />
+ <orderEntry type="library" name="Maven: io.perfmark:perfmark-api:0.19.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.opencensus:opencensus-contrib-grpc-metrics:0.21.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-services:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:28.1-android" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+ <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+ <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.google.api.grpc:proto-google-common-protos:1.12.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-protobuf-lite:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: io.grpc:grpc-stub:1.25.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java-util:3.10.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-tcnative-boringssl-static:2.0.25.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.5" level="project" />
</component>
</module>
\ No newline at end of file
diff --git a/metadata-service/pom.xml b/metadata-service/pom.xml
index 7125b8a..e1199c8 100644
--- a/metadata-service/pom.xml
+++ b/metadata-service/pom.xml
@@ -11,120 +11,59 @@
<artifactId>metadata-service</artifactId>
<packaging>pom</packaging>
- <modules>
- <module>db-service</module>
- </modules>
+
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.neo4j</groupId>
+ <artifactId>neo4j-ogm-core</artifactId>
+ <version>3.2.20</version>
+ </dependency>
+ <dependency>
+ <groupId>org.neo4j</groupId>
+ <artifactId>neo4j-ogm-bolt-driver</artifactId>
+ <version>3.2.20</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ <version>${protobuf.java}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.github.lognet</groupId>
+ <artifactId>grpc-spring-boot-starter</artifactId>
+ <version>${grpc.spring.boot}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>2.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.dozer</groupId>
+ <artifactId>dozer</artifactId>
+ <version>${dozer}</version>
+ </dependency>
+ </dependencies>
+
<properties>
+ <protobuf.maven.plugin>0.5.1</protobuf.maven.plugin>
+ <os.maven.plugin>1.5.0.Final</os.maven.plugin>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
+ <protobuf.java>3.10.0</protobuf.java>
+ <grpc.spring.boot>3.5.1</grpc.spring.boot>
+ <spring.boot.data.jpa>2.2.1.RELEASE</spring.boot.data.jpa>
+ <dozer>5.5.1</dozer>
</properties>
- <dependencyManagement>
- <dependencies>
- <!-- neo4J servide dependencies-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.boot</groupId>-->
-<!-- <artifactId>spring-boot-starter-parent</artifactId>-->
-<!-- <version>${spring.boot.version}</version>-->
-<!-- <type>pom</type>-->
-<!-- <scope>import</scope>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.cloud</groupId>-->
-<!-- <artifactId>spring-cloud-dependencies</artifactId>-->
-<!-- <version>${spring.cloud.version}</version>-->
-<!-- <type>pom</type>-->
-<!-- <scope>import</scope>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>io.github.lognet</groupId>-->
-<!-- <artifactId>grpc-spring-boot-starter</artifactId>-->
-<!-- <version>${grpc.spring.boot.version}</version>-->
-<!-- <exclusions>-->
-<!-- <exclusion>-->
-<!-- <groupId>io.grpc</groupId>-->
-<!-- <artifactId>grpc-netty</artifactId>-->
-<!-- </exclusion>-->
-<!-- <exclusion>-->
-<!-- <groupId>org.springframework.boot</groupId>-->
-<!-- <artifactId>spring-boot-starter</artifactId>-->
-<!-- </exclusion>-->
-<!-- </exclusions>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>io.grpc</groupId>-->
-<!-- <artifactId>grpc-stub</artifactId>-->
-<!-- <version>${io.grpc.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>io.grpc</groupId>-->
-<!-- <artifactId>grpc-protobuf</artifactId>-->
-<!-- <version>${io.grpc.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>io.grpc</groupId>-->
-<!-- <artifactId>grpc-netty</artifactId>-->
-<!-- <version>${io.grpc.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>javax.annotation</groupId>-->
-<!-- <artifactId>javax.annotation-api</artifactId>-->
-<!-- <version>${javax.annotation.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.cloud</groupId>-->
-<!-- <artifactId>spring-cloud-starter-sleuth</artifactId>-->
-<!-- <version>${spring.cloud.slueth.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.cloud</groupId>-->
-<!-- <artifactId>spring-cloud-sleuth-zipkin</artifactId>-->
-<!-- <version>${spring.cloud.slueth.version}</version>-->
-<!-- </dependency>-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.cloud</groupId>-->
-<!-- <artifactId>spring-cloud-starter-vault-config</artifactId>-->
-<!-- <version>${spring.boot.version}</version>-->
-<!-- </dependency>-->
- <!-- <dependency>-->
- <!-- <groupId>org.springframework.data</groupId>-->
- <!-- <artifactId>spring-data-neo4j</artifactId>-->
- <!-- <version>${spring.data.neo4j.version}</version>-->
- <!-- </dependency>-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>2.4.2</version>
- </dependency>
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.data</groupId>-->
-<!-- <artifactId>spring-data-neo4j</artifactId>-->
-<!-- <version>5.2.0</version>-->
-<!-- </dependency>-->
-<!-- <!– https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-neo4j –>-->
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.boot</groupId>-->
-<!-- <artifactId>spring-boot-starter-data-neo4j</artifactId>-->
-<!-- <version>2.4.2</version>-->
-<!-- </dependency>-->
- <dependency>
- <groupId>org.neo4j</groupId>
- <artifactId>neo4j-ogm-core</artifactId>
- <version>3.2.20</version>
- </dependency>
- <dependency>
- <groupId>org.neo4j</groupId>
- <artifactId>neo4j-ogm-bolt-driver</artifactId>
- <version>3.2.20</version>
- </dependency>
-<!-- <dependency>-->
-<!-- <groupId>org.springframework.data</groupId>-->
-<!-- <artifactId>spring-data-commons</artifactId>-->
-<!-- <version>2.4.2</version>-->
-<!-- </dependency>-->
-
- </dependencies>
- </dependencyManagement>
</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c0bb353..f80038e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,6 +31,9 @@
<modules>
<module>data-orchestrator</module>
<module>metadata-service</module>
+ <module>metadata-service/db-service/server</module>
+ <module>metadata-service/db-service/stub</module>
+ <module>metadata-service/db-service/client</module>
</modules>
<parent>