<!--

    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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.pulsar</groupId>
    <artifactId>pulsar</artifactId>
    <version>3.0.0</version>
    <relativePath>..</relativePath>
  </parent>

  <artifactId>pulsar-client-all</artifactId>
  <name>Pulsar Client All</name>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>pulsar-client-api</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>pulsar-client-original</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>pulsar-client-admin-original</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>pulsar-client-messagecrypto-bc</artifactId>
      <version>${project.parent.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>unpack</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>pulsar-client-original</artifactId>
                  <version>${project.version}</version>
                  <type>jar</type>
                  <overWrite>true</overWrite>
                  <includes>**/ProtobufSchema.class</includes>
                  <outputDirectory>${project.build.directory}/classes</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.asynchttpclient</groupId>
                  <artifactId>async-http-client</artifactId>
                  <version>${asynchttpclient.version}</version>
                  <type>jar</type>
                  <overWrite>true</overWrite>
                  <includes>org/asynchttpclient/config/ahc-default.properties</includes>
                  <outputDirectory>${project.build.directory}/classes</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>shade-ahc-properties</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <!-- shade the AsyncHttpClient ahc-default.properties files -->
                <replace token= "org.asynchttpclient."
                         value="org.apache.pulsar.shade.org.asynchttpclient."
                         file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <!-- Shade all the dependencies to avoid conflicts -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>${shadePluginPhase}</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <createSourcesJar>true</createSourcesJar>
              <shadeSourcesContent>true</shadeSourcesContent>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <minimizeJar>false</minimizeJar>

              <artifactSet>
                <includes>
                  <include>org.apache.pulsar:pulsar-client-original</include>
                  <include>org.apache.pulsar:pulsar-client-admin-original</include>
                  <include>org.apache.commons:commons-lang3</include>
                  <include>commons-codec:commons-codec</include>
                  <include>commons-collections:commons-collections</include>
                  <include>org.asynchttpclient:*</include>
                  <include>io.netty:netty-codec-http</include>
                  <include>io.netty:netty-transport-native-epoll</include>
                  <include>org.reactivestreams:reactive-streams</include>
                  <include>com.typesafe.netty:netty-reactive-streams</include>
                  <include>org.javassist:javassist</include>
                  <include>com.google.protobuf:protobuf-java</include>
                  <include>com.google.guava:*</include>
                  <include>org.checkerframework:*</include>
                  <include>com.google.code.findbugs:*</include>
                  <include>com.google.errorprone:*</include>
                  <include>com.google.j2objc:*</include>
                  <include>com.google.code.gson:gson</include>
                  <include>com.fasterxml.jackson.*:*</include>
                  <include>io.netty:netty</include>
                  <include>io.netty:netty-all</include>
                  <include>io.netty:netty-tcnative-boringssl-static</include>
                  <include>org.eclipse.jetty:*</include>
                  <include>com.yahoo.datasketches:*</include>
                  <include>commons-*:*</include>
                  <include>io.swagger:*</include>
                  <include>io.airlift:*</include>

                  <include>org.apache.pulsar:pulsar-common</include>
                  <include>org.apache.bookkeeper:*</include>
                  <include>com.yahoo.datasketches:sketches-core</include>
                  <include>org.glassfish.jersey*:*</include>
                  <include>javax.ws.rs:*</include>
                  <include>jakarta.annotation:*</include>
                  <include>org.glassfish.hk2*:*</include>
                  <include>io.grpc:*</include>
                  <include>io.perfmark:*</include>
                  <include>com.yahoo.datasketches:*</include>
                  <include>io.netty:*</include>
                  <include>io.netty.incubator:*</include>
                  <include>com.squareup.*:*</include>
                  <include>com.google.*:*</include>
                  <include>commons-*:*</include>
                  <include>org.eclipse.jetty:*</include>
                  <include>com.google.auth:*</include>
                  <include>org.jvnet.mimepull:*</include>
                  <include>io.opencensus:*</include>
                  <include>org.objenesis:*</include>
                  <include>org.yaml:snakeyaml</include>
                  <include>org.apache.avro:*</include>
                  <!-- Avro transitive dependencies-->
                  <include>com.thoughtworks.paranamer:paranamer</include>
                  <include>org.apache.commons:commons-compress</include>
                  <include>org.tukaani:xz</include>
                  <!-- Issue #6834, Since Netty ByteBuf shaded, we need also shade this module -->
                  <include>org.apache.pulsar:pulsar-client-messagecrypto-bc</include>
                </includes>
                <excludes>
                  <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>
                </excludes>
              </artifactSet>
              <filters>
                <filter>
                  <artifact>org.apache.pulsar:pulsar-client-original</artifact>
                  <includes>
                    <include>**</include>
                  </includes>
                  <excludes>
                    <!-- bouncycastle jars could not be shaded, or the signatures will be wrong-->
                    <exclude>org/bouncycastle/**</exclude>
                  </excludes>
                </filter>
              </filters>
              <relocations>
                <relocation>
                  <pattern>org.asynchttpclient</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.asynchttpclient</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.bookkeeper</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.bookkeeper</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.commons</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.commons</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.google</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.google</shadedPattern>
                  <excludes>
                    <exclude>com.google.protobuf.*</exclude>
                  </excludes>
                </relocation>
                <relocation>
                  <pattern>com.fasterxml.jackson</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.fasterxml.jackson</shadedPattern>
                  <excludes>
                    <exclude>com.fasterxml.jackson.annotation.*</exclude>
                  </excludes>
                </relocation>
                <relocation>
                  <pattern>io.netty</pattern>
                  <shadedPattern>org.apache.pulsar.shade.io.netty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.pulsar.policies</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.pulsar.policies</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yahoo.datasketches</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.yahoo.datasketches</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yahoo</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.yahoo</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.eclipse.jetty</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.eclipse</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.reactivestreams</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.reactivestreams</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.typesafe</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.typesafe</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.ws</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.ws</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.annotation</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.annotation</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>jersey</pattern>
                  <shadedPattern>org.apache.pulsar.shade.jersey</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jvnet</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.jvnet</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.aopalliance</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.aopalliance</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javassist</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javassist</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.inject</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.inject</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.glassfish</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.glassfish</shadedPattern>
                </relocation>
                <relocation>
                    <pattern>io.grpc</pattern>
                    <shadedPattern>org.apache.pulsar.shade.io.grpc</shadedPattern>
                </relocation>
                <relocation>
                    <pattern>okio</pattern>
                    <shadedPattern>org.apache.pulsar.shade.okio</shadedPattern>
                </relocation>
                <relocation>
                    <pattern>com.squareup</pattern>
                    <shadedPattern>org.apache.pulsar.shade.com.squareup</shadedPattern>
                </relocation>
                <relocation>
                    <pattern>io.opencensus</pattern>
                    <shadedPattern>org.apache.pulsar.shade.io.opencensus</shadedPattern>
                </relocation>
                <relocation>
                    <pattern>org.eclipse.jetty</pattern>
                    <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.objenesis</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.objenesis</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.yaml</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.yaml</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.avro</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.avro</shadedPattern>
                  <excludes>
                    <exclude>org.apache.avro.reflect.AvroAlias</exclude>
                    <exclude>org.apache.avro.reflect.AvroDefault</exclude>
                    <exclude>org.apache.avro.reflect.AvroEncode</exclude>
                    <exclude>org.apache.avro.reflect.AvroIgnore</exclude>
                    <exclude>org.apache.avro.reflect.AvroMeta</exclude>
                    <exclude>org.apache.avro.reflect.AvroName</exclude>
                    <exclude>org.apache.avro.reflect.AvroSchema</exclude>
                    <exclude>org.apache.avro.reflect.Nullable</exclude>
                    <exclude>org.apache.avro.reflect.Stringable</exclude>
                    <exclude>org.apache.avro.reflect.Union</exclude>
                  </excludes>
                </relocation>
                <!--Avro transitive dependencies-->
                <relocation>
                  <pattern>org.codehaus.jackson</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.codehaus.jackson</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.thoughtworks.paranamer</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.thoughtworks.paranamer</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.commons</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.commons</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.airlift</pattern>
                  <shadedPattern>org.apache.pulsar.shade.io.airlift</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.checkerframework</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.checkerframework</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.annotation</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.annotation</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.tukaani</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.tukaani</shadedPattern>
                </relocation>
              </relocations>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <!-- This plugin is used to run a script after the package phase in order to rename
            libnetty_transport_native_epoll_x86_64.so from Netty into
            liborg_apache_pulsar_shade_netty_transport_native_epoll_x86_64.so
            to reflect the shade that is being applied.
         -->
        <artifactId>exec-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <executions>
          <execution>
            <id>rename-epoll-library</id>
            <phase>package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>${project.parent.basedir}/src/${rename.netty.native.libs}</executable>
              <arguments>
                <argument>${project.artifactId}</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>${maven-enforcer-plugin.version}</version>
        <executions>
          <execution>
            <id>enforce-bytecode-version</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${pulsar.client.compiler.release}</maxJdkVersion>
                  <ignoredScopes>
                    <ignoreScope>test</ignoreScope>
                  </ignoredScopes>
                </enforceBytecodeVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>${extra-enforcer-rules.version}</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>
