This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git
commit 96785f9fe0b4db9841a953c2e34590106b7e7156 Author: Marcus Christie <[email protected]> AuthorDate: Mon Jan 23 15:30:03 2023 -0500 Initial commit, createDataProduct implemented --- .gitignore | 3 + data-catalog-api/client/pom.xml | 29 +++++++ .../api/client/DataCatalogAPIClient.java | 49 ++++++++++++ data-catalog-api/pom.xml | 39 +++++++++ data-catalog-api/server/pom.xml | 68 ++++++++++++++++ .../api/DataCatalogApiServiceApplication.java | 13 +++ .../datacatalog/api/model/DataProductEntity.java | 92 ++++++++++++++++++++++ .../api/repository/DataProductRepository.java | 10 +++ .../api/service/DataCatalogAPIService.java | 53 +++++++++++++ .../src/main/resources/application.properties | 5 ++ .../server/src/main/resources/logback.xml | 54 +++++++++++++ .../DataCatalogApiServerApplicationTests.java | 13 +++ data-catalog-api/stubs/pom.xml | 87 ++++++++++++++++++++ .../stubs/src/main/proto/DataCatalogAPI.proto | 39 +++++++++ pom.xml | 54 +++++++++++++ 15 files changed, 608 insertions(+) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79edcba --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +target +.vscode +logs diff --git a/data-catalog-api/client/pom.xml b/data-catalog-api/client/pom.xml new file mode 100644 index 0000000..431b57a --- /dev/null +++ b/data-catalog-api/client/pom.xml @@ -0,0 +1,29 @@ +<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.airavata</groupId> + <artifactId>data-catalog-api</artifactId> + <version>0.1-SNAPSHOT</version> + </parent> + + <artifactId>data-catalog-api-client</artifactId> + + + <dependencies> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>data-catalog-api-stubs</artifactId> + <version>0.1-SNAPSHOT</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + + </dependencies> + +</project> diff --git a/data-catalog-api/client/src/main/java/org/apache/airavata/datacatalog/api/client/DataCatalogAPIClient.java b/data-catalog-api/client/src/main/java/org/apache/airavata/datacatalog/api/client/DataCatalogAPIClient.java new file mode 100644 index 0000000..5ba7ebc --- /dev/null +++ b/data-catalog-api/client/src/main/java/org/apache/airavata/datacatalog/api/client/DataCatalogAPIClient.java @@ -0,0 +1,49 @@ +package org.apache.airavata.datacatalog.api.client; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.grpc.Channel; +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; + +import java.text.MessageFormat; +import java.util.concurrent.TimeUnit; + +import org.apache.airavata.datacatalog.api.DataCatalogAPIServiceGrpc; +import org.apache.airavata.datacatalog.api.DataProduct; +import org.apache.airavata.datacatalog.api.DataProductCreateRequest; +import org.apache.airavata.datacatalog.api.DataProductCreateResponse; +import org.apache.airavata.datacatalog.api.DataCatalogAPIServiceGrpc.DataCatalogAPIServiceBlockingStub;; + +public class DataCatalogAPIClient { + + private static final Logger logger = LoggerFactory.getLogger(DataCatalogAPIClient.class); + + private final DataCatalogAPIServiceBlockingStub blockingStub; + + public DataCatalogAPIClient(Channel channel) { + blockingStub = DataCatalogAPIServiceGrpc.newBlockingStub(channel); + } + + public DataProduct createDataProduct(DataProduct dataProduct) { + DataProductCreateRequest request = DataProductCreateRequest.newBuilder().setDataProduct(dataProduct).build(); + DataProductCreateResponse response = blockingStub.createDataProduct(request); + return response.getDataProduct(); + } + + public static void main(String[] args) throws InterruptedException { + String target = "localhost:6565"; + + ManagedChannel channel = ManagedChannelBuilder.forTarget(target).usePlaintext().build(); + try { + DataCatalogAPIClient client = new DataCatalogAPIClient(channel); + DataProduct dataProduct = DataProduct.newBuilder().setName("testing").build(); + DataProduct result = client.createDataProduct(dataProduct); + System.out.println(MessageFormat.format("Created data product with id [{0}]", result.getDataProductId())); + + }finally { + channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); + } + } +} diff --git a/data-catalog-api/pom.xml b/data-catalog-api/pom.xml new file mode 100644 index 0000000..5d1da44 --- /dev/null +++ b/data-catalog-api/pom.xml @@ -0,0 +1,39 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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/maven-v4_0_0.xsd"> + + <parent> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-data-catalog</artifactId> + <version>0.1-SNAPSHOT</version> + </parent> + + <artifactId>data-catalog-api</artifactId> + <modelVersion>4.0.0</modelVersion> + + <packaging>pom</packaging> + + <modules> + <module>server</module> + <module>stubs</module> + <module>client</module> + </modules> +</project> diff --git a/data-catalog-api/server/pom.xml b/data-catalog-api/server/pom.xml new file mode 100644 index 0000000..b3c9cf1 --- /dev/null +++ b/data-catalog-api/server/pom.xml @@ -0,0 +1,68 @@ +<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.airavata</groupId> + <artifactId>data-catalog-api</artifactId> + <version>0.1-SNAPSHOT</version> + </parent> + + <artifactId>data-catalog-api-server</artifactId> + + <dependencyManagement> + <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> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </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-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>data-catalog-api-stubs</artifactId> + <version>0.1-SNAPSHOT</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <version>${spring.boot.version}</version> + </plugin> + </plugins> + </build> + +</project> diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java new file mode 100644 index 0000000..5b3fa8e --- /dev/null +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java @@ -0,0 +1,13 @@ +package org.apache.airavata.datacatalog.api; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DataCatalogApiServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(DataCatalogApiServiceApplication.class, args); + } + +} diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/model/DataProductEntity.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/model/DataProductEntity.java new file mode 100644 index 0000000..63af7e8 --- /dev/null +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/model/DataProductEntity.java @@ -0,0 +1,92 @@ +package org.apache.airavata.datacatalog.api.model; + +import jakarta.persistence.Basic; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + +@Entity +@Table(name="data_product") +public class DataProductEntity { + + @Id + @SequenceGenerator(name="data_product_data_product_id_seq", sequenceName = "data_product_data_product_id_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_product_data_product_id_seq") + @Column(name="data_product_id") + private Long dataProductId; + + @ManyToOne(optional = true) + @JoinColumn(name="parent_data_product_id", referencedColumnName = "data_product_id", nullable = true) + private DataProductEntity parentDataProductEntity; + + @Basic + @Column(name="external_id", nullable = false) + private String externalId; + + @Basic + @Column(name="name", nullable = false) + private String name; + + public Long getDataProductId() { + return dataProductId; + } + + public void setDataProductId(Long dataProductId) { + this.dataProductId = dataProductId; + } + + public DataProductEntity getParentDataProductEntity() { + return parentDataProductEntity; + } + + public void setParentDataProductEntity(DataProductEntity parentDataProductEntity) { + this.parentDataProductEntity = parentDataProductEntity; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((dataProductId == null) ? 0 : dataProductId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + DataProductEntity other = (DataProductEntity) obj; + if (dataProductId == null) { + if (other.dataProductId != null) + return false; + } else if (!dataProductId.equals(other.dataProductId)) + return false; + return true; + } +} diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java new file mode 100644 index 0000000..770eb8f --- /dev/null +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java @@ -0,0 +1,10 @@ +package org.apache.airavata.datacatalog.api.repository; + +import org.apache.airavata.datacatalog.api.model.DataProductEntity; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface DataProductRepository extends JpaRepository<DataProductEntity, Long> { + + DataProductEntity findByExternalId(String parentDataProductId); + +} diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java new file mode 100644 index 0000000..d4e9589 --- /dev/null +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java @@ -0,0 +1,53 @@ +package org.apache.airavata.datacatalog.api.service; + +import java.util.UUID; + +import org.apache.airavata.datacatalog.api.DataCatalogAPIServiceGrpc; +import org.apache.airavata.datacatalog.api.DataProduct; +import org.apache.airavata.datacatalog.api.DataProductCreateRequest; +import org.apache.airavata.datacatalog.api.DataProductCreateResponse; +import org.apache.airavata.datacatalog.api.model.DataProductEntity; +import org.apache.airavata.datacatalog.api.repository.DataProductRepository; +import org.lognet.springboot.grpc.GRpcService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import io.grpc.stub.StreamObserver; + +@GRpcService +public class DataCatalogAPIService extends DataCatalogAPIServiceGrpc.DataCatalogAPIServiceImplBase { + + private static final Logger logger = LoggerFactory.getLogger(DataCatalogAPIService.class); + + @Autowired + DataProductRepository dataProductRepository; + + @Override + public void createDataProduct(DataProductCreateRequest request, + StreamObserver<DataProductCreateResponse> responseObserver) { + + logger.info("Creating data product {}", request.getDataProduct()); + DataProductEntity dataProductEntity = new DataProductEntity(); + dataProductEntity.setExternalId(UUID.randomUUID().toString()); + dataProductEntity.setName(request.getDataProduct().getName()); + if (request.getDataProduct().hasParentDataProductId()) { + // TODO: handle parent data product not found + DataProductEntity parentDataProductEntity = dataProductRepository + .findByExternalId(request.getDataProduct().getParentDataProductId()); + dataProductEntity.setParentDataProductEntity(parentDataProductEntity); + } + DataProductEntity savedDataProductEntity = dataProductRepository.save(dataProductEntity); + + DataProductCreateResponse.Builder responseBuilder = DataProductCreateResponse.newBuilder(); + responseBuilder.getDataProductBuilder() + .setDataProductId(savedDataProductEntity.getExternalId()) + .setName(savedDataProductEntity.getName()).build(); + if (savedDataProductEntity.getParentDataProductEntity() != null) { + responseBuilder.getDataProductBuilder() + .setParentDataProductId(savedDataProductEntity.getParentDataProductEntity().getExternalId()); + } + responseObserver.onNext(responseBuilder.build()); + responseObserver.onCompleted(); + } +} diff --git a/data-catalog-api/server/src/main/resources/application.properties b/data-catalog-api/server/src/main/resources/application.properties new file mode 100644 index 0000000..2064c00 --- /dev/null +++ b/data-catalog-api/server/src/main/resources/application.properties @@ -0,0 +1,5 @@ +spring.datasource.url=jdbc:postgresql://localhost:5432/data_catalog +spring.datasource.username=postgres +spring.datasource.password=example +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true diff --git a/data-catalog-api/server/src/main/resources/logback.xml b/data-catalog-api/server/src/main/resources/logback.xml new file mode 100644 index 0000000..5cd56ea --- /dev/null +++ b/data-catalog-api/server/src/main/resources/logback.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<configuration> + + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d [%t] %-5p %c{30} %m [%X]%n</pattern> + </encoder> + </appender> + + <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <File>../logs/airavata.log</File> + <Append>true</Append> + <encoder> + <pattern>%d [%t] %-5p %c{30} %m [%X]%n</pattern> + </encoder> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>../logs/airavata.log.%d{yyyy-MM-dd}</fileNamePattern> + <maxHistory>30</maxHistory> + <totalSizeCap>1GB</totalSizeCap> + </rollingPolicy> + </appender> + + <logger name="ch.qos.logback" level="WARN"/> + <logger name="org.apache.helix" level="WARN"/> + <logger name="org.apache.zookeeper" level="ERROR"/> + <logger name="org.apache.airavata" level="INFO"/> + <logger name="org.hibernate" level="INFO"/> + <logger name="net.schmizz.sshj" level="WARN"/> + <root level="INFO"> + <appender-ref ref="CONSOLE"/> + <appender-ref ref="LOGFILE"/> + </root> +</configuration> diff --git a/data-catalog-api/server/src/test/java/org/apache/airavata/datacatalogapiserver/DataCatalogApiServerApplicationTests.java b/data-catalog-api/server/src/test/java/org/apache/airavata/datacatalogapiserver/DataCatalogApiServerApplicationTests.java new file mode 100644 index 0000000..f7ed907 --- /dev/null +++ b/data-catalog-api/server/src/test/java/org/apache/airavata/datacatalogapiserver/DataCatalogApiServerApplicationTests.java @@ -0,0 +1,13 @@ +package org.apache.airavata.datacatalogapiserver; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DataCatalogApiServerApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/data-catalog-api/stubs/pom.xml b/data-catalog-api/stubs/pom.xml new file mode 100644 index 0000000..18f5fe6 --- /dev/null +++ b/data-catalog-api/stubs/pom.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<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>data-catalog-api</artifactId> + <groupId>org.apache.airavata</groupId> + <version>0.1-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>data-catalog-api-stubs</artifactId> + + <dependencies> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-netty-shaded</artifactId> + <version>${grpc.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-protobuf</artifactId> + <version>${grpc.version}</version> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-stub</artifactId> + <version>${grpc.version}</version> + </dependency> + <dependency> <!-- necessary for Java 9+ --> + <groupId>org.apache.tomcat</groupId> + <artifactId>annotations-api</artifactId> + <version>${tomcat.annotations-api.version}</version> + <scope>provided</scope> + </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:${protobuf.protoc.version}:exe:${os.detected.classifier}</protocArtifact> + <pluginId>grpc-java</pluginId> + <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier}</pluginArtifact> + </configuration> + <executions> + <execution> + <goals> + <goal>compile</goal> + <goal>compile-custom</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto b/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto new file mode 100644 index 0000000..0a2a083 --- /dev/null +++ b/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto @@ -0,0 +1,39 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.apache.airavata.datacatalog.api"; + + +message DataProduct { + string data_product_id = 1; + optional string parent_data_product_id = 2; + string name = 3; +} + +message DataProductCreateRequest { + DataProduct data_product = 1; +} +message DataProductCreateResponse { + DataProduct data_product = 1; +} + +service DataCatalogAPIService { + rpc createDataProduct(DataProductCreateRequest) returns (DataProductCreateResponse){} +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..2fd997b --- /dev/null +++ b/pom.xml @@ -0,0 +1,54 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-data-catalog</artifactId> + <packaging>pom</packaging> + <version>0.1-SNAPSHOT</version> + <name>airavata-data-catalog</name> + <url>http://airavata.apache.org</url> + + <modules> + <module>data-catalog-api</module> + </modules> + + <properties> + <java.version>17</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <spring.boot.version>3.0.1</spring.boot.version> + <grpc.spring.boot>5.0.0</grpc.spring.boot> + <slf4j.version>2.0.6</slf4j.version> + <os.maven.plugin>1.6.2</os.maven.plugin> + <protobuf.maven.plugin>0.6.1</protobuf.maven.plugin> + <protobuf.protoc.version>3.21.7</protobuf.protoc.version> + <grpc.version>1.52.1</grpc.version> + <protoc-gen-grpc-java.version>${grpc.version}</protoc-gen-grpc-java.version> + <tomcat.annotations-api.version>6.0.53</tomcat.annotations-api.version> + </properties> + + <dependencies> + </dependencies> +</project>
