<?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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.flink</groupId>
		<artifactId>flink-connector-opensearch-parent</artifactId>
		<version>2.0-SNAPSHOT</version>
	</parent>

	<artifactId>flink-connector-opensearch</artifactId>
	<name>Flink : Connectors : Opensearch</name>

	<packaging>jar</packaging>

	<!-- Allow users to pass custom connector versions -->
	<properties>
		<opensearch.version>1.3.0</opensearch.version>
	</properties>

	<dependencies>

		<!-- Core -->

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-connector-base</artifactId>
			<version>${flink.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-java</artifactId>
			<version>${flink.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- Table ecosystem -->

		<!-- Projects depending on this project won't depend on flink-table-*. -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-java-bridge</artifactId>
			<version>${flink.version}</version>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>

		<!-- Opensearch -->

		<dependency>
			<groupId>org.opensearch</groupId>
			<artifactId>opensearch</artifactId>
			<version>${opensearch.version}</version>
		</dependency>

		<dependency>
			<groupId>org.opensearch.client</groupId>
			<artifactId>opensearch-rest-high-level-client</artifactId>
			<version>${opensearch.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpcore-nio</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- We need to include httpcore-nio again in the correct version due to the exclusion above -->
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore-nio</artifactId>
			<version>4.4.12</version>
		</dependency>

		<!-- Tests -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils</artifactId>
			<version>${flink.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-runtime</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-java</artifactId>
			<version>${flink.version}</version>
			<scope>test</scope>
			<type>test-jar</type>
		</dependency>

		<!-- Opensearch table descriptor testing -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-common</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<!-- Opensearch table sink factory testing -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-json</artifactId>
			<version>${flink.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- Table API integration tests -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-test-utils</artifactId>
			<version>${flink.version}</version>
			<scope>test</scope>
		</dependency>

		<!--
			Including Log4j2 dependencies for tests is required for the
			embedded Opensearch nodes used in tests to run correctly.
		-->

		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.opensearch</groupId>
			<artifactId>opensearch-testcontainers</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- ArchUit test dependencies -->

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-architecture-tests-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
