<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed 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. See accompanying LICENSE file.
-->
<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.ozone</groupId>
    <artifactId>ozone</artifactId>
    <version>1.3.0-SNAPSHOT</version>
  </parent>
  <artifactId>ozone-interface-client</artifactId>
  <version>1.3.0-SNAPSHOT</version>
  <description>Apache Ozone Client interface</description>
  <name>Apache Ozone Client Interface</name>
  <packaging>jar</packaging>

  <properties>
    <maven.test.skip>true</maven.test.skip> <!-- no tests in this module so far -->
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.ozone</groupId>
      <artifactId>hdds-interface-client</artifactId>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-protobuf</artifactId>
      <version>${io.grpc.version}</version>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-stub</artifactId>
      <version>${io.grpc.version}</version>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-codec-http2</artifactId>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-handler-proxy</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>com.salesforce.servicelibs</groupId>
        <artifactId>proto-backwards-compatibility</artifactId>
      </plugin>
      <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>${protobuf-maven-plugin.version}</version>
        <extensions>true</extensions>
        <executions>
          <execution>
            <id>compile-protoc-OmGrpc</id>
            <goals>
              <goal>compile</goal>
              <goal>test-compile</goal>
              <goal>compile-custom</goal>
              <goal>test-compile-custom</goal>
            </goals>
            <configuration>
              <protocArtifact>
                com.google.protobuf:protoc:${proto2.hadooprpc.protobuf.version}:exe:${os.detected.classifier}
              </protocArtifact>
              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
              <outputDirectory>target/generated-sources/protobuf/java</outputDirectory>
              <clearOutputDirectory>false</clearOutputDirectory>
              <pluginId>grpc-java</pluginId>
              <pluginArtifact>
                io.grpc:protoc-gen-grpc-java:${io.grpc.version}:exe:${os.detected.classifier}
              </pluginArtifact>
            </configuration>
          </execution>
          <execution>
            <id>compile-protoc3</id>
            <goals>
              <goal>compile</goal>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <protoSourceRoot>${basedir}/src/main/proto/</protoSourceRoot>
              <protocArtifact>
                com.google.protobuf:protoc:${proto3.hadooprpc.protobuf.version}:exe:${os.detected.classifier}
              </protocArtifact>
              <outputDirectory>target/generated-sources/protobuf/java/proto3</outputDirectory>
              <clearOutputDirectory>false</clearOutputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <configuration>
              <tasks>
                <replace token="com.google.protobuf"
                         value="org.apache.hadoop.thirdparty.protobuf"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto">
                </replace>
                <replace token="com.google.protobuf"
                         value="org.apache.hadoop.thirdparty.protobuf"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/security/proto">
                </replace>
                <replace token="org.apache.hadoop.ozone.protocol.proto"
                         value="org.apache.hadoop.ozone.protocol.proto3"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto">
                </replace>
                <replace token="org.apache.hadoop.ozone.security.proto"
                         value="org.apache.hadoop.ozone.security.proto3"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/security/proto">
                </replace>
                <replace token="org.apache.hadoop.hdds.protocol.proto"
                         value="org.apache.hadoop.hdds.protocol.proto3"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto">
                </replace>
                <replace token="org.apache.hadoop.ozone.security.proto"
                         value="org.apache.hadoop.ozone.security.proto3"
                         dir="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto">
                </replace>
                <move file="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto"
                      tofile="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/protocol/proto3"/>
                <move file="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/security/proto"
                      tofile="target/generated-sources/protobuf/java/proto3/org/apache/hadoop/ozone/security/proto3"/>
                <move file="target/generated-sources/protobuf/java/proto3"
                      tofile="target/generated-sources/protobuf/java/"/>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <excludeFilterFile>${basedir}/dev-support/findbugsExcludeFile.xml</excludeFilterFile>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
