<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-elasticsearch-bundle</artifactId>
        <version>1.16.1</version>
    </parent>

    <artifactId>nifi-elasticsearch-client-service</artifactId>
    <packaging>jar</packaging>

    <properties>
        <!-- use with integration-tests only -->
        <es.int.version>5.6.16</es.int.version>
        <alexcojocaru.plugin.version>6.19</alexcojocaru.plugin.version>
        <es.int.script.name>setup-5.script</es.int.script.name>
        <es.int.type.name>faketype</es.int.type.name>
        <es.int.path.conf>src/test/resources/conf-5/</es.int.path.conf>
        <es.int.clusterName>testCluster</es.int.clusterName>
        <es.int.transportPort>9500</es.int.transportPort>
        <es.int.httpPort>9400</es.int.httpPort>
        <es.int.timeout>90</es.int.timeout>
        <es.int.logLevel>ERROR</es.int.logLevel>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-lookup-service-api</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-api</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-utils</artifactId>
            <version>1.16.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-distributed-cache-client-service-api</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-record</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-ssl-context-service-api</artifactId>
            <version>1.16.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-proxy-configuration-api</artifactId>
            <version>1.16.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-elasticsearch-client-service-api</artifactId>
            <version>1.16.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-avro-record-utils</artifactId>
            <version>1.16.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-schema-registry-service-api</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-record-path</artifactId>
            <version>1.16.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <dependency>
            <groupId>com.github.stephenc.findbugs</groupId>
            <artifactId>findbugs-annotations</artifactId>
            <version>1.3.9-1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <!-- stopped at 7.13.4 as it is the last version prior to Elastic forcing the client to check it is connecting
             to an Elastic-provided Elasticsearch instead of an instance provided by someone else (e.g. AWS OpenSearch)
             see: https://opensearch.org/blog/community/2021/08/community-clients/ for more info.

             Note: the low-level elasticsearch-rest-client remains licensed with Apache 2.0
             (https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_license.html) even after the move
             of the main Elasticsearch product and elasticsearch-rest-high-level-client to Elastic 2.0/SSPL 1.0 in v7.11.0+ -->
            <version>7.13.4</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>com.vividsolutions</groupId>
                    <artifactId>jts</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- test dependencies -->
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-security-utils</artifactId>
            <version>1.16.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-mock</artifactId>
            <version>1.16.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-ssl-context-service</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact</artifactId>
            <version>3.6.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-json</artifactId>
            <version>${nifi.groovy.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>integration-tests</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <!-- use 3.0.0-M3 due to a classpath/class loader issue in -M5, expected to be fixed in M6+ -->
                            <version>3.0.0-M3</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

        <profile>
            <!-- use with elasticsearch-oss only (-default can be used if x-pack-ml permissions fixed) -->
            <id>elasticsearch-6</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <es.int.version>6.8.23</es.int.version>
                <es.int.type.name>_doc</es.int.type.name>
                <es.int.script.name>setup-6.script</es.int.script.name>
                <es.int.path.conf />
            </properties>
        </profile>
        <profile>
            <!-- use with elasticsearch-oss or elasticsearch-default -->
            <id>elasticsearch-7</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <es.int.version>7.10.2</es.int.version>
                <es.int.script.name>setup-7.script</es.int.script.name>
                <es.int.type.name />
                <es.int.path.conf />
            </properties>
        </profile>
        <profile>
            <!-- use with elasticsearch-default -->
            <id>elasticsearch-7-no-oss</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <es.int.version>7.17.1</es.int.version>
                <es.int.script.name>setup-7.script</es.int.script.name>
                <es.int.type.name />
                <es.int.path.conf />
            </properties>
        </profile>
        <profile>
            <!-- use with elasticsearch-default -->
            <id>elasticsearch-8</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <es.int.version>8.0.1</es.int.version>
                <!-- elasticsearch-maven-plugin version 6.20+ required for Elasticsearch 8.x+ -->
                <alexcojocaru.plugin.version>6.22</alexcojocaru.plugin.version>
                <es.int.script.name>setup-8.script</es.int.script.name>
                <es.int.type.name />
                <es.int.path.conf />
            </properties>
        </profile>

        <profile>
            <!-- OSS Elasticsearch (no XPack features); required for ES 5.x or < 6.3 and option for 7.x up to 7.10.2 -->
            <id>elasticsearch-oss</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <systemPropertyVariables>
                                <type_name>${es.int.type.name}</type_name>
                                <es_version>${es.int.version}</es_version>
                                <es_flavour>oss</es_flavour>
                            </systemPropertyVariables>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>com.github.alexcojocaru</groupId>
                        <artifactId>elasticsearch-maven-plugin</artifactId>
                        <version>${alexcojocaru.plugin.version}</version>
                        <configuration>
                            <clusterName>${es.int.clusterName}</clusterName>
                            <transportPort>${es.int.transportPort}</transportPort>
                            <httpPort>${es.int.httpPort}</httpPort>
                            <version>${es.int.version}</version>
                            <timeout>${es.int.timeout}</timeout>
                            <logLevel>${es.int.logLevel}</logLevel>
			                <pathInitScript>${project.basedir}/src/test/resources/${es.int.script.name}</pathInitScript>
                            <keepExistingData>false</keepExistingData>
                            <pathConf>${es.int.path.conf}</pathConf>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start-elasticsearch</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>runforked</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop-elasticsearch</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- Elasticsearch (default) with XPack (only for ES 6.3+ & 7.x although there are XPack permission problems in 6.x startup) -->
            <id>elasticsearch-default</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <systemPropertyVariables>
                                <type_name>${es.int.type.name}</type_name>
                                <es_version>${es.int.version}</es_version>
                                <es_flavour>default</es_flavour>
                            </systemPropertyVariables>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>com.github.alexcojocaru</groupId>
                        <artifactId>elasticsearch-maven-plugin</artifactId>
                        <version>${alexcojocaru.plugin.version}</version>
                        <configuration>
                            <flavour>default</flavour>
                            <clusterName>${es.int.clusterName}</clusterName>
                            <transportPort>${es.int.transportPort}</transportPort>
                            <httpPort>${es.int.httpPort}</httpPort>
                            <version>${es.int.version}</version>
                            <timeout>${es.int.timeout}</timeout>
                            <logLevel>${es.int.logLevel}</logLevel>
			                <pathInitScript>${project.basedir}/src/test/resources/${es.int.script.name}</pathInitScript>
                            <keepExistingData>false</keepExistingData>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start-elasticsearch</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>runforked</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop-elasticsearch</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

  <scm>
    <tag>nifi-1.16.1-RC1</tag>
  </scm>
</project>
