<?xml version="1.0" encoding="UTF-8"?>

<!--
 ~ Copyright (c) 2025, WSO2 LLC. (http://www.wso2.org) All Rights Reserved.
 ~
 ~ WSO2 LLC. 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>
    <groupId>org.wso2.orbit.pulsar</groupId>
    <artifactId>pulsar-client</artifactId>
    <version>4.0.4.wso2v2</version>
    <name>WSO2 Carbon Orbit - Pulsar</name>
    <description>
        This bundle will export packages from Pulsar client library.
    </description>
    <url>http://wso2.org</url>

    <repositories>
        <repository>
            <id>wso2-nexus</id>
            <name>WSO2 internal Repository</name>
            <url>https://maven.wso2.org/nexus/content/groups/wso2-public/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
        </repository>
        <repository>
            <id>confluent</id>
            <name>Confluent Repository</name>
            <url>https://packages.confluent.io/maven/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>wso2.releases</id>
            <name>WSO2 internal Repository</name>
            <url>https://maven.wso2.org/nexus/content/repositories/releases/</url>
        </repository>

        <snapshotRepository>
            <id>wso2.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>https://maven.wso2.org/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <dependencies>
        <dependency>
            <groupId>org.apache.pulsar</groupId>
            <artifactId>pulsar-client</artifactId>
            <version>${pulsar.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pulsar</groupId>
            <artifactId>pulsar-client-api</artifactId>
            <version>${pulsar.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pulsar</groupId>
            <artifactId>pulsar-client-admin-api</artifactId>
            <version>${pulsar.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.bookkeeper</groupId>
            <artifactId>bookkeeper-common-allocator</artifactId>
            <version>${bookkeeper.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-codec-dns</artifactId>
            <version>${netty.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-resolver-dns</artifactId>
            <version>${netty.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-transport-classes-epoll</artifactId>
            <version>${netty.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty.incubator</groupId>
            <artifactId>netty-incubator-transport-classes-io_uring</artifactId>
            <version>${netty.incubator.version}</version>
        </dependency>
        <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-api</artifactId>
            <version>${opentelemetry.version}</version>
        </dependency>
        <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-sdk</artifactId>
            <version>${opentelemetry.version}</version>
        </dependency>
        <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-sdk-metrics</artifactId>
            <version>${opentelemetry.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>${maven-shade-plugin.version}</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <shadedArtifactAttached>false</shadedArtifactAttached>
                            <outputFile>${project.build.directory}/${project.build.finalName}.jar</outputFile>
                            <artifactSet>
                                <includes>
                                    <include>org.apache.pulsar:pulsar-client</include>
                                    <include>org.apache.pulsar:pulsar-client-api</include>
                                    <include>org.apache.pulsar:pulsar-client-admin-api</include>
                                    <include>org.slf4j:slf4j-api</include>
                                    <include>com.fasterxml.jackson.core:jackson-annotations</include>
                                    <include>io.netty:netty-codec-dns</include>
                                    <include>io.netty:netty-resolver-dns</include>
                                    <include>io.netty:netty-transport-classes-epoll</include>
                                    <include>io.netty.incubator:netty-incubator-transport-classes-io_uring</include>
                                    <include>io.opentelemetry:opentelemetry-api</include>
                                    <include>io.opentelemetry:opentelemetry-context</include>
                                    <include>io.opentelemetry:opentelemetry-api-incubator</include>
                                    <include>io.opentelemetry:opentelemetry-sdk</include>
                                    <include>io.opentelemetry:opentelemetry-sdk-common</include>
                                    <include>io.opentelemetry:opentelemetry-sdk-trace</include>
                                    <include>io.opentelemetry:opentelemetry-sdk-logs</include>
                                    <include>io.opentelemetry:opentelemetry-sdk-metrics</include>
                                </includes>
                            </artifactSet>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                        <exclude>META-INF/versions/21/**</exclude>
                                        <exclude>META-INF/versions/22/**</exclude>
                                        <exclude>META-INF/versions/23/**</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <!-- Merge service files -->
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            </transformers>
                            <relocations>
                                <relocation>
                                    <pattern>io.netty</pattern>
                                    <shadedPattern>io.netty.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.bouncycastle</pattern>
                                    <shadedPattern>org.bouncycastle.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.slf4j</pattern>
                                    <shadedPattern>org.slf4j.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>com.fasterxml.jackson</pattern>
                                    <shadedPattern>com.fasterxml.jackson.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.apache.commons</pattern>
                                    <shadedPattern>org.apache.commons.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>io.opentelemetry</pattern>
                                    <shadedPattern>io.opentelemetry.wso2.shaded</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.apache.bookkeeper.common</pattern>
                                    <shadedPattern>org.apache.bookkeeper.common.wso2.shaded</shadedPattern>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
        </plugins>
    </build>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <pulsar.version>4.0.4</pulsar.version>
        <bookkeeper.version>4.16.6</bookkeeper.version>
        <netty.version>4.1.119.Final</netty.version>
        <netty.incubator.version>0.0.26.Final</netty.incubator.version>
        <opentelemetry.version>1.45.0</opentelemetry.version>
        <maven-shade-plugin.version>3.5.1</maven-shade-plugin.version>
    </properties>
</project>
