<?xml version="1.0"?>
<!--

    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.pulsar</groupId>
    <artifactId>pulsar</artifactId>
    <version>2.10.1</version>
    <relativePath>..</relativePath>
  </parent>

  <artifactId>pulsar-broker-shaded</artifactId>
  <packaging>jar</packaging>
  <name>Pulsar Shaded Broker</name>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>pulsar-broker</artifactId>
      <version>${project.parent.version}</version>
    </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>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>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>${shadePluginPhase}</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <minimizeJar>false</minimizeJar>

              <artifactSet>
                <includes>
                  <include>org.apache.pulsar:*</include>
                  <include>org.apache.bookkeeper*:*</include>
                  <include>commons-*:*</include>
                  <include>org.apache.commons:*</include>
                  <include>org.asynchttpclient:*</include>
                  <include>org.reactivestreams:reactive-streams</include>
                  <include>com.typesafe.netty:netty-reactive-streams</include>
                  <include>org.javassist:javassist</include>
                  <include>com.google.*:*</include>
                  <include>com.fasterxml.jackson.*:*</include>
                  <include>io.netty:*</include>
                  <include>org.apache.pulsar:pulsar-common</include>
                  <include>org.apache.bookkeeper:circe-checksum</include>
                  <include>com.yahoo.datasketches:sketches-core</include>

                  <include>javax.ws.rs:*</include>
                  <include>javax.websocket:*</include>
                  <include>org.glassfish.hk2*:*</include>
                  <include>org.eclipse.jetty*:*</include>
                  <include>net.java.dev.jna:*</include>
                  <include>com.carrotsearch:*</include>
                  <include>io.prometheus:*</include>
                  <include>io.perfmark:*</include>
                  <include>com.github.ben-manes.caffeine:*</include>
                  <include>org.glassfish.jersey.*:*</include>
                  <include>org.rocksdb:*</include>
                  <include>org.apache.bookkeeper:*</include>
                  <include>org.apache.zookeeper:*</include>
                  <include>jline:*</include>
                  <include>javax.servlet:*</include>

                  <include>com.beust:*</include>
                  <include>io.swagger:*</include>
                  <include>joda-time:*</include>
                  <include>org.yaml:snakeyaml</include>
                  <include>org.hdrhistogram:*</include>
                  <include>com.github.zafarkhaja:java-semver</include>
                  <include>org.apache.avro:avro</include>
                  <!-- Avro transitive dependencies-->
                  <include>com.thoughtworks.paranamer:paranamer</include>
                  <include>org.apache.commons:commons-compress</include>
                  <include>org.tukaani:xz</include>
                </includes>
              </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.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>
                </relocation>
                <relocation>
                  <pattern>com.fasterxml.jackson</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.fasterxml.jackson</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.netty</pattern>
                  <shadedPattern>org.apache.pulsar.shade.io.netty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.pulsar.common</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.pulsar.common</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.pulsar.policies</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.pulsar.policies</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.pulsar.checksum</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.pulsar.checksum</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yahoo.datasketches</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.yahoo.datasketches</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yahoo.sketches</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.yahoo.sketches</shadedPattern>
                </relocation>

                <relocation>
                  <pattern>org.apache.zookeeper</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.zookeeper</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.jute</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.jute</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.typesafe</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.typesafe</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.eclipse.jetty</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.websocket</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.websocket</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.glassfish</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.glassfish</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.bookkeeper</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.bookkeeper</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.rocksdb</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.rocksdb</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.sun.jna</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.sun.jna</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.carrotsearch</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.carrotsearch</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.servlet</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.servlet</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.github</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.github</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>jline</pattern>
                  <shadedPattern>org.apache.pulsar.shade.jline</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.sun</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.sun</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>jersey</pattern>
                  <shadedPattern>org.apache.pulsar.shade.jersey</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.ws</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.ws</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.inject</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javax.inject</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jvnet</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.jvnet</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.beust</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.beust</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.wordnik</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.worknik</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.prometheus</pattern>
                  <shadedPattern>org.apache.pulsar.shade.io.prometheus</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.swagger</pattern>
                  <shadedPattern>org.apache.pulsar.shade.io.swagger</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.joda</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.joda</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.yaml</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.yaml</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.HdrHistogram</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.HdrHistogram</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.ea</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.ea</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javassist</pattern>
                  <shadedPattern>org.apache.pulsar.shade.javassist</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.reactivestreams</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.reactivestreams</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.aopalliance</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.aopalliance</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.wordnik</pattern>
                  <shadedPattern>org.apache.pulsar.shade.com.worknik</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.avro</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.apache.avro</shadedPattern>
                </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.tukaani</pattern>
                  <shadedPattern>org.apache.pulsar.shade.org.tukaani</shadedPattern>
                </relocation>
              </relocations>
            </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>
    </plugins>
  </build>
</project>
