<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~
  ~                         _ _        ____  ____
  ~               _____   _(_) |_ __ _|  _ \| __ )
  ~              / _ \ \ / / | __/ _` | | | |  _ \
  ~             |  __/\ V /| | || (_| | |_| | |_) |
  ~              \___| \_/ |_|\__\__,_|____/|____/
  ~
  ~   Copyright (c) 2023-2026
  ~
  ~   Licensed under the Business Source License, Version 1.1 (the "License");
  ~   you may not use this file except in compliance with the License.
  ~   You may obtain a copy of the License at
  ~
  ~   https://github.com/FgForrest/evitaDB/blob/master/LICENSE
  ~
  ~   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>
	<artifactId>evita_java_driver</artifactId>
	<packaging>jar</packaging>
	<name>evitaDB - Java driver (gRPC client side)</name>
	<description>Module contains gRPC Java driver (gRPC client) for evitaDB.</description>
	<parent>
		<groupId>io.evitadb</groupId>
		<artifactId>evita_root</artifactId>
		<version>2026.1.14</version>
		<relativePath>../../../pom.xml</relativePath>
	</parent>
	<dependencies>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>evita_api</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>evita_external_api_grpc_shared</artifactId>
			<version>${project.parent.version}</version>
		</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>
			<groupId>com.linecorp.armeria</groupId>
			<artifactId>armeria-grpc</artifactId>
			<version>${armeria.version}</version>
			<exclusions>
				<!-- Server-only gRPC features -->
				<exclusion>
					<groupId>io.grpc</groupId>
					<artifactId>grpc-services</artifactId>
				</exclusion>

				<!-- Not needed: Armeria provides its own Channel/ClientCall impl -->
				<exclusion>
					<groupId>io.grpc</groupId>
					<artifactId>grpc-core</artifactId>
				</exclusion>

				<!-- JSON gRPC serialization (only if you use binary PROTO format) -->
				<exclusion>
					<groupId>org.curioswitch.curiostack</groupId>
					<artifactId>protobuf-jackson</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.protobuf</groupId>
					<artifactId>protobuf-java-util</artifactId>
				</exclusion>

				<!-- Jackson data type modules (not referenced by client code) -->
				<exclusion>
					<groupId>com.fasterxml.jackson.datatype</groupId>
					<artifactId>jackson-datatype-jdk8</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.fasterxml.jackson.datatype</groupId>
					<artifactId>jackson-datatype-jsr310</artifactId>
				</exclusion>

				<!-- Brotli compression (not used by gRPC) -->
				<exclusion>
					<groupId>com.aayushatharva.brotli4j</groupId>
					<artifactId>*</artifactId>
				</exclusion>

				<!-- Shaded into core (on classpath but redundant) -->
				<exclusion>
					<groupId>org.bouncycastle</groupId>
					<artifactId>*</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.github.ben-manes.caffeine</groupId>
					<artifactId>caffeine</artifactId>
				</exclusion>
				<exclusion>
					<groupId>it.unimi.dsi</groupId>
					<artifactId>fastutil</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.jctools</groupId>
					<artifactId>jctools-core</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.reflections</groupId>
					<artifactId>reflections</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.spotify</groupId>
					<artifactId>completable-futures</artifactId>
				</exclusion>

				<!-- Annotation-only (not needed at runtime) -->
				<exclusion>
					<groupId>org.jspecify</groupId>
					<artifactId>jspecify</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.errorprone</groupId>
					<artifactId>error_prone_annotations</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.j2objc</groupId>
					<artifactId>j2objc-annotations</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.code.findbugs</groupId>
					<artifactId>jsr305</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>animal-sniffer-annotations</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.checkerframework</groupId>
					<artifactId>checker-qual</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Implementation-Title>${project.name}</Implementation-Title>
							<Implementation-Version>${project.parent.version}</Implementation-Version>
							<Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
