<!--

    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.1.1</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>javax.xml.bind:jaxb-api</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>javax.xml.bind</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.xml.bind</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>
